《机器学习实战》-第一章

机器学习是一门能够让编程计算机从数据中学习的计算机科学(或艺术)。


机器学习系统的种类:

  • 监督式学习、无监督式学习、半监督式学习和强化学习
  • 在线学习和批量学习
  • 基于实例的学习和基于模型的学习

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

  • K-近邻算法(k-Nearest Neighbors)
  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 支持向量机(Support Vector Machines, SVM)
  • 决策树和随即森林(Decision Trees and Random Forests)
  • 神经网络(Neural networks)

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

  • 聚类算法
    • k-平均算法(k-Means)
    • 分层聚类分析(Hierarchical Cluster Analysis, HCA)
    • 最大期望算法(Expectation Maximization)
  • 可视化和降维
    • 主成分分析(PCA)
    • 核主成分分析(Kernel PCA)
    • 局部线性嵌入(LLE)
    • t-分布随机近邻嵌入(t-SNE)
  • 关联规则学习
    • Apriori
    • Eclat

  • 半监督学习:通常是大量未标记数据和少量的标记数据。
  • 强化学习:它的学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行操作,并获得回报(reward),或者是以负面回报的形式获得惩罚。必须自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。
  • 批量学习:在批量学习中,系统无法进行增量学习——即必须使用所有可用数据进行训练。如果希望批量学习系统学习新数据,需要在完整数据集(不仅仅是新数据,还要包裹旧数据)的基础上重新训练一个新版本的系统,然后停用旧版本,用新系统取而代之。
  • 在线学习:循序渐进第给系统提供训练数据,逐步积累学习成果。这种提供数据的方式可以是单独的,也可以采用小批量(mini-batches)的小组数据来进行训练。整个过程通常是离线完成的,在线学习很容易让人产生误解,可以将其视为增量学习。

泛化的主要方法有两种:基于实例的学习和基于模型的学习。

  • 基于实例的学习:系统先完全记住学习示例,然后通过某种相似度度量方式将其泛化到新的实例。
  • 基于模型的学习:从一组示例集中实现泛化的另一种方法是构建这种示例的模型,然后使用该模型进行预测。

典型的机器学习项目过程:

  • 学习数据
  • 选择模型
  • 使用训练数据进行训练(即前面学习算法搜索模型参数值,从而使损失函数最小化的过程)
  • 应用模型对新示例进行预测(称为推断),祈祷模型的泛化结果不错。

为了很好地实现泛化,至关重要的一点,对于将要泛化的新示例来说,训练数据一定要非常有代表性。


一个成功的机器学习项目,关键部分是提取出一组好的用来训练的特征及,这个过程叫做特征工程。

  • 特征选择:从现有特征中选择最有用的特征进行训练。
  • 特征提取:将现有特征进行整合,产生更有用的特征(正如前文提到的,将为算法可以提供帮助)。
  • 通过收集新数据创造新特征。

当模型相对于训练数据的熟练个噪声都过于复杂时,会产生过拟合。可能的解决方案如下:

  • 简化模型:可以选择较少参数的模型(例如,选择线性模型而不是高阶多项式模型),可以减少训练数据中的属性数量,又或者是约束模型。
  • 收集更多的训练数据。
  • 减少训练数据中的噪声(例如,修复数据错误和消除异常值)。

通过约束模型使其更简单,并降低过拟合的风险,成为正则化
在学习时,应用正则化的程度可以通过一个超参数来控制。超参数是学习算法(不是模型)的参数,因此,本身不受算法的影响,必须在训练之前设置好,并在训练模型期间保持不变。


欠拟合与过拟合相反,对于下层的数据结构,可能设置的模型太过简单。解决这个问题的主要方式有:

  • 选择一个带有更多参数、更强大的模型。
  • 给学习算法提供更好的特征及(特征工程)。
  • 减少模型中的约数(例如,减少正则化超参数)。

练习

1.如何定义机器学习?

  • 机器学习是一门能够让编程计算机从数据中学习的计算机科学。

2.机器学习在哪些问题上表现突出?是否能提出四种类型?
机器学习非常利于:

  • 不存在已知算法解决方案的复杂问题;
  • 需要大量手动调整或是规则列表超长的问题;
  • 创建可以适应环境波动的系统;
  • 帮助人类学习(例如数据挖掘)。

3.什么是被标记的训练数据集?

  • 被标记的训练集是指包含每个实例所期望的解决方案的训练集。

4.最常见的两种监督式学习任务是什么?

  • 回归和分类。

5.举出四种常见的无监督式学习任务。

  • 聚类、可视化、降维和关联规则学习。

6.要让一个机器人在各种未知的地形中行走,会使用什么类型的机器学习算法?

  • 强化学习可能更适合复杂的一系列机器学习人类的行走动作。

7.要将顾客分成多个组,会使用什么类型的算法?

  • 不知道分组的情况下,选择聚类算法;
  • 知道具体的群组,选择分类算法。

8.垃圾邮件检测的问题是监督式学习还是无监督式学习?

  • 典型的监督式学习问题:将邮件和它们的标签(垃圾邮件或非垃圾邮件)一起提供给算法。

9.什么是在线学习系统?

  • 在线学习系统可以进行增量学习,与批量学习系统正好相反。使得它能够快速适应不断变化的数据和自动化系统,并且能够在大量的数据上进行训练。

10.什么是核外学习?

  • 核外算法可以处理计算机主内存无法应对的大量数据。它将数据分割成小批量,然后使用在线学习计数从这些小批量中学习。

11.什么类型的学习算法依赖相似度来做出检测?

  • 基于实例的学习系统。

12.模型参数与学习算法的超参数之间有什么区别?

  • 模型有一个或多个参数,这些参数决定了模型对新的给定实例做出怎样的预测(例如,线性模型的斜率)。学习算法试图找到这些参数的最佳值,使得该模型能够很好地泛化至新实例。
  • 超参数是学习算法本身的参数,不是模型的参数(例如,正则化参数)

13.基于模型的学习算法搜索的是什么?最常使用的策略是什么?它们如何做出预测?

  • 基于模型的学习算法搜索使模型泛化最佳的模型参数值。
  • 通常通过使损失函数最小化来训练这样的系统,损失函数衡量的是系统对训练数据的预测有多坏。
  • 学习算法最后找到的参数值就是最终得到的预测函数,只需将实例提供给这个预测函数即可进行预测。

14.机器学习的四个主要挑战?

  • 数据缺乏;
  • 数据质量差;
  • 数据不具有代表性;
  • 特征不具信息量;
  • 模型过于简单对训练数据欠拟合;
  • 模型过于复杂对训练数据过拟合。

15.如果你的模型在训练数据上表现很好,但是应用在新的实例上的泛化结果却不好,是怎么回事?能提出三种可能的结局方案么?

  • 过度拟合训练数据(在训练数据上运气太好)。可能的解决方案有:获取更多数据;简化模型(选择更简单的算法、减少使用的参数或特征数量、对模型进行正则化);减少训练数据中的噪声。

16.什么是测试集,为什么要使用测试集?

  • 在模型启动至生产环境之前,使用测试集来估算模型在新实例上的泛化误差。

17.验证集的目的是什么?

  • 验证集用来比较不同模型,可用来选择最佳模型和调整超参数。

18.如果使用测试集调整超参数会出现什么问题?

  • 有过拟合的风险,最后测量的泛化误差过于乐观,导致最后的模型性能低于预期。

19.什么是交叉验证?为什么比验证集更好?

  • 通过交叉验证计数,可以不需要单独的验证集实现模型比较(用于模型选择和调整超参数),节省了宝贵的训练数据。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值