在机器学习中,我们的主要任务是选择一个学习算法并将其在数据上训练,所以有可能效果不佳的两个地方在于:

  • 算法不好
  • 数据不好

我们先从数据不好开始看起。

训练数据的数量不够

如果是教一个小孩子认什么是苹果,指给他看一下苹果,可能要重复几次,然后这个小孩子就能够识别苹果了。但是对于机器学习而言,实现相同的效果则要难得多。

机器学习算法需要大量的数据来完成任务。

即使是简单的任务,也需要大量的样本,对于复杂的问题,比如图片和语音识别则可能需要百万级别的样本。

对于复杂问题,数据要比算法重要得多,但是通常数据集都是小型的,或者中等大小的数据集,获取额外的数据并不便宜,也不简单。

训练数据的表征性不够

为了使得模型泛化足够好,训练数据要包含泛化到新数据的特征。如果用的训练集表征性不够,那么训练得到的模型就不太可能得到精确的预测值。但这个要求其实很高。

一方面,如果数据样本太小,则很容易受样本噪音的影响;另一方面,即使是样本数量足够大,如果采样方法不够好,也得不到具有表征性的样本数据。这个问题被称作采样偏差

简言之,在训练时看到的数据要能够代表数据背后的模式。就像考试一样,平时训练的题目不太可能和考试题目一样,但是知识点是一样的。如果训练题没有覆盖到考试的知识点,恐怕考试就得临场发挥了。

训练数据的质量不够

这个比较明显,如果你的训练数据充满了错误,异常以及噪音,那你的模型很难习得数据背后的模式,你的系统也就不可能表现得好。

花费时间和精力来清洗训练数据是十分必要,且重要的。

现实也是如此,大部分数据科学家都会花费大量时间来做这件事情。

无关的特征

Garbage in, garbage out. 垃圾进,垃圾出。

机器学习项目成功的一个关键点在于得出一套良好的特征集,这个过程称之为特征工程。特征工程牵涉到三个大的方面:

  • 特征选择
  • 特征抽取
  • 收集更多数据,创建新的特征

特征选择

在现存的特征中选择出最有用的特征来训练,这显然牵涉到特征的评估方式。

特征抽取

组合当前的特征产生一个更有用的特征来。

创建新特征

这牵涉到收集更多数据,来创建新的特征。

在已经知道了数据可能存在的问题之后,我们再来看,数据不够好可能导致的问题。

过拟合

过拟合问题其实我们日常生活中天天碰到,我们会对自己遇到的事情放大它的效应。机器学习里,不小心一点,就会掉进来过拟合问题的陷阱中。

过拟合常常发生的原因在于:模型太复杂而数据量不够以及噪声过大,解决方法有:

  • 简化模型,比如选择有更少参数的模型,减少训练集特征个数,对模型加以限制等
  • 收集更多训练数据
  • 降低训练数据中的噪音:修正错误,去除异常数据

欠拟合

过拟合的对立面。表示模型过于简单不足以学到数据中的模式。修正问题的方法有:

  • 选择更复杂的模型,有更多可调参数的模型
  • 特征工程,选择更优秀的特征给学习算法
  • 降低对模型的限制,比如移除正则化等

现在我们已经了解了很多关于机器学习的概念,当我们完成训练模型时,我们不能只是希望模型要在新数据上泛化得好,而是能够评估它,并微调模型使其表现更好。

测试和验证

直接将模型上线看看它的表现当然可以得出评价,但是更好的方式则是将数据集分割成两部分:训练集和测试集

使用训练集训练,使用测试集测试。

在测试集上的误差称作泛化误差,这个数字就是我们估计模型好坏的关键指标。

如果训练误差小,但是泛化误差大,则模型过拟合。
如果训练误差大,但是泛化误差小,似乎不太可能。

通常数据的80%用来训练,20%用来留给测试用。

如果有两个不同模型,让你来选择,那么对两个模型的测试误差进行比较即可做出选择。现在对选好的模型进行优化,比如添加正则化来避免过拟合,如何选择正则化的超参数呢?

答案是:用验证集,验证集是从训练集中分出来的数据,所以对于训练集来说,会缩小训练集的样本数,我们通过交叉验证法可以避免这种浪费。

在测试集上验证超参数对应的泛化误差大小,会导致模型渐渐适应测试集,使其在测试集上表现越来越好,但是在生产环境下针对新的数据表现不好。也即扩大范围的泛化能力不强。

具体执行是这样:训练集被分成互补的两个集合,一个用于训练一个用于验证,训练集不是划分一次,而是划分多次,选出确定的超参数的模型后,就把这个最终的模型在全部训练集上再训练(这我之前没注意到),最后再在测试集上估计泛化误差。

NFL定理

没有免费的午餐。

模型的本质是对观察的简化。

简化就意味着我们需要丢掉特别详细的细节,这些细节并不能泛化到新的实例上去。但是,哪些数据要丢弃,哪些数据要保留?这就要求我们做出假设,比如这个问题适用线性模型建模呢还是神经网络模型。

如果对数据本身没有假设,那么就无法断定哪种模型更好。这就是NFL定理。

但是我们又无法保证哪种模型可以表现更好,唯一能准确知道的方式是在数据上评价它们的表现。在实践中,我们总是要先构建一些合理的假设,并在一些合理的模型上验证。比如简单问题,我们会用线性模型,复杂问题我们则用神经网络模型。

END.

参考:

《Hands-On Machine Learning with Scikit-Learn and Tensorflow》

【机器学习】机器学习的主要挑战与应对方式相关推荐

  1. 我爱机器学习 机器学习干货站- 资源

    我爱机器学习 机器学习干货站 跳至正文 机器学习 Deep Learning 所有主题 关注我们 DeepMind团队的<Deep Reinforcement Learning in Large ...

  2. 统计机器学习(机器学习) 概念

    统计机器学习(机器学习) 概念 该文章是作者阅读相关书籍和资料后,总结和归纳的一些个人认为有必要整理和了解的知识点介绍.与大家一起分享,如有不妥之处,还望指正. 统计(机器)学习 1.统计学习概念 统 ...

  3. 独家 | 5个机器学习开源项目来挑战你的数据科学技能!(附链接)

    作者:Pranav Dar 翻译:张达敏 校对:吴振东 本文约3100字,建议阅读10分钟 5个富有挑战性的机器学习开源项目帮你找到2020的正确打开方式,以下机器学习项目涉及多个领域,包括Pytho ...

  4. 推荐 : 5个机器学习开源项目来挑战你的数据科学技能!(附链接)

    作者:Pranav Dar   翻译:张达敏    校对:吴振东 本文约3100字,建议阅读10分钟 5个富有挑战性的机器学习开源项目帮你找到2020的正确打开方式,以下机器学习项目涉及多个领域,包括 ...

  5. 5个机器学习开源项目,挑战你的数据科学技能!(附链接)

    ▼ 更多精彩推荐,请关注我们 ▼ 本文授权转载自数据派THU 作者:Pranav Dar 编译:张达敏 简介 越来越多的人开始踏入数据科学领域.不管你是应届毕业生.初入职场者,还是有一定相关经验的专业 ...

  6. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  7. 多项式拟合缺点_机器学习——机器学习算法优缺点综述

    来源:数据派THU.七月在线 转自:Datawhale(Datawhale 目录 正则化算法(Regularization Algorithms) 集成算法(Ensemble Algorithms) ...

  8. 第十七章 大规模机器学习-机器学习老师板书-斯坦福吴恩达教授

    第十七章 大规模机器学习 17.1 大数据集学习 17.2 随机梯度下降 17.3 mini-batch 梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 减少映射与数据并行 17. ...

  9. python人工智能——机器学习——机器学习基础

    1.机器学习开发流程 2.机器学习算法分类 3.机器学习模型是什么? 机器学习开发流程 机器学习算法分类 监督学习(特征值+目标值) 监督学习(英语:Supervised learning),可以由输 ...

最新文章

  1. 企业信息化的创新与出路
  2. MySQL调优(三):索引基本实现原理及索引优化,哈希索引 / 组合索引 / 簇族索引等
  3. 期货与期权(part10)--远期与期货合约的比较
  4. datagrid获取页面总记录数的方法,datagrid获取页面总记录数为0的解决方法
  5. 计算机联锁软件毕设论文,铁路信号计算机联锁系统()毕设论文.doc
  6. c语言递归求n的阶乘之和,c语言用递归的方法实现1!+2!+3!+4!+.....+n!=?阶乘之和...
  7. python断点_Python断点()
  8. 输入银行卡号匹配银行名称
  9. python爬虫框架论文开题报告范文_论文开题报告框架
  10. STM32F103_study46_The punctual atoms(STM32 The location of all interrupt service functions )
  11. python歌词图表分析_Python可视化图分析毛不易的《入海》,看看听歌的人都在想些什么...
  12. 根据身份证号或营业执照编号取省市区信息
  13. Linux 常见面试题
  14. [数据集][VOC]高质量的目标检测数据集合集(持续更新)
  15. php.ini 关闭输出缓冲,php 输出缓冲 Output Control用法实例详解
  16. Linux framebuffer双缓冲防止闪烁
  17. 采集工商信息的10个经典方法
  18. ThingsBoard安装
  19. 论文翻译七:Adversarial Transfer Learning for Deep Learning Based Automatic Modulation Classification
  20. 如何理解智慧Lora技术

热门文章

  1. Realsense安装使用过程问题汇总
  2. Python配置opencv并在命令行运行
  3. C++类的静态成员变量
  4. python列表删除多个相同元素_Python遍历列表删除多个元素或者重复元素
  5. 后台返回整个html转换成页面链接,利用html5的history.replaceState修改当前页面的URL...
  6. correl函数_函数中的“豪门贵族”【统计函数】
  7. python写日志到文件_python 通过logging写入日志到文件和控制台的实例
  8. linux安装sublime,linux 安装sublime text3
  9. linux修改管理员密码后保存,各类unix和linux管理员密码丢失解决方法
  10. 如何在EDUIS中导出ETL字幕模板_给视频加字幕?这8个工具助力你的短视频创作!...