观点 | 机器学习新手工程师常犯的6大错误

选自Medium

机器之心编译

参与:刘晓坤、路雪

机器学习中有很多构建产品或解决方案的方式,每种方式的假设情况都不一样。很多时候,如何找到合理的假设并不容易。机器学习初学者经常会犯一些事后觉得蠢爆了的错误。本文作者创建了一个机器学习新手工程师常犯的错误清单。希望大家可以从中学习,创建更鲁棒的解决方案。

理所当然地使用默认损失函数

在刚入门的时候,均方误差作为损失函数是很好的默认选择。但是当需要处理现实问题的时候,这种未经专门设计的损失函数很少能给出最优解。

拿欺诈检测为例。为了与你真正的商业目标一致,需要按照欺诈造成的损失美元金额的比例惩罚假负类。使用均方误差能给你一个还不错的结果,但不会是当前最佳的结果。

要点:每一次都自定义损失函数,使之紧密匹配你的目标。

对所有问题都使用一种算法/方法

很多人一旦完成了入门教程之后,就开始在所有的案例中都使用同一种算法。这很常见,他们觉得这种算法的效果和其它算法是一样的。这种假设是很糟糕的,最终会带来很差的结果。

解决办法是让数据为你选择模型。当你把数据预处理之后,将其馈送到多个不同的模型中去,看看结果如何。你将会了解哪些模型最适用,而哪些模型并不适合。

要点:如果你一直使用同一种算法,这可能意味着你的结果并不是最好的。

忽略异常值

异常值有时候很重要,有时候又可以忽略不计,视情况而定。以收入预测为例,有时候收入会突然出现很大的变动,观察这种现象并了解其原因是很有帮助的。有时候异常值由某种误差造成,那么这时可以放心地忽略它们,并将其从你的数据中删除。

从模型的角度来看,有些模型对异常值更加敏感。以 Adaboost 为例,它会将异常值当做重要的例子,并给予异常值极大的权重,而决策树可能只是简单的把异常值当做一个错误分类(false classification)。

要点:每一次开始工作之前,先仔细观察数据,决定异常值是否应该被忽略,如果无法决定,就更仔细地观察。

未正确处理周期特征

一天 24 小时、一周七天、一年 12 个月,以及风向都是周期特征。很多机器学习新手工程师不知道把这些特征转换成表示能够保存信息,如 23 时和 0 时很接近。

以小时为例,最佳处理方式是计算它的 sin 和 cos,这样你可以将该周期特征表示为一个圆的 (x,y) 坐标。在以这种方式表示的时间中,23 时和 0 时就是在数值上紧挨着的两个数,仅此而已。

要点:如果你在研究中遇到周期特征,但没有将其转换成表示,那你就是在给模型添加垃圾数据。

未经归一化的 L1/L2 正则化

L1 和 L2 正则化惩罚较大的系数,是一种对线性或 logistic 回归进行正则化的常用方式。但是,很多机器学习工程师没有意识到使用正则化之前对特征进行归一化的重要性。

假设你有一个线性回归模型,其中一个特征是「交易金额」。如果交易金额的单位是美元,那么它的系数应该是单位为美分的系数的 100 倍。这可能会引起偏差,使模型惩罚实际较小的特征。为了避免该问题,需要将这些特征进行归一化,这样正则化对于所有特征都是平等的。

要点:正则化很好用,但是如果你不把特征归一化,会出现很让人头疼的问题。

把线性回归或 logistic 回归的系数绝对值当作判断特征重要性的依据

很多现成的线性回归器为每个系数返回 p 值,一些机器学习新手工程师认为对于线性模型而言,系数的值越大,则该特征越重要。这并不准确,因为变量的大小会改变系数的绝对值。如果特征是共线的,则系数可以从一个特征转换到另一个特征。数据集的特征越多,特征是共线的可能性就越大,这种对特征重要性的简单解释的可信度就越低。

要点:了解哪些特征对结果的影响力最大非常重要,但是仅凭系数无法确定。

做一些项目并且获得好的结果,感觉就像赢了一百万!你努力工作,研究结果证明你做的不错,但是和任何行业一样,魔鬼总是隐藏在细节中,精密的图表也可能隐藏偏差和误差。本文列出的错误并不是全部,只是想刺激读者思考你的解决方案中可能隐藏哪些细微问题。要想获取好的结果,按照流程工作很重要,并且仔细检查确保不犯常见错误。

原文链接:https://medium.com/towards-data-science/top-6-errors-novice-machine-learning-engineers-make-e82273d394db

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

22690
来自专栏AI科技大本营的专栏

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

【AI科技大本营导读】互联网公司每天都面临着处理大规模机器学习应用程序的问题,因此我们需要一个可以处理这种超大规模的日常任务的分布式系统。最近,以集成树为构建模...

17520
来自专栏机器之心

ECCV 2018 | 中山大学&商汤提出部分分组网络PGN,解决实例级人体解析难题

识别每个语义部分(如手臂、腿等)是人体解析中最基本、最重要的一部分。不仅如此,它还在许多高级应用领域中发挥了重要的作用,例如视频监控 [38]、人类行为分析 [...

23950
来自专栏AI科技大本营的专栏

【AI 技术精选】神经网络结构深入分析和比较

作者 | Eugenio Culurciello 翻译 | AI科技大本营(rgznai100) 深度神经网络和深度学习是既强大又受欢迎的算法。这两种算法取得的...

36460
来自专栏ATYUN订阅号

【开源】谷歌开源其语义图像分割模型DeepLab-v3+

AiTechYun 编辑:xiaoshan 语义图像分割是为图像中的每个像素分配诸如“道路”,“天空”,“人”,“狗”之类的语义标签,它使得许多新的应用程序在(...

32580
来自专栏人工智能

机器学习工作流程(第1部分)

在这篇文章中,我的目标是提出鸟瞰图,我将在后面的章节中详细讲解每个组件。

44710
来自专栏大数据文摘

我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记

18130
来自专栏机器之心

如何解决90%的自然语言处理问题:分步指南奉上

38180
来自专栏人工智能

机器学习:算法及工具

算法及工具 ? 说明 编程语言:Python 机器环境:Windows 参考书籍:《Python机器学习实践指南》《机器学习实战》 为什么使用Python 1....

22460
来自专栏大数据挖掘DT机器学习

阿里流行音乐趋势预测-深度学习LSTM网络实现代码分享

一、 LSTM网络原理 要点介绍 (1)LSTM网络用来处理带“序列”(sequence)性质的数据,比如时间序列的数据,像每天的股价走势情况,机械振动信号...

36540

扫码关注云+社区

领取腾讯云代金券