着“机器学习”这几个字天天霸占新闻头条,热爱学习的你,也上网搜索了一下“机器学习模型”,5分钟后就被各种术语吓坏了。想入门,不如先熟悉下面的这几个算法,这些算法能解决数据科学中的很多问题。
监督学习 vs 非监督学习
基本上,所有的机器学习问题都可以分为监督学习和非监督学习。
在监督学习中,算法会获得一个数据库作为输入,我们也知道正确的输出该是什么样子。回归分析和分类问题都属于监督学习。
在非监督学习来中,我们也不知道正确的输出该是什么样子,而是从数据中寻找结构。聚类算法是非监督学习的代表。
下面我们来看几个真实的例子。
例子1
假设你是个地产商。你有以往售出楼房的数据--总面积、有几间卧室等等——以及它们的售价。你拿到一幢新房的时候,就能根据手头的数据,预测新房的售价。这是一个监督学习问题,更具体来说,是一个回归问题。
例子2
假设你是一个医生。你有很多人的健康数据——各项生理指标、遗传因素、以及他们是非患有某一种疾病的测试结果。测试结果可以用二进制表示为:1代表患有疾病,0代表未患有疾病。当你遇到一个新的测试者,输入他的数据,你就能预测他是否患有疾病。因为输出的形式是已知的(1或者0),这也是监督学习,更具体来说,是分类问题。
例子3
假设你是一个市场经理。你有一些客户的资料——客户年龄、购买产品、购买金额等——你希望找出哪些客户属于相近的群体,可能给他们一些特殊优惠。以上的客户资料可以作为算法的输入,不过你不知道输出会是什么样的,因此这是非监督学习。
现在,我们来看看更具体的算法。
回归
回归不只是一种监督学习技术,而是一个包含很多中技术的重要大类。其中心要素是,我们能根据一些输入变量,预测目标变量。回归中最常见的就是线性回归和逻辑回归。
线性回归
输入变量和目标变量的关系是一条直线。例如,我们有两个输入变量 X1 和 X2,目标变量为 Y,其关系的数学表达为:
Y = a x X1 + b x X2 + c
如果已知 X1 和 X2 的值,我们可以调整 a、b 和 c 的值,让 Y 值与实际结果尽可能接近。
举个例子。鸢尾花数据库统计了不同类型的花中,花瓣与花萼的大小。我们可以使用 R 软件实现一个线性分析,基于花瓣的长 (PetalLength) 和宽 (PetalWidth),预测花萼的大小 (SepalLength)。
SepalLength = a x PetalWidth + b x PetalLength + c
线性回归的结构如下图所示。图中的点代表原始数据,蓝线代表最适合的回归线,a = -0.31955,b = 0.54178,c = 4.19058。现在,我们能根据新的花瓣长、宽信息,预测花萼的大小了。
逻辑回归
逻辑回归的大意与线性回归类似,不同的是,逻辑回归不是一条直线。
逻辑回归的数学表达如下:
Y = g(a x X1 + b x X2)
其中 g( ) 是一个逻辑方程。
由于逻辑函数的特性,Y 是[0,1]之间的一个连续值,可以看成是一个事件发生的可能性。
举个例子。我们有一个汽车的数据库,包括汽油消耗量、汽车设计的各项参数以及32个汽车型号的表现性能。如果已知一辆汽车的 V/S 和耗油量(mpg),我们能预测这辆车是自动变速(am = 0)还是手动变速(am = 1)的可能性:
am = g( a x mpg + b x vs + c)
所需代码如下:
结果显示住以下图表中。其中,点代表原始数据,蓝色线代表最适合的逻辑回归线, a = 0.5359,b = -2.7957, c = -9.9183。
如图所示,逻辑回归的输出只在[0,1]的范围内。
决策树
决策树分为回归和分类两种,可以用在监督学习问题中。
决策树模拟人们做决定的过程,因此非常符合直觉,可以见下图:
基于这样的一个决策树,算法可以决定按照哪一条路走下去。
来一个例子:我们使用 readingSkills 数据库,包括学生的信息以及他们的成绩。我们可以基于多项信息——包括测试成绩、年龄、甚至学生的鞋子尺码等——我们把学生分类为母语(nativeSpeaker = 1)和非母语(nativeSpeaker = 0)。
要用 R 完成这项预测,我们得先安装 party 安装包。
如下所示,第一个分岔标准是测试成绩,因为这与要预测的目标变量非常相关;而鞋子尺码根本就没被考虑过,因为这对预测语言能力毫无帮助。
聚类算法
现在,我们来看看属于非监督学习方法之一的聚类算法。
如果我们有一些初始数据,我们可以把它们分组,每一组的数据都会与其他组不同。我们要学习的算法叫做“k-平均”算法,是最常见的聚类方法之一。
我们再使用之前用过的鸢尾花数据库,将其中的信息制成下图:
x 轴是花瓣长度,y 轴是花瓣宽度。
依据花瓣的数据,我们将数据分为三组,也就是说此处 k = 3。
总体来说,k-平均算法的过程包含以下几步:
1. 初始步骤:在 k = 3 的情况下,算法随机选择3个点,作为每一个组的中心点;
2. 聚类分组:算法会一个个处理数据点,将每一个点分配到最近的组;
3. 移动中心点:分配分组后,每一个组的中心点移动到组内所有点到平均值。
第2、3步会一直重复,直到分组情况不再有变化。用 R 实现很简单,以下是所需的代码:
要注意的是,在任何聚类问题中,要解读分组的意义需要具备这个领域内的专业知识。如果你不懂植物学,你可能不会发现算法把花分成了三个类别:Setosa、Versicolor 和 Virginica。
我们可以根据花的类别再进行一次分组,可以看到非常相似:
算法
总结
我们讨论了回归(线性和逻辑)、决策树和 k-平均聚类。每一种算法都有哪些优点?遇到问题的时候该选择哪一种?
首先,如果选对了适合的问题,这些算法可以很强大。
其次,你得知道你想要的是什么,是计算强度、计算时间还是可解读性?
如果只考虑算法的预测能力,那么以下总结了每一种算法的优缺点:
线性回归
优点:
- 容易执行和解读;
- 如果是实数,就能提供预测。
缺点:
- 有很强的统计假设;
- 数据的等分散性,也就是说,不管预测变项分数高低,效标变项的估计标准误均一样大;
- 残差的独立性。
2. 逻辑回归
优点:
- 方差低;
- 提供了结果的可能性。
缺点:
- 偏见高。
3. 决策树
优点:
- 视觉上很容易理解;
- 能轻松处理类别信息;
- 很适合与特征轴平行的问题。
缺点:
- 容易过度拟合。
4. k-平均
优点:
- 很适合大量的数据;
- 容易执行和解读。
缺点:
- 对于超球聚类表现不佳;
- 结果取决于选择什么样的 k。
好,现在可以选一种算法,应用在你的机器学习问题上了!
作者简介
Eleni Markou 是数据服务平台 Blendo 的数据分析师,她的更多文章可见 https://www.blendo.co/blog/。
文章原标题《3 Machine Learning Algorithms You Need to Know》,作者: Eleni Markou,译者:炫。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛