机器学习常见的六大错误-阿里云开发者社区

开发者社区> 技术小哥哥> 正文

机器学习常见的六大错误

简介:
+关注继续查看

现一个key-value的数据库,那么有很多种模式都可以实现,但是他们最终所达到的效果却是千差万别的。同样,在机器学习领域,如果我想实现一个分类器,也有很多种算法,但是每种算法都对数据做了不同的前提假设。

曾经当我们处理少量数据的时候,我们往往可以先设计若干种算法,然后每种都测试一下,选择一种最优的方法,但是当面对大数据时,我们就需要转变一下思路,首先对数据进行分析,然后选择一种模型对数据进行处理。

在过去,我们经常会发现,很多人都沉迷于某一种模型,无论遇到任何问题他们都会选择同样的模型来解决问题,而原因仅仅是他们擅长这个模型,而不是数据适合这个模型。在这篇文章中,主要会来陈述下在机器学习时常见的几种错误。

1. 使用模型默认的损失函数

损失函数是一个机器学习算法的核心,损失函数决定了最终优化后得到的参数以及模型本身。在不同的业务场景下,优化的目标应该是不同的。例如我在珍爱网做付费用户预测时,由于付费用户本身数量级就不大,所以我宁可误判十个,也不能错过一个。所以这个时候我们就需要去修改分类器模型的损失函数。

2. 无根据地选择线性模型

这个同样是我很常遇到的同事会犯的错误。遇到一个分类问题,二话不说就上逻辑回归,其实原因很简单,就是因为逻辑回归效率高,实现容易。但是大家往往都忽略了一点,逻辑回归本身就是一个线性模型,但是真实数据是否线性可分却是我们未知的情况。其实我个人认为,由于高维数据下判断数据是否线性可分几乎是一个不现实的任务,所以我个人的经验往往是先使用逻辑回归做一次分类,但是同时也会采用决策树,或者SVM等非线性模型来对该数据进行重新的分类比对。(我不知道是否有更好的方法)

话说在大数据情况下,很多人都来和我讲现在都提倡海量数据+线性模型,但是我个人认为这句话是有误的,线性模型的成立并非建立在海量数据的基础上,而是建立在海量特征的基础上,说的更恰当些,应该是建立在更好的特征工程的基础之上。

3. 忽视异常值的意义

异常值是个很有趣的事情,让你又爱又恨。我记得之前在统计之都上看过一篇文章对我启发很大,说曾经我们都愿意把异常值直接给丢掉,但是我们却忘记了异常值并非错误值,而同样是真实情况的表现,我们之所以认为异常,只是因为我们的数据量不足够大而已。文中还举了一个例子,说我们用计算机来模拟高斯分布,也一样会模拟出一些数据点落在N个标准差之外,而我们并不能说这是异常点,因为如果我们把这些点删除掉,这就不是一个高斯分布了。所以异常值很多情况下非但不能丢掉,还需要引起我们的足够重视和分析,例如网站的收入突然增长。
但是我们又要注意这个异常值是否是错误值,如果是错误值,这个时候我们就应该想办法把这些错误值去掉,因为这些错误往往会影响我们实际的模型效果。如果当训练数据中包含一些异常值的时候,我们就需要考虑模型的敏感性了,例如AdaBoost, Kmeans这种就属于对异常值很敏感的机器学习模型。

4. 不考虑n和p的关系

n: 训练数据的数量。p: 特征的数量。SVM核函数的一个关键概念就是维度提升,如果当n << p的时候,还依然采用SVM来选定模型,那么就必然会导致p进一步增加,于是导致特征的参数中自由变量增加,必然会对分类的效果产生很大的影响。

5. L1 / L2 正则化之前并没有对特征进行标准化

这个道理很简单,如果你的每个特征是处在不同的区间时,你是没办法去做L1/L2的正则化的,举个例子,x1 代表年龄,x2 代表收入,如果我采用一个广义的线性模型,比如 Y = f(ax1 + bx2),然后x1大小范围是10-50,x2大小范围是5000 – 100000,a和b根本就没办法在一个量级上,这时正则化一定是有问题的。

6. 变量之间的共线性问题

当特征变量之间产生共线性时,产生最大的问题就是让线性模型的参数是无法解释的,正常来说线性模型的参数权重基本就代表了该特征变量的重要性,但是如果共线性,那么这个意义就失效了。但是我也并不知道这个有什么特别好的解决方法,因为当特征增加时,特征之间的共线性(或者说相关性吧,这样更泛一些)几乎是不可避免的。


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4096546.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
高明!OpenAI提出HER算法,AI系统学会从错误中学习
OpenAI在利用增强学习训练人工智能系统任务上不断地取得进步。他们发布的新平台显示,可以允许人工智能系统从错误中吸取教训,并将错误视为系统的目标而非失败。
3999 0
关于EINTR错误的理解【转】
转自:http://www.xuebuyuan.com/1470645.html 最近在工作中遇到了EINTR错误,感到比较困惑,几番研究之后,颇有心得和收获,特记录如下,便于以后查询,也给有同样困惑的朋友们提供一点借鉴。
1054 0
CUDA学习(一)
加快节奏,重新看一下cudaC手册
2969 0
构建机器学习模型时要避免的6个错误
近年来,机器学习在学术研究领域和实际应用领域得到越来越多的关注。但构建机器学习模型不是一件简单的事情,在构建机器学习模型时,我们应该避免以下6个错误。
247 0
Ubuntu 18.04 LTS+GTX1080Ti+CUDA10.0 深度学习主机环境搭建
由于之前的主机存在运行docker自动重启的问题,跑模型没问题,排查之后没有发现问题所在,所以最后决定升级技嘉主板的bios并重新安装系统和环境。
871 0
机器学习实战:基于概率论的分类方法:朴素贝叶斯(源码解析,错误分析)
按照惯例,先把代码粘到这里 from numpy import * def LoadDataSet(): postingList = [['my', 'dog', 'has', 'flea', 'proble...
835 0
5 Ubuntu 18.04 LTS+GTX1080Ti+CUDA10.0 深度学习主机环境搭建
由于之前的主机存在运行docker自动重启的问题,跑模型没问题,排查之后没有发现问题所在,所以最后决定升级技嘉主板的bios并重新安装系统和环境。
426 0
2010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载