我对机器学习很陌生,在我的第一个项目中偶然发现了很多我真正想解决的问题。
我将逻辑回归与 R 的glmnet
包和 alpha = 0 用于岭回归。
实际上我使用的是岭回归,因为套索删除了我所有的变量并给出了非常低的曲线下面积(0.52),但使用岭回归并没有太大差异(0.61)。
我的因变量/输出是点击概率,基于历史数据中是否存在点击。
自变量为州、城市、设备、用户年龄、用户性别、IP运营商、关键词、手机厂商、广告模板、浏览器版本、浏览器家族、操作系统版本和操作系统家族。
其中,我使用状态、设备、用户年龄、用户性别、IP 运营商、浏览器版本、浏览器系列、操作系统版本和操作系统系列进行预测;我没有使用关键字或模板,因为我们想在深入研究我们的系统并选择关键字或模板之前拒绝用户请求。我没有使用城市,因为它们太多或移动制造商,因为它们太少。
可以吗,还是我应该使用被拒绝的变量?
首先,我从我的变量创建一个稀疏矩阵,这些矩阵映射到具有是或否值的点击列。
训练模型后,我保存系数并截取。这些用于使用逻辑回归公式的新传入请求:
其中a
是intercept,k
是i
th 系数,x
是i
th 变量值。
到目前为止我的方法正确吗?
R 中的简单 GLM(即没有正则化回归的地方,对吗?)给了我 0.56 AUC。通过正则化,我得到 0.61,但没有明显的阈值,我们可以说在 0.xx 之上它的大部分是 1,而在它之下,大多数零被覆盖;实际上,点击未发生的最大概率几乎总是大于点击发生的最大概率。
所以基本上我该怎么办?
我已经阅读了随机梯度下降如何在 logit 中是一种有效的技术,那么如何在 R 中实现随机梯度下降?如果不简单,有没有办法在 Python 中实现这个系统?SGD 是在生成正则化逻辑回归模型之后实施,还是完全不同的过程?
还有一种称为跟随正则化领导者 (FTRL) 的算法,用于点击率预测。是否有我可以通过的示例代码和 FTRL 使用?