返回 登录
0

机器学习速成教程

原文: 机器学习速成教程
作者: Carlos E. Perez
译者: KK4SBB
欢迎技术投稿、约稿、给文章纠错,请发送邮件至heyc@csdn.net

本文来自加州大学伯克利分校机器学习实验室。作者们用通俗易懂的语言讲解了什么是机器学习、回归与分类的概念、损失函数的类型以及梯度下降方法,希望读者能够理解最基础的机器学习算法,并将其应用于实际项目中。

什么是机器学习?

机器学习并不是一个深奥的概念。实际上,大部分机器学习的算法都仅仅在做一项任务:划线。换句话说,机器学习的本质就是画一条线来区分样本数据。什么意思呢?作者举了几个例子。

分类

假设我们有一堆苹果和橘子的图片。我们可以从图片中获取水果的颜色和大小信息,我们想根据这些信息将图片分为苹果和橘子两类。大多数机器学习算法的第一步是获取标记过的训练数据。在这个例子中,我们需要先收集大量已经被标记过的图片,每张图片属于苹果或者橘子。然后,从这些图片中抽取出颜色和尺寸信息,寻找它们与苹果或者橘子的联系。这些信息在二维平面上的表示如图所示:

上图中,红色的X表示苹果,橙色的X表示橘子。或许你已经从数据中发现了某些模式。表示苹果的X多位于坐标轴的左侧方向,因为大多数的苹果是红色,而表示橘子的X多位于坐标轴的右侧方向,因为大多数的橘子是橙色。因此,希望我们的算法也能学到这种模式。

针对上述问题,我们的目标是让算法在两组X点数据之间画一条线,称为决策边界。下图所示即为一条决策边界线:

就是这么简单的一条直线。然而,更复杂的算法最终可能得到一条更复杂的边界线,比如:

我们假设按照已标记的训练数据画出的分界线也能区分其它图片中的水果的种类。换句话说,若我们让算法从样本数据中学会了区分苹果和橘子,那么此经验就能得到泛化,可以区分从未出现过的图片中的水果是苹果还是橘子。比如,若现在有一张含有水果的图片,即下图中的蓝色X点,按照决策边界的划分,这个水果属于橘子:

这就是机器学习算法的威力。首先获取一批训练数据,然后跑一个机器学习算法生成决策边界,然后根据学到的模式来预测新的数据。

当然,区分苹果和橘子实在是太容易了。我们可以把这种策略套用在更复杂的问题上,比如预测肿瘤是良性还是恶性,判断邮件是否属于垃圾邮件,或者说分析安全系统的指纹。以上问题都属于机器学习问题的一个子领域,归为分类问题,都是用线条来区分数据。机器学习还有一类子问题称作回归问题,它是画若干线条来描述数据。

回归

假设我们已有了标记过的训练数据。举个具体的例子,我们有很多房屋面积与房价的数据。若把这些数据画在图上,它们的分布是这样的:

图上的每个X点表示一套房屋。尽管数据有一些扰动(即呈散点状分布),我们还是能观察到某些模式:随着房屋面积增大,房价也越来越贵。因此,我们希望让算法能够根据房屋的面积来预测房屋的价格。

通过观察数据,我们从直觉上可以发现数据点分布在一条斜线的附近。于是,我们就假设所有房屋的价格和面积都会落在这条斜线的附近。比如,某套房屋处于图上绿色X点的概率会远大于处于图上红色X点的概率。

现在,我们就可以按照房屋的面积,预测任意一套房屋的大致价格了。画一条穿过所有数据点的直线,它与其它点的距离尽可能接近。这条线就是一个预测器,根据房屋面积预测房价。我们可以认为这条线表示了相同面积的房屋的均价。

图片描述
预测器并不一定是线性的。它可以是任意类型的函数或者模型,比如二次函数、正弦函数等等。不过,模型并不是越复杂越好,不同的模型适用于不同的问题。

在回过头来看房价预测的问题,我们不禁要问,为何只能输入一个变量?我们可以把尽可能多的信息引入模型中,比如城市的物价水平、房屋质量、建筑材料等等。若引入了当地物价水平,三个变量可以在三维空间中如此表示:

图片描述

同样,我们还是能训练一个预测器。只是这个预测器不再是一条直线,而是一个平面,因为输入的变量由一个变成了两个。

图片描述

至此,已经介绍了一个和两个变量的预测器。在实际的机器学习问题中,变量的个数往往达到成百上千。虽然我们无法想象超过三维空间的场景,但这并不妨碍我们训练预测器。

预测器

我们之前提到了,预测器的种类有许多种。房价预测的例子用的是线性模型。线性预测器的数学公式如下所示:

图片描述

各个x表示一维不同的输入变量,比如房屋面积或是物价水平,c则表示对应维度的权重值。某个权重值越大,说明该维特征越重要。我们假设房屋面积是预测房价的重要指标,那么算法就会增加面积这一维度的权重系数。相反,如果训练数据的某个维度表示房屋内插座的数量,那这个维度的权重值相对来说会比较低,因为插座的数量对房价的影响不会太大。

我们在预测房价时只用到了房屋面积这一个变量,所以用公式表示为:y(x)=c1x+c0

换种形式表示:y=mx+b

y(x)是输出结果,也就是房价,x表示特征,即房屋的面积。c0是y轴的截距,即房屋的基础价格。

那么,机器学习的算法是如何确定c2和c1的取值呢?

损失函数

训练参数的关键在于如何刻画预测器预测结果的“好坏”。这里我们用到了损失函数。损失函数的返回值越小,说明预测器的预测准确率越高。我们需要找到使得损失值最小的预测器。下图展示了三种不同的预测器:

预测器a和c的预测准确率并不高,因此损失函数应当返回较大的值。预测器b对数据的拟合程度很好,损失函数的返回值也应该相应的减小。

损失函数究竟长得什么样呢?损失函数的种类非常多,我们这里选用一种非常常见的类型,称作均方误差

把“均方误差”这四个字一一拆解。“误差”的含义就是数据点到预测器直线的垂直距离,即(xi−yi)。如下图所示,每段红色虚线的长度表示该点的误差值。

对于点 (xi,yi)和预测器y(x),xi表示房屋的面积,yi表示房屋的价格,平方误差等于:

e=(y(xi)−yi)2

然后,我们将所有点的误差值相加,然后求出平均平方误差,得到所谓的均方误差:

图片描述

梯度下降

若是在空间内画出损失函数的图形,则类似下图所示:

图片描述

损失函数的最小值点显而易见。但是,目前我们只用到了房屋面积这一维特征。实际上,几乎所有的机器学习算法使用的特征都不只一维。在某些情况下,用到的特征会高达上亿维度,根本没办法用图表示一亿维的空间!

为了求解高维损失函数的最小值,我们用到了梯度下降的算法。梯度下降法是求解无约束优化问题最简单和最古老的方法之一。它是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。它适用于求解任何维度的损失函数的最小值。当找到了损失函数的最小值,也就意味着找到了预测器的参数值。

小结

读完上文,相信你对机器学习能找到了一点感觉。希望它没有你想象的那么难。只要记住机器学习本质上就是用一条线划分训练数据。在分类问题里,这条线就是决策边界,在回归问题里,这条线就是预测器。而这条线又是用梯度下降法寻找损失函数的最小值得到的。

事实上,机器学习的本质就是模式识别。机器学习算法通过划分训练数据来学习模式,然后把这些模式泛化到新的数据上。那么问题来了,机器学习真的是在“学习”吗?


【CSDN_AI】热衷分享 扫码关注获得更多业内领先案例
图片描述

评论