《机器学习实战(第二版)》学习记录-01
第一章
什么是机器学习?
机器学习是一门通过编程让计算机从数据中进行学习的科学
为甚么使用机器学习
- 程序更短、更易维护、更精确;
- 善于处理对于传统方法而言太复杂或没有已知算法的问题
数据挖掘:使用机器学习方法挖掘大量数据来帮助发现不太明显的规律。例如:使用垃圾邮件过滤器训练了足够多的垃圾邮件后,用它列出垃圾邮件预测器的单词和的单词组合,有可能会发现不引人注意的关联或新趋势。
机器学习适用于:
- 有解决方案(但方案需大量人工微调或遵循大量规则)的问题:能够提供简化代码和相对传统方法更好的性能
- 传统方法难以解决的复杂问题:最好的机器学习技术也许可以找到解决方案。
- 环境有波动:机器学习散发可以适应新数据
- 洞察复杂问题和大量数据。
机器学习系统的类型
- 是否哎人类监督下训练:
- 有监督学习
- 无监督学习
- 半监督学习
- 强化学习
- 是否可以动态地进行增量学习
- 在线学习
- 批量学习
- 是简单地将新的数据点和已知的数据点进行匹配,还是像科学家那样,对训练数据进行模式检测然后建立一个预测模型
- 基于实例的学习
- 系统用心学习示例,让后通过使用相似度度量方式来比较新实例和已经学习的实例(或他们的子集),从而泛化新实例。
- 基于模型的学习
- 构建示例集的泛化模型,使用该模型进行预测。
- “模型”一词可以指代:
- 指模型的一种类型,例如线性回归
- 一个特定的模型架构,一个输入和一个输出的线性回归
- 最后可用于预测的训练模型,一个输入和一个输出,且具有参数值的线性回归
- 基于实例的学习
这些标准之间不相互排斥,可以按照喜欢的方式进行组合,例如:一个在线的、基于模型的有监督学习系统。
模型选择包括:选择模型的类型,完全指定他的架构。
训练一个模型意味着运行一种寻找模型参数的算法,使其最适合训练数据(希望对新的数据做出好的预测)
属性和特征:
- 属性:一种数据类型(例如:车辆里程)
- 特征:取决于上下文,可能有多个含义,通常特征意为一个属性加上其值(里程=1000)
- 在有监督学习中,提供给算法的包含所需解决方案的训练集成为标签
- 通过给定一组特征来预测一个目标数值,回归。回归算法也可用于分类,反之亦然;
- 降维的目的是:在不丢失太多信息的前提下简化数据。将多个相关特征合并为一个,这个过程叫做特征提取。
- 大多数半监督学习是无监督学习和有监督学习的结合
- 在线学习中,模型经过训练并投入生产环境,然后随着新数据的进入而不断学习
典型机器学习项目
- 研究数据
- 选择模型
- 使用训练数据进行训练(即前面学习算法搜索模型参数值,从而使成本函数最小化的过程)
- 应用模型对新示例进行预测(称为推断)
机器学习的主要挑战
- 训练数据的数量不足
- 大部分机器学习算法需要大量的数据才能正常工作。
- 训练数据不具有代表性
- 对于将要泛化的新示例来说,训练数据一定要非诚具有代表性,不论基于实例还是基于模型。
- 低质量数据
- 训练集满是错误、异常、噪声,系统将很难检测底层模式、更不会有良好表现;
- 某些实例明显是异常情况,直接丢弃或手动修改错误,会有很大帮助
- 某些实例缺少部分特征,
- 无关特征
- 只有训练数据里包含足够多的相关特征以及较少的无关特征,系统才能够完成学习。
- 特征工程:
- 特征选择(从现有特征中选择最有用的特征进行训练)
- 特征提取(将现有特征进行整合,产生更有用的特征)
- 通过收集新数据创建新特征
- 过拟合训练数据
- 过拟合:模型在训练数据上表现良好,但在泛化时却不尽人意。
- 当模型相对于训练数据的数量和噪声都过于复杂,会产生过拟合,可能用到的解决方案
- 简化模型:可以选择较少的参数的模(例如:选择线性模型而不是高阶多项式模型),也可减少驯良数据中的属性数量,或者约束模型。
- 收集更多的训练数据
- 减少训练数据中的噪声(修复数据中的错误和清除异常值)
- 正则化过程:通过约束模型使其更简单,并降低过拟合的防线。
- 超参数:是学习算法(不是模型)的参数,不受算法本身的影响。
- 欠拟合训练数据
- 欠拟合的产生通常是因为对于底层的数据结构而言,模型过于简单。
- 解决方法:
- 选择一个带有更多参数、更强大的模型
- 给学习算法提供更改好的特征集(特征工程)
- 减少模型中的约束(例如:减少正则化超参数)
纵观全局
- 机器学习是关于如果让机器更好的处理某些特定任务的理论,它从数据中学习,而无需清晰的编码规则
- 机器学习系统有很多分类
- 在一个机器学习项目中,你从训练集中采集数据,然后将数据交给学习算法来计算。
测试和验证
一旦训练了一个模型,还需要评估它,必要时做出一些调整。
通常将一个数据集中80%的数据用于训练,20%的用于测试。但具体情况取决于数据集中的数量大小。
超参数调整和模型选择
评估一个模型很简单:用测试集就行了
对测试集的泛化误差进行多次度量,并调整模型和超参数来的到拟合测试集的最佳模型,该模型对于新的数据不太可能有良好表现。
- 保持验证:保持训练集中的一部分呢,以评估几种候选模型并选择最佳模型。新的保留集称为验证集(开发集)。
- 在简化的训练集(减去验证集的训练集)上训练具有各中超参数的多个模型
- 选择在验证集上表现最优的模型
- 保持验证后,在完成的训练集(包含验证集的训练集)上训练模型,
- 在测试集上评估这个模型以获得泛化误差的估计值
数据不匹配
验证集和测试集必须与在生产环境中使用的数据具有相同的代表性