机器学习实践中应避免的7种常见错误
在机器学习领域,每个给定的建模问题都存在几十种解法,本文作者认为,模型算法的假设并不一定适用于手头的数据;在追求模型最佳性能时,重要的是选择适合数据集(尤其是“大数据”)的模型算法。
统计建模和工程开发很相似。
在工程开发中,人们有多种方法搭建一套键-值存储系统,每种设计针对使用模式有一套不同的假设。在统计建模中,也有很多算法来构造一个分类器,每种算法对数据也有各自的假设集合。
当处理少量数据时,因为实验成本很低,我们尽可能多的尝试各种算法,从而选出效果最优的算法。但提到“大数据”,提前分析数据,然后设计相应“管道”模型(预处理,建模,优化算法,评价,产品化)是事半功倍的。
正如在我以前的文章里提到,每个给定的建模问题都存在几十种解法。每个模型会提出不同的假设条件,我们也很难直观辨别哪些假设是合理的。在业界,大多数从业人员倾向于挑选他们熟悉的建模算法,而不是最适合数据集的那个。在这篇文章中,我将分享一些常见的认识误区(要避免的)。在今后的文章中再介绍一些最佳实践方法(应该做的)。
1. 想当然地使用默认损失函数
很多从业者喜欢用默认的损失函数(比如平方误差)来训练和选择最优模型。事实上,默认的损失函数很少能满足我们的业务需求。拿诈骗检测来说。当我们检测诈骗交易时,我们的业务需求是尽量减少诈骗带来的损失。然而现有二元分类器默认的损失函数对误报和漏报的危害一视同仁。对于我们的业务需求,损失函数不仅对漏报的惩罚要超过误报,对漏报的惩罚程度也要和诈骗金额成比例。而且,诈骗检测的训练数据集往往正负样本极度不均衡。在这种情况下,损失函数就要偏向于照顾稀少类(如通过升/降采样等)。
2. 用普通线性模型处理非线性问题
当需要构建一个二元分类器时,很多人马上就想到用逻辑回归,因为它很简单。但是,他们忘记了逻辑回归是线性模型,非线性因素的交叉特征需要靠手工编码处理。回到刚才诈骗检测的例子,要获得好的模型效果,就需要引入“帐单地址=送货地址 && 交易金额<$ 50”之类的高阶交叉特征。因此,在处理包含交叉特征的问题上我们应该尽可能选择非线性模型,比如有核函数的SVM,或者基于树的分类器。
3.忽视异常值
异常值很有意思。根据上下文情况,它们要么需要被特别处理,要么应该被完全忽略。就拿收入预测来说。如果观察到收入有异常尖峰,我们可能要加倍注意他们,并分析是什么原因造成这些峰值。但如果异常值是由于机械误差、测量误差或者其它任何非普遍化因素导致的,那我们最好在准备训练数据之前过滤掉这些异常值。
有些模型算法对异常值非常灵敏。比如,AdaBoost 会对它们“倍加关注”,赋予一个相当大的权重值。相反,决策树就简单地把它们当做错误分类来处理。如果数据集包含相当数量的异常值,那么,使用一种具有异常值鲁棒性的建模算法或直接过滤掉异常值是非常重要的。
4. 样本数远小于特征数时使用高方差模型
SVM是最流行的建模算法之一,它的强大功能之一就在于用不同核函数去拟合模型。SVM内核被认为是可以自发组合现有特征,从而形成更高维度特征空间的方法。由于获得这项强大功能的代价几乎忽略不计,大多数人在训练SVM模型时默认使用核函数。然而,当训练样本数远远少于特征维度时(n<<p)—— 常见于医学数据——高维特征空间数据过拟合风险会随之增加。事实上,在上述情况下我们应该完全避免使用高方差模型。
5. 不做标准化的L1/L2正则化
使用L1或L2正则化是线性回归或逻辑回归惩罚权重系数值过大的常用方法。然而,许多人在使用这些正则化方法时都没有意识到标准化的重要性。
再回到诈骗检测,设想一个把交易金额作为特征的线性回归模型。如果不做正则化,当交易金额以美元为单位时,其拟合系数将会是以美分为单位时的100倍。同时,因为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个常见错误。这个列表并不完整,它只是激发读者去思考,模型算法的假设并不一定适用于手头的数据。在追求模型最佳性能时,重要的是选择适合数据的模型算法,而不是你最熟悉的那个。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31