我对机器学习非常陌生,在我的第一个项目中,我偶然发现了许多我真正想要通过的问题。
我使用logistic回归和R的glmnet软件包和α=0的岭回归。
我实际上是使用岭回归,因为拉索删除了我所有的变量,给出了非常低的曲线下面积(0.52),但与岭没有太大的差别(0.61)。
我的因变量/输出是单击的概率,基于历史数据中是否有单击。
自变量包括状态、城市、设备、用户年龄、用户性别、IP载体、关键词、手机制造商、广告模板、浏览器版本、浏览器族、OS版本和OS家族。
其中,为了预测,我使用的是状态、设备、用户年龄、用户性别、IP载体、浏览器版本、浏览器系列、OS版本和OS系列;我不使用关键字或模板,因为我们希望在系统深入研究并选择关键字或模板之前拒绝用户请求。我不使用城市,因为他们太多,或移动制造商,因为他们太少。
首先,我从变量中创建一个稀疏矩阵,这些变量被映射到具有yes或no值的单击列中。
在训练模型之后,我保存系数并拦截。这些方法用于新传入的请求,使用逻辑回归公式:

其中a是截距的,k是i的第四系数,x是i的第四变量值。
R中的简单GLM (也就是没有正则回归的地方,对吗?)给了我0.56 AUC。有了正则化,我得到了0.61,但没有明显的阈值,我们可以说,在0.xx以上,它主要是1,低于它,大多数的零被覆盖;实际上,一个点击没有发生的最大概率几乎总是大于发生点击的最大概率。
我读过随机梯度下降在logit中是一种有效的技术,那么如何在R中实现随机梯度下降呢?如果不是简单的话,是否有办法在Python中实现这个系统?SGD是在生成正则logistic回归模型之后实现的,还是完全不同的过程?
此外,还有一个算法,称为跟随正则领导者(FTRL),用于通过点击率预测。是否有我可以通过的示例代码和FTRL的使用?
发布于 2014-07-08 14:32:55
随机梯度下降是一种设置回归器参数的方法,由于logistic回归的目标是凸的(只有一个最大值),这不是一个问题,一般只需要SGD来提高大量训练数据的收敛速度。
你的数字告诉我的是,你的特征不足以将课程分开。如果您认为任何有用的特性,请考虑添加额外的特性。您还可以考虑原始功能空间中的交互和二次特性。
发布于 2015-05-02 01:26:46
您提到的许多特性都是绝对的,每种功能都有这么多级别,您的问题的维度将会扩大。与其最初专注于Lasso和Ridge回归,不如首先寻找样本(记录)中的集群来了解数据集?在你目前的方法下,你把所有的东西都投入到一个模型中,并期待一个高的AUC(?)。您可能会发现几个类别级别的频率在一个或多个潜在群集中占主导地位。如果您不知道样本(记录)的集群结构是什么,请尝试基于特征值的质心进行k均值聚类,以查看是否存在唯一的集群。
一旦您得到了集群结构的句柄,然后解决回归问题。您的回归模型可能会崩溃,部分原因是您的数据存在较大的不均匀性,以及先前建议的问题。
机器学习就是执行无监督的类发现,然后是类预测(输出二进制变量)。
此时,还不清楚您是否研究了数据以了解其集群结构,而是将其抛到一个受监督的模型中,期望获得较高的AUC值。
发布于 2016-11-21 05:42:32
SGD与正则化无关,FTRL也是如此。它们是近似于分类或回归问题的最优解的学习方法。
如果您想了解FTRL是如何工作的,可以检查在我的工业项目中应用的我的代码。
这里是另一种基于FTRL的称为TDAP的学习方法,您可以检查代码。
希望这能帮到你,祝你好运!
https://datascience.stackexchange.com/questions/685
复制相似问题