【读书笔记】【机器学习实战】第一章:机器学习概览

阅读书籍为《Hands-On Machine Learning with Scikit-Learn & TensorFlow》王静源等翻译的中文译版《机器学习实战,基于 Scikit-Learn 和 TensorFlow》

1. 什么是机器学习?
Arthur Samuel, 1959 : 机器学习研究如何让计算机在不需要明确程序下也能具备学习的能力。
本书观点:机器学习是一门能够让系统从数据中学习的计算机科学。
机器学习的核心任务:从样本中推理。

2. 为什么要机器学习?
传统编程方法无法及时适应快速变化的外界需求和数据。称为环境波动—机器学习系统可以做到自动化的及时适应新数据。
对于某些复杂问题传统技术手段无法解决-机器学习技术可以找到一个解决方案,比如语音识别。
现有解决方案需要大量手动调整或存在规则列表超长问题-机器学习的算法可以有效简化代码,提成执行表现,有效降低维护及更改的成本。
机器学习还可以从海量的数据中获得新的洞见,帮助人们更好的理解问题。

3. 机器学习的分类?
按照是否在人类监督下学习分为:监督学习,半监督学习,无监督学习,强化学习;
按照每次学习的样本数量分为:批量学习和增量学习;
按照匹配实例还是模式检测分为:基于实例学习和基于模式学习;

4. 各类学习的定义?

  1. 监督学习

      1. 定义:训练数据标签已知的机器学习任务。
      2. 两个任务:分类(回答是否),回归(预测, 回答多少)。
      3. 主要算法有6种:
     	 1.K-近邻算法(KNN)
     	 2.线性回归(Linear Regression)
     	 3.逻辑回归(Logistic Regression)
     	 4.支持向量机(SVM, Support Vector Machines)
     	 5.决策树和随机森林(Decision Trees and Random Forests)
     	 6.神经网络(Neural Network, 比如自动编码器和受限玻尔兹曼机)
    
  2. 无监督学习

      1. 定义:训练数据标签不知道的机器学习任务。
      2. 任务:聚类(用于分组),可视化和降维(用于简化数据),
      异常检测(用于检测新实例是否正常),关联规则学习 (用于发现属性之间
      的联系)
      4. 主要算法有3大类9小种:
     	 1.聚类算法:K-Means(k-平均算法),分层聚类分析(HCA
     	 Hierarchical Cluster Analysis), 最大期望值算法(Expectation
     	 Maximization)。
     	 2.可视化和降维算法:主成分分析(PCA),核主成分分析(Kernel
     	 PCA),局部线性嵌入(LLE), t-分布随机近邻嵌入(t-SNE)。
     	 3.关联规则学习算法:Apriori, Eclat。
    
  3. 半监督学习

      1. 定义:训练集为大量未标记数据和少量标记数据的机器学习任务。
      2. 主要算法:大部分半监督学习的算法是监督学习和无监督学习算法结合。
      	 深度信念网络是基于一种相互堆叠的无监督式组件(受限玻尔兹曼机)。
      	 而受限玻尔兹曼机使用无监督的方式训练,然后用监督学习方式对整个系统
       进行调节。
    
  4. 强化学习

    1.定义:强化学习的学习系统(被称为智能体),可以观察环境,做出选择,执行操作,
    并获得反馈(奖励或者惩罚)。智能体为获得最大奖励而不断调整策略的过程称为强化学习。
    2.强化学习应用的例子:AlphaGo下围棋就是一个典型的强化学习的例子。
    
  5. 批量学习
    系统一次性加载了所有可用数据进行训练。因为耗费资源较大,一般离线完成(先训练系统学习,学习过程终止后投入生产环境)。如需学习新数据,则需要整合新数据和旧数据为新训练集重新训练系统,将原始系统取而代之。
    由于耗时费力,对于实时性要求不高,且数据量较小的项目可以进行定期更新策略,从而缓慢的适应数据变化。
    一旦项目数据巨大,变化快速批量学习则不能解决问题。

  6. 在线学习(增量学习)
    与批量学习相比,可以循序渐进的为系统提供训练数据,逐步积累学习成果。可以采用小批量的小组数据来进行训练,快速又轻便。
    对于在线学习系统更准确的应称之为增量学习系统。因为训练的过程和批量学习相似都是离线完成。
    增量学习因其小批量加载数据计算训练,可以节省大量的计算资源和存储空间。
    对于超大数据集情况-增量学习系统也可以适时的称为核外学习(主存储器每次只加载一定数量的数据,不断重复直到完成所有数据的计算。)

  7. 基于实例学习
    系统通过死记硬背的方式完全记住训练数据,然后通过某种相似度衡量方式将其泛化到新的实例中。
    泛化: 将学习到的知识,应用在新实例上的过程。
    个人认为KNN就是很好的基于实例学习的例子。通过判断目标与已知实例的相似性来进行预测或分类。

  8. 基于模型学习
    与基于实例不同,基于模型的学习,需要先构建训练数据的模型,然后系统通过模型对新实例进行预测。
    个人理解线性回归算法是很好的基于模型学习的例子。通过训练出一个线性模型对新实例进行泛化。

5. 机器学习的挑战?

  • 坏数据

      1.训练数据不足;
      2.训练数据不具有代表性;
      3.训练数据质量差:无效值,空值,错误值(数据清洗解决);
      4.无关特征过多(特征工程解决);
    
  • 坏算法

     	1.算法相对太复杂(过拟合):
     		a:从算法入手:简化模型复杂度,选择参数较少的模型,减少训练数据的属性数量,又或者
     		约束模型等。
     		b:从数据入手:收集更多的训练数据 。减少训练数据中的噪声(错误和异常值)。
     	2.算法相对太简单(拟合不足):
     		a:从算法入手:选择一个有更多参数的更强大的模型。
     		b:从数据入手:减少模型中的约束,提供好的特征集等。
    

    名词解释:
    超参数:学习算法(而不是模型)的参数,不受算法本身影响,在训练开始之前设定好并在训练期间保持不变的参数。
    正则化: 通过约束模型使模型更简单,降低过度拟合的风险,比如在一元线性模型拟合数据时y = ax + b;有两个参数a和b,那么我们的自由度就是2,分别控制斜率和高度,我们约束其中某一个参数则自由度就会变为1,模型就会比自由度2时更难拟合数据,从而降低了过度拟合的风险。控制自由度的过程就称为正则化。在解决拟合不足的情况是,我们减少一个约束的意思就是为其增加一个参数,使其拟合更加容易从而减少拟合不足的风险。

6. 机器学习的测试与评估 ?

  1. 一般情况下,一个数据集中我们会选择80%的数据用来训练模型,20%的数据用来检验模型。
  2. 有些情况下,为了获取更精准的效果我们不断调整参数在训练集中获得了较高的评价但应用在测试集上效果却不尽人意。这个问题的产生是因为,过度的调参使得模型只是无限的适应了训练集的数据,没有很好的普遍性。解决的办法是除了训练集和测试集,在划分的时候多增加一个检验集。用来检验是否过分匹配训练集。 由于数据珍贵,多划分检验集略微浪费。我们将引入交叉验证的方法。
  3. 交叉验证:将训练集划分为若干互补子集,然后每个模型和都通过这些子集的不同组合来进行训练,之后用剩余子集进行验证。这样一来,一旦模型和超参数都被选定,最终模型会带着这些超参数对整个训练集进行一个训练,最后在测试集上测量泛化误差也就是准确性。完美的没有浪费的应用到了每一个数据。

7. 一些名词
泛化误差就是准确性;
在线学习并不在线,就是增量学习;
指导噪声就是标错的数据,把对的标错,把错的标对的那种;
归纳偏倚:由于学习是一个不适定问题,单靠数据本身不足以找到解,因此我们应该做一些特别的假设,以便找到数据的唯一解。个人感觉这个假设就是归纳偏倚,而这个归纳偏倚就是我们通常说的模型。如果有同学有别的理解,欢迎评论留言。

你可能感兴趣的:(读书笔记,机器学习)