机器学习的基础知识

机器学习实战

开一个专题写一个机器学习的python实战练习,这个专题所有博文的知识都来自《机器学习实战:基于scikit-learn、keras和Tensorflow》

  1. 机器学习的基础知识(已完成)
  2. 端对端的机器学习项目(已完成)
  3. 训练深度神经网络
  4. 使用TensorFlow自定义模型和训练
  5. 使用TensorFlow加载和预处理数据
  6. 使用卷积神经网络的深度计算机视觉
  7. 使用RNN和CNN处理序列
  8. 使用RNN和注意力机制进行自然语言处理
  9. 使用自动编码器和GAN的表征学习和生成学习
  10. 强化学习
  11. 大规模训练和部署TensorFlow模型


一、机器学习是什么?

机器学习是一门通过编程让计算机从数据中进行学习的科学。
机器学习适用于:

  1. 有解决方案(但解决方案需要进行大量人工微调或遵循大量规则)的问题:机器学习算法通常可以简化代码,相比传统代码有更好的性能
  2. 传统方法难以解决的复杂问题:最好的机器学习技术也许可以找到解决方案
  3. 环境有波动:机器学习算法可以适应新数据
  4. 洞察复杂问题和大量数据

二、机器学习系统的类型

1.是否在人类监督下训练

主要可以分为四类:有监督学习、无监督学习、半监督学习和强化学习。

1.1 有监督学习

算法需要给出解决方案的训练集,称为标签
重要的有监督学习算法:

  • K-近邻算法
  • 线性回归
  • 逻辑回归
  • 支持向量机(SVM)
  • 决策树和随机森林
  • 神经网络

1.2 无监督学习

无监督学习的训练数据未经标记,就是指只给出一堆数据,但不给出对应的解决方案。
重要的无监督学习算法:

  • 聚类
  • k-均值算法
  • DBSCAN
  • 分层聚类分析(HCA)
  • 异常检测和新颖性检测
  • 单类SVM
  • 孤立森林
  • 可视化和降维
  • 主成分分析(PCA)
  • 核主成分分析
  • 局部线性嵌入(LLE)
  • t-分布随机近邻嵌入(t-SNE)
  • 关联规则学习
  • Apriori
  • Eclat

1.3 半监督学习

数据集包含很多未标记的数据和很少已标记的数据。大多数半监督学习算法是无监督算法和有监督算法的结合。例如,深度信念网络(CBN)基于一种互相堆叠的无监督组件RBM。受限RBM以无监督方式进行训练,然后使用有监督学习技术对整个系统进行微调。

1.4 强化学习

智能体能够观察环境,做出选择,执行动作,并获得回报(或是以负面回报的形式获得惩罚),它自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。例如许多机器人利用强化学习来学习如何行走。

2.是否可以动态地进行增量学习

2.1 批量学习

在批量学习中,系统无法进行增量学习——即必须使用所有可用数据进行训练,这需要大量时间和计算资源,通常都是离线完成的。

2.2 在线学习

在在线学习中,你可以循序渐进地给系统提供训练数据,逐步积累学习成果。这种提供数据地方式可以是单独的,也可以采用小批量地小组数据进行训练。
在线学习系统的一个重要参数是学习率:适应不断变化的数据的速度。
如果设置的学习率很高,那么系统将会迅速适应新数据,但同时也会很快忘记旧数据。学习率很低,学习会更缓慢,同时对新数据中的噪声或者非典型数据点(离群值)的序列更不敏感。

3.泛化的方式

3.1 基于实例的学习

系统用心学习示例,然后通过使用相似度度量来比较新实例和已经学习的实例(或它们的子集),从而泛化新实例。

3.2 基于模型的学习

构建这些示例的模型,然后使用该模型进行预测。
步骤如下:

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

三、测试与验证

了解一个模型对于新场景的泛化能力的唯一办法就是让模型真实地去处理新场景。
将数据分割成两个部分:训练集和测试集。应对新场景的误差率称为泛化误差(或样例外误差),通过测试集来评估你的模型,就可以得到对这个误差的评估。这个估值可以告诉你模型在处理新场景时的能力如何。
训练误差低,泛化误差很高,那说明模型对于训练数据存在过拟合。
通常将 80% 的数据用于训练,而 20% 供测试用。但是,这取决于数据集的大小,如果数据包含1000万个实例,那么保留1%意味着包含100000个实例作为测试集,可能足够很好地估计泛化误差。

1. 超参数调整和模型选择

对测试集的泛化误差进行多次度量,并且调整模型和超参数来拟合那个测试集的最佳模型。这意味着该模型对于新的数据不太可能有良好的表现。
解决此问题的常见方法称为保持验证:你只需要保持训练集的一部分,以评估几种候选模型并选择最佳模型。新的保留集称为验证集,有时也称为验证集,有时也称为开发集(dev set)。具体来说,你可以在简化的训练集(即完整训练集减去验证集)训练具有各种超参数的多个模型,并且选择在验证集上表现最佳的模型。在此保持验证后,在完整的训练集(包括验证集)上训练最佳模型,这就是你的最终模型。最后,你在测试集上评估这个模型以获得泛化误差的估计值。
但如果验证集太小,模型评估就不再精确,如果验证集太大,那么剩余训练集比完整训练集小得多。所以可以使用许多小验证集重复进行交叉验证。然后对模型的所有评估求平均值,缺点是训练时间长。

2. 数据不匹配

在某些情况下,很容易获得大量训练数据集,但这些数据可能不能完全代表将用于生产环境的数据。
在这种情况下,最重要的规则是:验证集和测试集必须与生产环境中使用的数据具有相同的代表性。如果模型在验证集上的性能较差,那么产生原因有可能是模型过拟合了训练集,也可能是由于训练集与生产环境的数据不匹配,具体哪一种原因不清楚。
一种解决方案是把一些训练集放到train-dev(训练开发)集合中。用训练集进行训练后,可以在train-dev上对其进行评估。如果模型表现良好,则不会过拟合训练集。如果在验证集上表现不佳,那么问题一定来自数据不匹配。可以常是通过数据处理,使得两者数据匹配后再重新训练模型。相反,如果模型在train-dev上表现不佳,则它一定在训练集上过拟合了,因此应该尝试简化或者规范化模型,获取更多的训练数据并清理训练数据。

练习题

1.如何定义机器学习?
机器学习是关于构建可以从数据中学习的系统。学习意味着在一定的性能指标下,在某些任务上会变得越来越好。
2.机器学习在哪些问题是表现突出,你能给出四种类型吗
机器学习非常适合没有算法解答的复杂问题,需要手动调整的规则,适应不断变化的环境的系统,数据挖掘
3.什么是被标记的训练数据集
带标签的训练集是一个包含每个实例所需解决方案的训练集
4.最常见的两种监督学习任务是什么
回归和分类
5.你能举出四种常见的无监督学习任务吗?
聚类、可视化、降维和关联规则学习
6.要让一个机器人在各种位置的地形中行走,你会使用什么类型的机器学习算法?
强化学习
7.要将顾客分成多个组,你会使用什么类型的算法
如果不知道如何定义组,可以使用聚类;如果知道你想要拥有哪些组,可以利用分类算法(有监督学习)
8.你会将垃圾邮件检测的问题列为监督学习还是无监督学习?
有监督学习
9.什么是在线学习系统?
在线学习系统能够进行增量学习。这使得它能够快速适应不断变化的数据和自动系统
10.什么是核外学习?
可以处理无法容纳在计算机主内存中的大量数据。核外学习算法将数据分成小批量,并使用在线学习技术从这些小批量数据中学习。
11.什么类型的学习算法依赖相似度来做出预测?
基于实例的学习系统
12.模型参数与学习算法的超参数之间有什么区别?
一个模型具有一个或多个模型参数,这些参数确定在给定一个新实例的情况下该模型将预测什么。一种学习算法试图找到这些参数的最优值,使得该模型能很好地泛化新实例。超参数是学习算法本身的参数,而不是模型的参数
13.基于模型的学习算法搜索的是什么?它们最常使用的策略是什么?它们如何做出预测?
搜索模型参数的最优值。通过最小化成本函数来训练这样的系统。为了进行预测,我们使用学习算法找到的模型参数值,再将新实例的特征输入到模型的预测函数中。
14.你能给出机器学习中的四个主要挑战吗?
数据的缺乏、数据质量差、数据的代表性不足、信息量不足、模型过于简单而欠拟合训练数据以及模型过于复杂而过拟合数据。
15.如果模型在训练数据上表现很好,但是应用到新实例上的泛化结果却很糟糕,是怎么回事?能给出三种可能的解决方案吗?
可能会过拟合数据。解决方案:获取更多数据、简化模型或减少训练数据中的噪声
16.什么是测试集,为什么要使用测试集
测试数据集用于再启动生产环境之前,估计模型在新实例上产生的泛化误差。
17.验证集的目的是什么?
用于比较模型。这样就可以选择最佳模型并调整超参数。
18.什么是train-dev集,什么时候需要它?怎么使用?
党训练集与验证数据集中使用的数据不匹配时,可以如用train-dev(该数据集接近模型投入生产环境后使用的数据)。train-dev集是训练集的一部分(模型未在其上训练过)
19.如果你用测试集来调超参数会出现什么错误?
过拟合测试集,而且所测得的泛化误差会过于乐观(你可能会得到一个性能比预期差的模型)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值