电子说
Cheng-Tao Chu总结了机器学习建模中常见的误区,提醒读者注意算法的假定未必适合手头的数据。Chu曾任Google欺诈支付分析首席工程师,LinkedIn搜索相关性负责人,Square欺诈检测负责人,Codecademy数据分析主管,现为都铎投资公司下一代研究、模拟、交易基础设施MacroPipeline的首席架构师。Chu在NIPS 2006的论文“基于多核的机器学习Map-Reduce”引用超过1400次,是开源项目Apache Mahout的基础。
统计建模和工程有许多相似之处。
在工程上,有多种方法构建一个键值存储,而每种设计对使用模式有着不同的假设。在统计建模中,有多种算法构建一个分类器,而每种算法对数据有着不同的假设。
当处理小规模数据时,由于试验的成本较低,尽可能多地尝试各种算法然后选出最好的算法,是很合理的选择。但是当我们碰到“大数据”的时候,事先分析数据并据此设计建模流程(预处理、建模、优化算法、评估、产品化),会有很大帮助。
我在前一篇博客文章就提到了,有几十种方法解决一个给定的建模问题。每种模型有着不同的假定,辨识哪些假设合理,并没有显而易见的方法。在业界,大多数从业人员选择他们最熟悉的建模算法,而不是最适合数据的算法。在这篇文章中,我想要分享一些常见的误区,至于最佳实践,留待以后的文章。
1. 理所当然地使用默认损失函数
很多从业人员在训练和挑选模型的时候使用默认的损失函数(例如,均方误差)。在实践中,默认的损失函数很少对齐业务的目标。就拿欺诈检测来说吧。当尝试检测欺诈性交易时,业务目标是最小化欺诈的损失。而二元分类器的默认损失函数给予假阳性和假阴性同样的权重。为了对齐业务目标,损失函数不仅应该加大惩罚假阴性的力度,同时惩罚假阴性的力度也应该和损失金额成比例。此外,欺诈检测中的数据集通常包含高度失衡的标签。在这些情形下,损失函数需要向罕见类别方向倾斜。
2. 在非线性相互作用中使用原始的线性模型
构建二元分类器时,出于简单性,许多从业人员立刻拿出逻辑回归。不过,很多人忘了,逻辑回归是一个线性模型,因此需要手工编码预测因子中的非线性相互作用。回到欺诈性检测的例子,“账单地址 = 配送地址且交易额 < $50”这样的高阶相互作用特征对良好的模型表现而言不可或缺。所以,这类问题应该考虑非线性模型,比如配有核函数的SVM、基于决策树的分类器这样内置高阶相互作用特征支持的模型。
3. 忘了离群值
离群值值得注意。取决于上下文,它们或者需要特别关注,或者应该完全忽略。以利润预测为例。如果观察到了不同寻常的利率尖峰,对其给予额外关注,查明导致尖峰的原因,应该是个好主意。不过如果离群值是由机制误差、测量误差或其他任何不可推广的原因造成的,那么,在将数据传给建模算法前,过滤掉这些离群值是个好主意。
相比其他模型,一些模型对离群值更敏感。比如,AdaBoost可能会将那些离群值视作“困难”情形,给予离群值巨大的权重,而决策树可能仅仅将每个离群值视作假分类。如果数据集包含相当数量的离群值,需要使用在离群值上鲁棒性好的建模算法,或者过滤掉离群值,这一点很重要。
4. 当n远小于p时使用高方差模型
SVM是最流行的现成的建模算法之一,而其最强力的特性之一是使用不同的核调整模型。SVM的核可以看成一种自动组合现有特征至更丰富的特征空间的方法。由于这一强力特性几乎没什么代价,大多数从业人员在训练SVM模型时默认使用核。然而,当n << p(样本数远小于特征数)时——在业界很常见,比如医疗数据——更丰富的特征空间意味着高得多的过拟合数据的风险。事实上,当n << p时,应该完全避免高方差模型。
5. 使用L1/L2/...正则化时不做标准化
应用L1或L2惩罚大系数是常用的正则化线性回归或逻辑回归的方法。然而,许多从业人员没有意识到在应用这些正则化技术之前标准化特征的重要性。
回到欺诈检测的例子,想象一个交易额特征的线性回归模型。在没有正则化的情况下,如果交易额的单位是元,拟合的参数大概会是单位是分的情况下拟合的参数的一百倍。而在有正则化的情况下,由于L1/L2对较大系数惩罚的力度更大,以元为单位的交易额会受到更多惩罚。因此,正则化出现了偏差,倾向于惩罚尺度较小的特征。为了缓解这一问题,在预处理步骤中标准化所有特征,让它们位于同一水平线上。
6. 使用线性模型时没有考虑多重共线性
想象一下,创建一个包含两个变量X1、X2的线性模型,假定标准答案是Y = X1 + X2。理想情况下,如果观测数据的噪声不大,线性回归方案将重建标准答案。然而,如果X1和X2共线,那么在大多数优化算法看来,Y = 2 * X1、Y = 3 * X1 - X2、Y = 100 * X1 - 99 * X2都很不错。这可能不会造成什么妨害,因为它并未导致估计出现偏差。不过,它确实造成了不良的状况,使得系数的权重难以解释。
7. 将线性回归或逻辑回归的系数绝对值视作特征重要性
因为很多现成的线性回归器返回每个系数的p值,许多从业人员相信,线性模型的系数的绝对值越大,相应的特征就越重要。其实这极少成立:
改变变量的尺度会改变系数的绝对值
如果特征具有多重共线性,系数可以从一个特征移动到其他特征。同时,数据集的特征越多,特征具有多重共线性的概率就越高,通过系数解释特征重要性就越不可靠。
以上是机器学习实践中常见的7个误区。这个列表并不求全,主要用意是激发读者的思考,建模的假定可能并不适用于手头的数据。为了达到最佳的模型表现,选择具有最合适的假定的建模算法很重要——而不是直接选择你最熟悉的算法。
全部0条评论
快来发表一下你的评论吧 !