转载自:http://blog.jobbole.com/70684/

编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 Google、LinkedIn和Square就职。


统计建模非常像工程学。

在工程学中,有多种构建键-值存储系统的方式,每个设计都会构造一组不同的关于使用模式的假设集合。在统计建模中,有很多分类器构建算法,每个算法构造一组不同的关于数据的假设集合。

当处理少量数据时,尝试尽可能多的算法,然后挑选最好的一个的做法是比较合理的,因为此时实验成本很低。但当遇到“大数据”时,提前分析数据,然后设计相应“管道”模型(预处理,建模,优化算法,评价,产品化)是值得的。

正如我之前文章中所指出的,有很多种方法来解决一个给定建模问题。每个模型做出不同假设,如何导引和确定哪些假设合理的方法并不明确。在业界,大多数实践者是挑选他们更熟悉而不是最合适的建模算法。在本文中,我想分享一些常见错误(不能做的),并留一些最佳实践方法(应该做的)在未来一篇文章中介绍。

1. 想当然地使用缺省损失函数

许多实践者使用缺省损失函数(如,均方误差)训练和挑选最好的模型。实际上,现有损失函数很少符合业务目标。以欺诈检测为例,当试图检测欺诈性交易时,业务目标是最小化欺诈损失。现有二元分类器损失函数为误报率和漏报率分配相等权重,为了符合业务目标,损失函数惩罚漏报不仅要多于惩罚误报,而且要与金额数量成比例地惩罚每个漏报数据。此外,欺诈检测数据集通常含有高度不平衡的标签。在这些情况下,偏置损失函数能够支持罕见情况(如,通过上、下采样)。

2.非线性情况下使用简单线性模型

当构建一个二元分类器时,很多实践者会立即跳转到逻辑回归,因为它很简单。但是,很多人也忘记了逻辑回归是一种线性模型,预测变量间的非线性交互需要手动编码。回到欺诈检测问题,要获得好的模型性能,像“billing address = shipping address and transaction amount < $50”这种高阶交互特征是必须的。因此,每个人都应该选择适合高阶交互特征的带核SVM或基于树的分类器。

3.忘记异常值

异常值非常有趣,根据上下文环境,你可以特殊关注或者完全忽略它们。以收入预测为例,如果观察到不同寻常的峰值收入,给予它们额外关注并找出其原因可能是个好主意。但是如果异常是由于机械误差,测量误差或任何其它不可归纳的原因造成的,那么在将数据输入到建模算法之前忽略掉这些异常值是个不错的选择。

相比于其它模型,有些模型对异常值更为敏感。比如,当决策树算法简单地将每个异常值计为一次误分类时,AdaBoost算法会将那些异常值视为“硬”实例,并为异常值分配极大权值。如果一个数据集含有相当数量的异常值,那么,使用一种具有异常值鲁棒性的建模算法或直接过滤掉异常值是非常重要的。

4.样本数少于特征数(n<<p)时使用高方差模型

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值,对于线性模型,许多实践者认为,系数绝对值越大,其对应特征越重要。事实很少如此,因为:(a)改变变量尺度就会改变系数绝对值;(b)如果特征是线性相关的,则系数可以从一个特征转移到另一个特征。此外,数据集特征越多,特征间越可能线性相关,用系数解释特征重要性就越不可靠。

这下你就知道了机器学习实践中的七种常见错误。这份清单并不详尽,它只不过是引发读者去考虑,建模假设可能并不适用于手头数据。为了获得最好的模型性能,挑选做出最合适假设的建模算法—而不只是选择你最熟悉那个算法,是很重要的。

机器学习实践中的 7 种常见错误相关推荐

  1. 【机器学习】机器学习实践中的 7 种常见错误

    编译:伯乐在线 - yixingqingkong,英文:Cheng-Tao Chu 编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 ...

  2. vlookup匹配值不唯一_数据对比、数据查询匹配Vlookup函数3种常见错误及解决方案...

    Excel中的Vlookup函数,在大家日常数据处理计算中应用的机会非常多,因为它可以帮助我们完成数据查询匹配.数据对比.但是这个函数在使用的过程中也经常会遇到查询错误的问题.根据实践经验总结,发现主 ...

  3. 奥卡姆剃刀是什么?机器学习实践中那些学习模型或者那些评估指标践行了这一理论?

    奥卡姆剃刀是什么?机器学习实践中那些学习模型或者那些评估指标践行了这一理论? 奥卡姆剃刀:无无必要,勿增实体. 奥卡姆剃刀原理应用于模型选择时变为以下想法:在所有可能选择的模型中,能够很好地解释已知数 ...

  4. ASP.NET Core MVC中的两种404错误

    我们在使用某些系统的时候,如果访问了一个不存在的地址怎么办,比如http://52abp. com/airport/fly:或者访问的地址路由和操作方法虽然存在,但是地址参数id不存在,比如https ...

  5. 极客新闻——16、数据库设计中的5个常见错误

    本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 本文作者总结了数据库设计中的5个常见错误,以供开发人员参考. 1.糟糕的预规划 好的数据库是深思熟虑的结果, ...

  6. Android M版本中gpio几种常见设定的pinctrl配置

    Android M版本中gpio几种常见设定的pinctrl配置 [DESCRIPTION] pinctrl的配置file是<project>.dts 备注:配置是以mt6735上gpio ...

  7. Visual Studio的正确打开方式|9中种常见错误

    文章目录 软件vs2010常见错误 1.vs2010软件编译(Ctrl+F5)一闪而过解决方法 2.无故运行报错 3.Consider using scanf_s instead. To disabl ...

  8. 【思维导图】机器学习中的几种常见距离与相似度计算

    [全网最细致]机器学习距离与相似度计算 欧几里得距离 o如果我们将两个点分别记作(p1,p2,p3,p4-)和(q1,q2,q3,14,-),则欧几里得距离的计算公式为: ofrom math im ...

  9. 语音应用开发中的 11 个常见错误

    在海外市场,Amazon Alexa 已经拥有超过 15000 项的技能.为语音助手开发技能俨然成了一门有利可图的生意.事实上,已经出现专门为 Alexa.Cortana 等语音助手开发技能的公司或个 ...

最新文章

  1. TimeLine CSS/Javascript 时间线
  2. Linux系统网卡配置方法
  3. 解决写文档对于图片边框的强迫症
  4. 英语答题测试的软件叫什么,英语做题软件哪个好 有答案解析的英语做题软件分享...
  5. 正则表达式简单语法及常用正则表达式
  6. 【Flask】ORM 关系一对一
  7. [Windows Phone] 自己动手实现Telerik公司的LayoutTransform动画效果
  8. Apache Tika源码研究(三)
  9. redis 缓存击穿及应对
  10. python第七章-文件和数据格式化
  11. pycharm+opencv安装总结
  12. Linux命令之文件与文件夹的拷贝
  13. presto web UI介绍
  14. 【无代码爬虫】web scraper 之 安装
  15. 网络安全——常见的几种WEB攻击:
  16. MySQL create database 新建utf-8/utf8mb4编码 数据库
  17. ansible中的加密
  18. win10任务栏图标无法固定,也无法取消固定,
  19. 什么是 Redis ?
  20. 哈工大软件构造期末复习1

热门文章

  1. ShotCut——视频处理剪辑神器
  2. 编译通用无界面版Emacs27.1
  3. Mac上crontab与/etc/crontab定时任务
  4. Android SurfaceFlinger 学习之路(五)----VSync 工作原理
  5. Mac下载配置aria2和baidudl
  6. Mac源码安装使用OpenCV
  7. 关于LD_PRELOAD在Android API HOOK中的应用
  8. ffmpeg (三):ffmpeg结合SDL2.0解码音频流
  9. android电池(五):电池 充电IC(PM2301)驱动分析篇
  10. Ubuntu-解决包依赖关系的三种办法