这是本系列的第二篇,也是机器学习概览的下半部分,主要内容如下所示:

文章目录

  • 1. 机器学习的主要挑战
    • 1.1 训练数据量不足
    • 1.2 没有代表性的训练数据
    • 1.3 低质量的数据
    • 1.4 不相关的特征
    • 1.5 过拟合
    • 1.6 欠拟合
  • 2. 测试和评估
  • 3. 小结

1. 机器学习的主要挑战

在介绍基于模型学习算法的流程的时候,对于预测结果不好的问题分析,主要说了是数据问题还是模型问题,这同时也就是机器学习的效果不好的两个主要原因,即错误的数据和错误的算法。

1.1 训练数据量不足

第一个问题就是训练数据的数量问题,这是非常重要的问题。

因为即使是简单的问题,一般也需要数千的样本,这还是因为简单的问题一般采用简单的算法就可以解决,对于复杂的图像或语音问题,通常需要数百万的样本,特别是如果采用现在非常热门的深度学习算法,比如卷积神经网络模型,这些复杂的模型如果没有足够的数据量支持,非常容易陷入过拟合的情况。

实际上更多数量的训练集也是为了获得更有代表性的数据,能够学习到这类数据的所有特征。

但是,应该注意到,小型和中型的数据集仍然是非常常见的,获得额外的训练数据并不总是轻易和廉价的,所以不要抛弃算法。

1.2 没有代表性的训练数据

无论采用基于实例还是基于模型的学习,让训练数据对新数据具有代表性是非常重要的。如果训练集没有代表性,那么训练得到的模型就是不可能得到准确性的模型,比如人脸识别中,模型没有学习到某个人最明显的代表性的特征,比如高鼻梁或者没有眉毛等突出特征,那么模型对这个人的识别率就不会很高。

使用具有代表性的训练集对于推广到新案例是非常重要的。但是做起来比说起来要难:如果样本太小,就会有样本噪声(即会有一定概率包含没有代表性的数据),但是即使是非常大的样本也可能没有代表性,如果取样方法错误的话。这叫做样本偏差。

1.3 低质量的数据

低质量的数据指的是数据有错误、带有过多噪声或者是出现异常值等的数据,这种数据会影响系统整体的性能,因此,数据清洗对于构建一个机器学习系统或者一个机器学习项目来说都是必不可少的步骤。

对于这些低质量的数据,通常可以按照如下做法处理:

  • 如果一些实例是明显的异常值,最好删掉它们或尝试手工修改错误;
  • 如果一些实例缺少特征(比如,你的 5% 的顾客没有说明年龄),你必须决定是否忽略这个属性、忽略这些实例、填入缺失值(比如,年龄中位数),或者训练一个含有这个特征的模型和一个不含有这个特征的模型,等等。

1.4 不相关的特征

不相关的特征对于整个机器学习系统是有着反作用的效果,训练数据必须包含足够多的相关特征、非相关特征不多的情况下,才能训练出一个性能不错的模型。机器学习项目成功的关键之一是用好的特征进行训练。这个过程称作特征工程,包括:

  • 特征选择:在所有存在的特征中选取最有用的特征进行训练。
  • 特征提取:组合存在的特征,生成一个更有用的特征(如前面看到的,可以使用降维算法)。
  • 收集新数据创建新特征。

1.5 过拟合

上述四种情况都是坏数据的情况,接下来是两种算法问题,也是机器学习最常见的两种算法方面的问题,过拟合和欠拟合。

过拟合就是指算法模型在训练集上的性能非常好,但是泛化能力很差,即在测试集上的效果却很糟糕的情况。比如下图,采用一个高阶多项式回归模型来预测生活满意度和人均 GDP 的关系,很明显看出来,这个模型过拟合了训练数据,其预测效果并不会达到在训练数据上这么好的效果。

通常对于比较复杂的模型,比如深度神经网络,它能够检测和识别到数据中比较细微的规律和特征,但是如果训练集包含噪声,或者训练集数量太少(数量太少会引入样本噪声),这种情况下,模型同样会学习这种噪声,从而导致模型的泛化能力的下降。

一般解决过拟合的方法有:

  • 简化模型,这包括了采用简单点的模型、减少特征数量以及限制模型,即采用正则化;
  • 增加训练数据
  • 减小训练数据的噪声,即数据清洗,比如修正数据错误和去除异常值等

其中正则化方法是比较常用的方法,它的作用就是限制模型,不让模型过于复杂,从而降低过拟合的风险或者是缓和过拟合的程度。常用的正则化方法是 L2 和 L1 正则化。正则化方法通常会采用一个超参数来控制其限制模型的强度。超参数是一个学习算法的参数(而不是模型的)。这样,它是不会被学习算法本身影响的,它优于训练,在训练中是保持不变的。如何调节超参数也是构建一个机器学习算法模型非常重要的一个步骤,也是让性能能够进一步提升的做法。

1.6 欠拟合

欠拟合和过拟合刚好相反,它就是模型的性能非常差,在训练数据和测试数据上的性能都不好。

通常也是因为模型过于简单,没有能够很好学习到数据的有效的相关的特征,解决方法有:

  • 选择一个更强大的模型,带有更多参数
  • 用更好的特征训练学习算法(特征工程)
  • 减小对模型的限制(比如,减小正则化超参数)

2. 测试和评估

当训练好一个机器学习模型后,接下来就需要对模型进行预测和评估,判断得到的模型是否可用,是否还能进行提升,并进行错误分析等操作。

一般在训练模型前,我们会将数据集分成两个集合,分别是训练集和测试集,通常 8:2 的比例,也就是 80% 的数据作为训练集,剩余是测试集。然后采用训练集训练模型,在测试集上用按照学习的问题采用对应评估指标评估模型的性能,比如分类问题,一般就是采用分类的准确率或者错误率作为评估的标准。

但这种划分数据集的方法,存在一个问题,就是如果需要调节超参数,比如对于正则化的超参数、学习率等,继续采用测试集来进行评估不同超参数对模型性能的影响,这会导致最后在测试集上测试得到性能最好的模型,实际上是过拟合了测试集,那么模型的泛化能力也不会太好。

所以,为了解决这个问题,我们还需要为调节超参数划分一个专门的数据集,测试集应该是用于测试最终得到的模型的性能。因此,我们再划分一个叫做验证集的数据集。

一种做法是可以将所有数据按照一定比例划分为训练集、验证集和测试集,比如按照 6:2:2 的比例划分;当然更通常的做法是采用交叉验证:训练集分成互补的子集,每个模型用不同的子集训练,再用剩下的子集验证。一旦确定模型类型和超参数,最终的模型使用这些超参数和全部的训练集进行训练,用测试集得到推广误差率。

3. 小结

最后我们总结下:

  1. 机器学习的四个主要挑战是

    • 数据量太少
    • 数据问题,包括没有代表性数据和质量差
    • 不相关特征
    • 模型过拟合或者欠拟合
  2. 过拟合的解法方法有:
    • 简化模型,包括采用更简单的模型和更少的参数
    • 正则化方法降低模型的复杂度
    • 收集或者采用更大的数据集
    • 数据清洗,去除噪声和异常值等
  3. 欠拟合的解决方法:
    • 采用更强大的模型,包含更多的参数和学习能力
    • 降低正则化的强度
    • 使用更好的特征提取方法,即使用或者改善特征工程的工作
  4. 采用交叉验证方法进行超参数条件和模型的选择

以上就是本文的主要内容和总结,欢迎关注我的微信公众号–机器学习与计算机视觉或者扫描下方的二维码,和我分享你的建议和看法,指正文章中可能存在的错误,大家一起交流,学习和进步!

机器学习入门系列(2)--机器学习概览(下)相关推荐

  1. 机器学习入门系列(1)--机器学习概览(上)

    最近打算系统学习和整理机器学习方面的知识,会将之前看的 Andrew Ng 在 course 课程笔记以及最近看的书籍<hands-on-ml-with-sklearn-and-tf>结合 ...

  2. 机器学习入门系列(1)--机器学习概览

    本文比较长,八千字,建议收藏起来慢慢看! 此外,这其实是合并公众号最开始写的两篇文章,整合在一起了. 机器学习入门系列(1)--机器学习概览(上) 机器学习入门系列(2)--机器学习概览(下) 主要参 ...

  3. 机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)

    上一篇机器学习入门系列(1)–机器学习概览简单介绍了机器学习的一些基本概念,包括定义.优缺点.机器学习任务的划分等等. 接下来计划通过几篇文章来介绍下,一个完整的机器学习项目的实现步骤会分为几步,最后 ...

  4. 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程

    机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程) 目录(?)[+] 一多变量的线性回归 二批处理 三特征缩放 四正规方程 五多变量非线性回归 一.多变量的线性回归 在#机 ...

  5. 机器学习入门系列三(关键词:逻辑回归,正则化)

    机器学习入门系列三(关键词:逻辑回归,正则化) 目录(?)[+] 一逻辑回归 逻辑回归 假设表示 决策边界 代价函数 其他优化方法 多元分类 二正则化 一.逻辑回归 1.逻辑回归 什么是逻辑回归问题, ...

  6. 机器学习入门系列四(关键词:BP神经网络)

    机器学习入门系列四(关键词:BP神经网络) 标签: 机器学习神经网络 2016-01-12 15:28 80人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 机器学习(3) 作者同类文章X 版 ...

  7. 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)

    机器学习入门系列一(关键词:单变量线性回归,梯度下降法) 如上图所示,我们的目标是希望通过这些数据得到城市人口数和利润可能的对应关系,并可以通过城市人口数(利润)来预测它的利润(城市人口数),在这里我 ...

  8. (视频+图文)机器学习入门系列-第15章

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

  9. (视频+图文)机器学习入门系列-第13章 降维

    机器学习入门系列,黄海广老师主讲.本站将持续更新,ppt.代码.课后习题见文末. 本系列的目录 01.引言 02.回归 03.逻辑回归 04.朴素贝叶斯 05.机器学习实践 06.机器学习库Sciki ...

最新文章

  1. 【Rollo的Python之路】Python 同步条件 学习笔记 Event
  2. Windows 95 诞生 25 周年
  3. 服务器 新文件病毒扫描,部署 Seafile 专业版服务器
  4. 使用Exceptionless记录日志
  5. spark java 逻辑回归_逻辑回归分类技术分享,使用Java和Spark区分垃圾邮件
  6. python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法
  7. 帝国cms怎么搭建python环境_Python 库/模块的pip安装和IPython的使用
  8. codeM 2018 资格赛
  9. 前途,路应该怎么走?
  10. 同时安装PyQt4和PyQt5之sip版本区分
  11. AD15使用出现的小问题
  12. kotlin入门最容易教程一(最全,最详细)
  13. 2022-04-13 分布式任务调度Quartz
  14. Unrecognized Windows Sockets error: 10106: create解决方案
  15. 软件外包项目如何承接
  16. 工具---AI绘图:将文本文字描述转换成图片
  17. 婚庆行业发展报告,2021怎么精准引流?
  18. iOS 真机调试 No profile for team xxxx matching xx found
  19. 双硬盘+双系统引导出问题的另类解决方法
  20. c语言重画清屏函数,写了个小程序,一直会闪屏,用的gotoxy函数,求大神教

热门文章

  1. linux path环境变量起什么作用,shell基础(5)PATH环境变量的作用和使用方法
  2. python快速排序函数_python算法-快速排序
  3. lisp中怎样调取图形_CAD的lisp程序已加载,怎样绘图?
  4. 【STC15库函数上手笔记】4、USART串口
  5. 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包
  6. 【机器视觉学习笔记】双线性插值实现图片任意角度旋转(C++)
  7. vue 按A-Z字母排序数据
  8. Python爬虫利器一Requests库的用法
  9. MySQL视图查询报错:Prepared statement needs to be re-prepared
  10. linux查看文件和目录大小(du)