补充:
我想写《Sklearn 与 TensorFlow 机器学习实用指南》的学习笔记,基于一、机器学习概览 - 【布客】Sklearn 与 TensorFlow 机器学习实用指南 第二版,感谢译者
本文和原文的区别:
本文会更精简、系统地表述书中概念,会对书中未介绍的陌生概念加以注释
后续会持续更新所有章节,对书中的所有代码,每行我都会添加注释
有问题欢迎留言,正文开始~
1. 什么是机器学习?
定义:
机器学习是通过编程让计算机从数据中进行学习的科学(和艺术)。
机器学习是让计算机具有学习的能力,无需进行明确编程。 —— 亚瑟·萨缪尔,1959
计算机程序利用经验E学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则称为机器学习。 —— 汤姆·米切尔,1997
(例如垃圾邮件分类,任务T就是标记新邮件是否是垃圾邮件,经验E是训练数据,性能P需要定义:例如,可以使用正确分类的比例。这个性能指标称为准确率,通常用在分类任务中。)
2. 为什么使用机器学习
机器学习的优势:
(1)针对需要进行大量手工调整或需要拥有长串规则才能解决的问题:
机器学习能够简化代码、提高性能
(2)对于环境经常波动的问题:
机器学习能够自动地处理规则,从而更精简、准确且易于维护
(3)机器学习善于处理对于传统方法太复杂或是没有已知算法的问题
(4)机器学习能够帮助人类进行学习,可能会发现不引人关注的关联或新趋势,增进对问题的理解(使用机器学习方法挖掘大量数据,可以发现并不显著的规律,这称作数据挖掘)
3. 机器学习系统的类型
机器学习有多种类型,可以根据如下规则进行分类:
维度1:是否在人类监督下进行训练、训练时监督的量和类型
分为4类:监督 VS 非监督 VS 半监督 VS 强化学习
监督:
定义:用来训练算法的训练数据包含了答案(称为标签)
举例一个监督任务:分类,例如垃圾邮件过滤器,用许多带有归类(垃圾邮件或普通邮件)的邮件样本进行训练,过滤器能对新邮件进行分类。
重要的监督学习算法:例如 K 近邻算法、线性回归、逻辑回归、支持向量机(SVM)、决策树和随机森林、神经网络
非监督:
定义:训练数据是没有加标签的。
举例一个非监督学习任务:可视化算法:给算法大量复杂的且不加标签的数据,算法输出数据的 2D 或 3D 图像,利用图像可以明白数据的组织模式,探索其中的规律
重要的非监督学习算法:例如 聚类、可视化和降维、关联性规则学习
半监督:
定义:训练数据通常是大量不带标签数据加上小部分带标签数据。
举例一个半监督任务:图片存储服务,你上传了所有家庭相片,它就能自动识别到人物 A、B等,这是算法的非监督部分(聚类)。现在系统只需要你告诉它他们是谁,比如爸爸、妈妈,算法就可以命名每张照片中的每个人,特别适合搜索照片。
重要的半监督学习算法:例如 深度信念网络
强化学习:
定义:学习系统(也称为智能体,agent)可以对环境进行观察、选择和执行动作,并获得奖励作为回报(负奖励就是惩罚)。它必须自己学习哪个是最佳方法(称为策略,policy),以得到长久的最大奖励。
举例一个强化学习任务:机器人运行强化学习算法以学习如何行走
维度2:是否能够从导入的数据流进行持续学习
分为2类:在线学习 vs 批量学习
在线学习:
定义:数据实例分成小批量,持续地进行训练,所以系统可以动态地学习收到的最新数据。
在线学习的学习速率:高学习速率(快速适应新数据,遗忘旧数据更快),低学习速率(学新数据更慢,但对新数据中的噪声或没有代表性的数据点结果不那么敏感)
优点:实时性(股票)、对存储要求不那么高
缺点:坏数据的入侵会导致系统性能下降,需要密集监测,发现异常之后,对异常数据作出反应,或者快速回滚模型版本
批量学习:
定义:必须用所有可用数据进行训练,然后部署在生产环境。也称为离线学习
缺点:不能快速适应变化。大量数据会占用大量时间和计算资源。只是使用已经学到的策略
维度3:是否只是通过简单地比较新的数据点和已知的数据点,还是在训练数据中逐渐建立一个预测模型,就像科学家根据经验(处理过的数据)形成一套处理逻辑(模型)
分为2类:基于实例学习 vs 基于模型学习
基于实例学习:
定义:系统先用记忆学习案例,然后使用相似度测量推广到新的例子
举例一个基于实例学习的任务:
垃圾邮件识别:首先学习带标签的邮件数据,当我们判断新邮件是否是垃圾邮件时,需要测量新邮件和垃圾邮件的相似性。一个(简单的)相似度测量方法是统计两封邮件包含的相同单词的数量。
基于模型学习:
定义:从样本集进行归纳,建立这些样本的模型,然后使用这个模型进行预测(通常需要定义一个损失函数来评价模型的好坏,同时搜寻模型最适合的参数值,以期在新数据上得到好的预测结果)
举例一个基于模型学习的任务:
生活满意度和人均 GDP的关系,我们猜测越有钱越开心,于是我们猜测它是一个线性关系(二次线性模型)
上述维度可以组合,形成一个适用于你的问题的机器学习模式
4. 机器学习的主要挑战
训练数据量不足
没有代表性的数据
使用具有代表性的训练集对于推广到新案例至关重要,即使数据量很大,也有可能缺少代表性数据。同时要注意取样方法,避免产生样本偏差(例如用报纸刊登的方式取样,就只能得到看报人的样本)。
低质量数据
定义:训练集中的错误、异常值、噪声或部分实例缺少某些属性等。
处理方式:忽略这个属性、忽略这些实例、填入缺失值(比如,年龄中位数)、训练一个含有这个特征的模型和一个不含有这个特征的模型,等等。
不相关特征
定义:不相关的特征对模型的判断产生了影响(例如判断GDP对国民幸福指数的影响,在样例中,首字母Z开头的国家幸福指数都偏高些,模型可能会认为只要以Z开头,幸福指数都会高,显然是不合理的)。因此,我们需要训练数据包含足够多的相关特征、少量的非相关特征,才能达到好的效果。
处理方式:选择合适的特征、通过降维等方式组合成新的特征、收集新数据新特征。(这个过程也称也称特征工程)
过度拟合数据
表现:在训练集上表现好,在测试集上表现不好
原因:如果训练集有噪声,或者训练集太小(太小会引入样本噪声),模型就会去检测噪声本身的规律。很明显,这些规律不能推广到新实例,因为这个规律只是训练集数据中偶然出现的,但是模型不能判断这个规律是真实的、还是噪声的结果。
处理方式:限定模型,以让它更简单并且降低过拟合的风险(这个过程称之为正则化,regularization)。我们介绍一个概念-超参数,它是学习算法的参数(而不是模型的),可以调控正则化的度,调节超参数会在接下来的章节中介绍
欠拟合
表现:在训练集、测试集上表现都不好
原因:模型过于简单
解决办法:
选择一个更强大的模型,带有更多参数,用更好的特征训练学习算法(也称特征工程),减小对模型的限制(比如,减小正则化超参数)
5. 测试和确认(模型的评估和微调)
将数据分为训练集和测试集:
用训练集进行训练,在测试集上进行测试。
计算模型的推广错误:
对新样本的错误率称作推广错误(或样本外错误),通过模型对测试集的评估,可以预估这个错误。
Question:我们需要验证模型的性能,但测试集只能用一次(如果测试集上多次测量了推广误差率,会导致模型基于测试集数据来调整超参数),怎么办?
通常的办法是使用交叉验证:训练集分成互补的子集,每个模型用不同的子集训练,再用剩下的子集验证。一旦确定模型类型和超参数,最终的模型使用这些超参数和全部的训练集进行训练,最后用测试集得到推广误差率。

1223

被折叠的 条评论
为什么被折叠?



