没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
前言
这几年机器学习这种从经验学习的软件技术重现光明。在计算机诞生的早期,机器学习的概念已经出
现,各种理论天马行空,限于计算成本而未能普及。随着计算设备的普及,日常生活中越来越多的机
器学习应用,可以说它的成功开始变得习以为常。新应用如雨后春笋一般出现,很多都从机器学习中
获得动力。
在这本书里,我们将看到一些机器学习的模型和算法。我们会介绍一些常用的机器学习任务和模型的
效果评估方法。而这些模型和算法都是通过十分流行的Python机器学习库scikit-learn来完成,里面有
许多机器学习的模型和算法,每个API都简单易用。
本书特点主要有:
内容通俗易懂。本书只需要基本的编程和数学知识
案例实用。本书的案例都很容易上手,读者可以调整后解决自己的问题。
本书内容简介
第
1
章,机器学习基础
(http://muxuezi.github.io/posts/1-the-fundamentals-of-machine-
learning.html),将机器学习定义成一种通过学习经验改善工作效果的程序研究与设计过程。其他章节
都以这个定义为基础,后面每一章里介绍的机器学习模型都是按照这个思路解决任务,评估效果。
第
2
章,线性回归
(http://muxuezi.github.io/posts/2-linear-regression.html),介绍线性回归模型,一
种解释变量和模型参数与连续的响应变量相关的模型。本章介绍成本函数的定义,通过最小二乘法求
解模型参数获得最优模型。
第
3
章,特征提取与处理
(http://muxuezi.github.io/posts/3-feature-extraction-and-
preprocessing.html),介绍了常见的机器学习对象如文本,图像与分类变量的特征提取与处理方法。
第
4
章,从线性回归到逻辑回归
(http://muxuezi.github.io/posts/4-from-linear-regression-to-logistic-
regression.html),介绍广义线性回归模型如何解决分类任务。将逻辑回归模型与特征提取技术结合起
来实现一个垃圾短信分类器。
第
5
章,决策树
——
非线性回归与分类
(http://muxuezi.github.io/posts/5-nonlinear-classification-
and-regression-with-decision-trees.html),介绍了一种回归和分类的非线性模型——决策树。用决
策树集成方法实现了一个网页广告图片屏蔽器。
第
6
章,
K-Means
聚类
(http://muxuezi.github.io/posts/6-clustering-with-k-means.html),介绍非监督
学习的K-Means聚类算法,并与逻辑回归组合起来实现一个照片分类器。
第
7
章,用
PCA
降维
(http://muxuezi.github.io/posts/7-dimensionality-reduction-with-pca.html),介
绍另一种非监督学习任务——降维。我们用主成分分析实现高维数据的可视化,建立一个脸部识别
器。
第
8
章,感知器
(http://muxuezi.github.io/posts/8-the-perceptron.html),介绍一种实时的,二元分类
器——感知器。后面两章都是针对感知器的缺点发展起来的。
第
9
章,从感知器到支持向量机
(http://muxuezi.github.io/posts/9-from-the-perceptron-to-support-
vector-machines.html),介绍支持向量机,是一种有效的非线性回归与分类模型。我们用支持向量机
识别街景照片中的字母。
第
10
章,从感知器到人工神经网络
(http://muxuezi.github.io/posts/10-from-the-perceptron-to-
artificial-neural-networks.html),介绍了人工神经网络,是一种强大的有效的非线性回归与分类模
型。我们用人工神经网络识别手写数字。
机器学习基础
本章我们简要介绍下机器学习(Machine Learning)的基本概念。主要介绍机器学习算法的应用,监
督学习和无监督学习(supervised-unsupervised learning)的应用场景,训练和测试数据的用法,学
习效果评估方式。最后,我们介绍scikit-learn及其安装方法。
自计算机问世以来,计算机可以学习和模仿人类智慧的观点,可谓“引无数英雄竞折腰”。像Arthur C.
Clarke的HAL(Heuristically programmed ALgorithmic computer)
(https://en.wikipedia.org/wiki/HAL_9000)和Isaac Asimov的Sonny
(https://en.wikipedia.org/wiki/I,_Robot_(film))那样的人工智能已经成为共识,通过学习经验获得新知
识和技能的软件程序也变得越来越多。我们用这机器学习程序发现我们会喜欢的新音乐,快速找出我
们想网购的鞋子。机器学习程序让我们通过命令控制手机,让恒温器自动调节温度。比人类更准确的
识别出潦草的手写邮箱地址,更安全的保护信用卡防止诈骗。从新药品调查到从网页寻找头条新闻,
机器学习软件逐渐成为许多产业的核心工具。机器学习已经进入长期以来一直被认为只有人类才能胜
任的领域,如杜克大学UNC(Duke)篮球队输给了北卡(UNC)的体育报道。
机器学习是设计和研究能够根据过去的经验来为未来做决策的软件,它是通过数据进行研究的程序。
机器学习的基础是
归纳(
generalize
)
,就是从已知案例数据中找出未知的规律。机器学习的典型案
例就是垃圾邮件过滤。通过对数千份已经打上是否为垃圾标签的邮件进行观察经验,对新邮件进行过
滤。
人工智能研究领域的计算机科学家Arthur Samuel说,机器学习是“研究如何让计算机可以不需要明确
的程序也能具有学习能力”。在20世纪五六十年代,Samuel开发了下象棋程序。程序的规则非常简
单,要打败专业对手需要复杂的策略,但是通过几千局游戏的训练,程序学会了复杂的策略,可以打
败很多人类棋手。
计算机科学家Tom Mitchell对机器学习的定义更正式,“一个程序在完成任务T后获得了经验E,其表
现为效果P,如果它完成任务T的效果是P ,那么会获得经验E”。例如,假设你有一些图片,每个图
片里是一条狗或一只猫。程序可以通过观察图片来学习,然后它可以通过计算图片正确分类比例来评
估学习效果。
我们将使用Mitchell的定义来组织这一章的内容。首先,我们要介绍经验的类型,包括监督学习和无
监督学习。然后,我们介绍机器学习系统可以处理的常见任务。最后,我们介绍机器学习系统效果评
估方式。
从经验中学习
机器学习系统通常被看作是有无人类监督学习两种方式。监督学习问题是,从成对的已经标记好的输
入和输出经验数据作为一个输入进行学习,用来预测输出结果,是从有正确答案的例子中学习。而无
监督学习是程序不能从已经标记好的数据中学习。它需要在数据中发现一些规律。假如我们获取了人
的身高和体重数据,非监督学习的例子就是把数据点分成组别。一种程序可能是把数据分成男人与女
人,儿童与成人等不同组别。
再假设数据都标记了人的性别。那么,一种监督学习方式就是基于一个人的身高和体重数据来预测这
个人是男是女。后面我们会介绍监督学习与非监督学习的算法和案例。
监督学习与非监督学习可以看作机器学习的两端。还有一些中间类型,称为半监督学习,既包含监督
数据也有非监督数据,这类问题可以看作是介于监督学习与非监督学习之间的学习。半监督机器学习
案例是一种增强学习(Reinforcement Learning),问题可以通过决策来获得反馈,但是反馈与某一个
决策可能没有直接关系。例如,一个增强学习程序学习玩超级玛丽游戏,让它完成一级或超过一定分
数会获得奖励,如果失败一次会受到惩罚。但是,监督反馈与具体要执行的决策无关,避开板栗仔
(Goombas)或者跳过火轮圈。本书讨论的半监督学习将集中于监督与非监督学习,因为这些类型
包括机器学习的绝大多数问题。下一章,我们会介绍监督学习与非监督学习的更多细节。
监督学习是通过一个输入产生一个带标签的输出的经验数据对中进行学习。机器学习程序中输出结果
有很多名称,一些属于机器学习领域,另外一些是专用术语。本书中,我们把输出结果称为响应值
(response variable),不过输出结果还有其他名称,如因变量(dependent variables),回归值
(regressands),标准变量(criterion variables),测得变量(measured variables),解释变量
(explained variables),结果变量(outcome variables),实验变量(experimental variables),
标签(labels),和输出变量(output variables)。同理,输入变量也有很多名称。本书把输入变量
作为特征(features),它们测量的现象作为解释变量(explanatory variables)。输入变量的其他名
称有,预测值(predictors),解释变量(regressors),控制变量(controlled variables),操作便
利(manipulated variables)和显现变量(exposure variables)。响应变量和解释变量可能需要真
实的或不相关的数值。
构成监督学习经验的案例集合称为训练集(training set)。评估程序效果的案例集合称为测试集
(test set)。响应变量可以看成是解释变量构成问题的答案。监督学习问题从不同问题结合中学
习,就是说,监督学习程序输入是正确的答案,需要对类似的问题作出正确的反馈。
机器学习任务
常见的监督式机器学习任务就是分类(classification)和回归(regression)。分类认为需要学会从
若干变量约束条件中预测出目标变量的值,就是必须预测出新观测值的类型,种类或标签。分类的应
用包括预测股票的涨跌,新闻头条是政治新闻还是娱乐新闻。回归问题需要预测连续变量的数值,比
如预测新产品的销量,或者依据工作的描述预算工资水平等。与分类方式类似,回归问题需要监督学
习。
常见的无监督式机器学习任务是通过训练数据发现相关观测值的组别,称为类(clusters)。对应的
任务称为聚类(clustering),通过一些相似性度量方法把一些观测值分成同一类。聚类常用来分析
数据集。比如有一些影评数据,聚类算法可以分辨积极的和消极的影评。系统是不能给类加上“积
极”或“消极”的标签的;没有监督,系统只能通过相似性度量方法把观测值分成两类。聚类分析的应
用场景是用市场产品销售数据为客户分级。通过挖掘一组用户的共同属性,销售人员可以为这类客户
提供定制服务。聚类还被用于互联网广播服务,比如有一些歌曲,聚类算法能够按风格流派把歌曲分
组。通过不同的相似性度量方法,同样的聚类算法可能通过关键词来分组,也可能通过使用的乐器来
分组。
降维(Dimensionality reduction)是另一个常见的无监督学习任务。有些问题可能包含成千上万个解
释变量,处理起来非常麻烦。另外,有些解释变量属于噪音,也有些完全是无边的变量,这些影响都
会降低程序的归纳能力。降维是发现对响应变量影响最大的解释变量的过程。降维可以更容易的实现
数据可视化。如不同面积房子的价格数据可视化,房子的面积可以画在x轴,其价格可以画在y轴,
很容易实现可视化。再加一个解释变量,也很容易可视化房屋价格的回归问题,比如房间里卫生间的
数量可以画在z轴。但是,几千个解释变量的问题是不可能可视化的。
训练数据和测试数据
训练集里面的观测值构成了算法用来学习的经验数据。在监督学习问题中,每个观测值都由一个响应
变量和若干个解释变量组成。
测试集是一个类似的观测值集合,用一些度量标准来评估模型的运行效果。需要注意的是,测试集的
数据不能出现在训练集中。否则,很难评价算法是否从训练集中学到了归纳能力,或者仅仅只是简单
的记录了结果。归纳很好的程序能够用新数据有效地完成任务。相反,一个通过记忆训练数据来学习
复杂模型的程序,可能通过训练集准确预测响应变量的值,但是在处理新问题的时候由于没有归纳能
力会预测失败。
训练集的记忆称为过度拟合(over-fitting)。一个记住了观测值的程序不一定能够很好的完成工作,
因为它在记忆关系和结果的时候,把噪声也同时记住了。平衡记忆能力与归纳能力,或者说是过度拟
合与拟合不够,是许多机器学习算法面对的共同问题。后面的章节,我们会介绍正则化
(regularization),可以用来减轻许多模型的过度拟合程度。
除了训练集和测试集,还有一个观测值集合称为验证集(validation set或 hold-out set),有时候需
要用到。验证集用来调整超参数(hyperparameters)变量,这类变量控制模型是如何学习的。这个
程序也通过测试集来评估其真实的效果,验证集的效果不能用于评估其真实的效果,由于程序参数已
经用验证数据调整过了。通常会把监督学习的观测值分成训练、验证和测试集三部分。各部分的大小
没有要求,按实际观测值的规模来定。一般把50%以上的数据作为训练集,25%的数据做测试集,
剩下的作为验证集。
有的训练集只包含几百个观测值,有的可能有几百万。随着存储成本越来越便宜,网络连接范围不断
扩大,内置传感器的智能手机的普及,以及对隐私数据态度的转变都在为大数据新动力,千万甚至上
亿级别的训练集成为可能。本书不会涉及这类需要上百个机器并行计算才能完成的任务,许多机器学
习算法的能力会随着训练集的丰富变得更强大。但是,机器学习算法也有句老话“放入的是垃圾,出
来的也是垃圾”。一个学习了一大堆错误百出的教材的学生不会比只读一点好书的学生考得好。同
理,对一堆充满噪声、没有关联、或标签错误的数据进行学习的算法,也不会比只学习一小部分更有
代表性的训练集的算法效果更好。
许多监督学习的训练集都是手工准备的,或者半自动处理。建一个海量监督数据集需要耗费许多资
源。好在scikit-learn有些数据集,可以让开发者直接验证自己的模型。在开发阶段,尤其是训练集不
够的时候,交叉验证(cross-validation )的方法可以用相同的数据对算法进行多次训练和检验。在
交叉验证中,训练数据是分成N块的。算法用N-1块进行训练,再用最后一块进行测试。每块都被算
法轮流处理若干次,保证算法可以在训练和评估所有数据。下图就是5块数据的交叉验证方法:
剩余154页未读,继续阅读
资源评论
绝不原创的飞龙
- 粉丝: 1w+
- 资源: 1091
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功