本文整理自知乎及其他相关资料:
连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果
回答一:
在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:
l 离散特征的增加和减少都很容易,易于模型的快速迭代。(离散特征的增加和减少,模型也不需要调整,重新训练是必须的,相比贝叶斯推断方法或者树模型方法迭代快)
l 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
l 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;离散化后年龄300岁也只对应于一个权重,如果训练数据中没有出现特征"年龄-300岁",那么在LR模型中,其权重对应于0,所以,即使测试数据中出现特征"年龄-300岁",也不会对预测结果产生影响。特征离散化的过程,比如特征 A,如果当做连续特征使用,在LR模型中,A会对应一个权重w,如果离散化,那么A就拓展为特征A-1,A-2,A-3...,每个特征对应于一个权重,如果训练样本中没有出现特征A-4,那么训练的模型对于A-4就没有权重,如果测试样本中出现特征A-4,该特征A-4也不会起作用。相当于无效。但是,如果使用连续特征,在LR模型中,y = w*a,a是特征,w是a对应的权重,比如a代表年龄,那么a的取值范围是[0..100],如果测试样本中,出现了一个测试用例,a的取值是300,显然a是异常值,但是w*a还是有值,而且值还非常大,所以,异常值会对最后结果产生非常大的影响。
l 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;在LR模型中,特征A作为连续特征对应的权重是Wa。A是线性特征,因为y =Wa*A,y对于A的导数就是Wa,如果离散化后,A按区间离散化为A_1,A_2,A_3。那么y = w_1*A_1+w_2*A_2+w_3*A_3.那么y对于A的函数就相当于分段的线性函数,y对于A的导数也随A的取值变动,所以,相当于引入了非线性。
l 离散化后可以进行特征交叉,加入特征A 离散化为M个值,特征B离散为N个值,那么交叉之后会有M*N个变量,进一步引入非线性,提升表达能力;
l 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;按区间离散化,划分区间是非常关键的。
l 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。(当使用连续特征时,一个特征对应于一个权重,那么,如果这个特征权重较大,模型就会很依赖于这个特征,这个特征的一个微小变化可能会导致最终结果产生很大的变化,这样子的模型很危险,当遇到新样本的时候很可能因为对这个特征过分敏感而得到错误的分类结果,也就是泛化能力差,容易过拟合。而使用离散特征的时候,一个特征变成了多个,权重也变为多个,那么之前连续特征对模型的影响力就被分散弱化了,从而降低了过拟合的风险。)
李沐曾经说过:模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。
回答二:
首先,海量离散特征+LR是业内常见的一个做法,但并不是Holy Grail,事实上这一般而言仅仅是因为LR的优化算法更加成熟,而且可以在计算中利用稀疏特性进行更好的优化—可谓不得已而为之。事实证明GBDT和深度学习特征的加入对于CTR预测是有正面帮助的。
如果这个问题思考地更深一点,其实当前深度学习网络的最后一层,如果是binary classification,其实等同于LR。所以说,通过人工/半人工的方式产生的features,跟深度神经网络(无论之前用了怎样的结构)最后学出来的representation,其实是异曲同工,区别在于深度学习一般而言会学出一个dense representation,而特征工程做出来的是一堆sparserepresentation。某些时候,人工特征其实跟神经网络经过几层非线性之后的结果是高度相似的。
在暴力提取高阶/非线性特征的本事上,机器肯定胜过人类。但是,就算最牛的机器智能,有时候都敌不过一些“人类常识”。尤其是业务的一些逻辑,可以认为是人脑在更大的一个数据集上pre-train出来的一些特征,其包含的信息量一定是大于你用于预测的dataset的。在这种情况下,往往厉害的人工features会outperform暴力的机器方法。
所以,特征离散化,从数学角度来说可以认为是增加robustness,但是更重要的,make sense of the data,将数据转变成人类可以理解、可以validate的格式。
人类的业务逻辑,当然也不是完美的。在当前机器智能还未征服“常识”这个领域之前,人类的businessinsights还是一个有力的补充(在很多case,甚至是最重要的部分)。在机器能够完全掌握的范围内,譬如围棋,人类引以为傲的intuition已经无法抵抗机器的暴力计算了——所以在未来,我们一定会看到越来越多的机器智能开始侵入一些传统上认为必须要依靠人类的“感觉”的一些领域。
广告领域当然也不能躲过这个大的趋势。
本回答来自Emotibot机器学习科学家马永宁。
感谢相关作者,因资料比较久远,无法注明出处,望见谅!