机器学习实战(基于Scikit-Learn和TensorFlow)——第一章

机器学习的伟大之处

  1. 对于那些现有解决方案需要大量手动调整或者是规则列表超长的问题:通过一个机器学习的算法就可以简化代码,并且提升执行表现。
  2. 对于那些传统技术手段根本无法解决的复杂问题:通过最好的机器学习技术可以找到一个解决方案
  3. 对于环境波动:机器学习系统可以适应新的数据
  4. 从复杂问题到海量数据中获得洞见

机器学习系统的种类的分类方式

  1. 是否在监督下训练
  2. 是否可以动态的进行增量学习
  3. 基于实例学习还是基于模型学习

监督式/非监督学习

  • 种类有:监督式学习、非监督学习、半监督学习和强化学习
  • 在机器学习里面,属性是一种数据结构,而特征则取决于上下文,可能有多个含义,但是通常情况下,特征意味着一个属性加上其值。
  • 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法

最重要的监督式学习的算法:

  • k-近邻算法
  • 线性回归
  • 逻辑回归
  • 支持向量机
  • 决策树与随机森林
  • 神经网络(某些神经网络是无监督的,也可能是半监督的)

无监督式学习

  • 训练的数据都是没有经过标记的

聚类算法

  • k-平均算法
  • 分层聚类分析
  • 最大期望算法

可视化和降维

  • 主成分分析(PCA)
  • 核主成分分析(Kernel PCA)
  • 局部线性嵌入(LLE)
  • t-分布随机近邻嵌入(t-SNE)

关联规则学习

  • Apriori
  • Eclat
  • 聚类:用于分组
  • 可视化算法:可以理解数据是怎么组织以及识别出一些未知的模式
  • 降维:降维的目的在于不丢失太多信息的前提下简化数据。方法是将多个相关的特征合并为一个。(特征提取)
  • 异常检测
  • 关联规则学习: 目的是挖掘大量数据,发现属性之间的有趣联系。

半监督式学习

  • 大量未标记数据和少量的标记数据
  • 大多数的半监督式学习算法是无监督式和监督学习的结合,例如深度信念网络(DBN),它是基于一种互相堆叠的无监督式组件,这种组件叫做“受限玻尔兹曼机”(RBM)

强化学习

  • 强化学习的学习系统(或者称之为智能体)能够观察环境,执行操作,并获得回报,或者是以负面回报的形式获得惩罚。

批量学习与在线学习

批量学习

  • 在批量学习中,系统无法进行增量学习——即必须使用所有可用数据进行训练。如果希望批量学习系统学习新数据,需要在完整的数据集(不仅仅是新数据,还包括旧数据)的基础上重新训练一个新版本的系统。
  • 消耗大量的资源与时间,并且在数据量巨大的时候无法再使用

在线学习

  • 可以循序渐进的给系统提供训练数据,逐步积累学习成果。这种提供数据的方式可以是单独的,也可以是小批量的小数组数据来进行训练。
  • 同时也可以称之为增量学习
  • 在线学习系统的一个重要的参数是其适应不断变化的数据的速度,也就是学习率。如果设置的学习率很高,则会快速适应新的数据。
  • 面临的一个重要的问题:
    • 如果系统输入不良数据,则系统的性能将会逐渐下降
    • 因此需要对输入数据以及系统的学习效率进行监控与处理

基于实例与基于模型的学习

  • 这种分类的方法是看机器学习的方法如何泛化。也就是在预测集上的表现

基于实例的学习

  • 系统先完全记住学习示例,然后通过某种相似度度量方式将其泛化到新的实例上

基于模型的学习

  • 从一组示例集中实现泛化的另一种方法是构建这些示例的模型,然后使用该模型进行预测。

机器学习的主要挑战

坏数据

训练数据的数量不足

  • 对于复杂的问题而言,数据比算法更为重要

训练数据不具有代表性

  • 有采样偏差或者采样噪声

质量差的数据

  • 如果训练集是错误、异常值和噪声,系统将更难检测到底层模式,更不太可能表现良好。所以花时间来清理训练数据是非常值得的投入。

无关特征

  • 需要特征工程来解决
    • 特征选择: 从现有特征中选取最有用的特征进行训练
    • 特征提取:将现有特征进行整合,产生更加有用的特征(类似降维)
    • 通过收集新数据创造新特征

坏算法

训练数据过度拟合

  • 解决方法:
    • 简化模型:可以选择较少参数的模型,可以减少训练集中的属性数量,又或者是约束模型(也就是正则化)
    • 收集更多的训练数据
    • 减少训练数据中的噪声(例如,修复数据错误和消除异常值)
  • 在学习时,应用正则化的程度可以通过一个超参数来控制,超参数是学习算法(不是模型)的参数,因此,它不受算法本身的影响,他必须在训练之前设置好,并且在训练期间保持不变。

训练数据拟合不足

  • 解决问题的方法:
    • 选择一个带有更多参数、更强大的模型
    • 给学习算法提供更好的特征集(更强大的模型)
    • 减少模型中的约束(比如,减少正则化超参数)

测试与验证

交叉检验

  • 可以不需要单独的验证集实现模型比较(用于模型选择和调整超参数)。这节省了宝贵的训练数据

  1. 按照惯例,通常使用希腊字母θ来表示模型参数。

猜你喜欢

转载自blog.csdn.net/qq_36347365/article/details/89523268