编程小白的机器学习笔记系列之一——最简学习模型:线性感知器

什么是机器学习

让我们来想象一下这样一个美好的场景,我们把大批的数据和资料输入电脑,然后启动程序,让电脑去分析这些数据和资料。而我们则可以泡一杯咖啡,读书听音乐,等待电脑完成学习。一旦电脑完成学习,它就可以习得某些特定的技能,从而帮助我们完成一些特定的任务。这样的事情究竟能否实现?若是在十多年前,稍微有点电脑知识的人一定会以为这是痴人说梦,可是今天,越来越多的人开始相信这是可行的,并且我们已经在这个方向上看到了曙光。

那么,什么样的问题可以用机器学习来解决?

存在一种带规律的模式

机器学习的本质就是学习一种规律模式,如果没有模式存在,那就没有所谓的学习。

这种模式不可以用数学模型来表示

如果一种规律模式可以用数学模型精确的表达出来,那么我们就可以通过数学模型来算出结果,也就不需要机器学习了。

我们有大量这方面的历史数据

机器学习是通过大量的数据来习得某种规律模式,没有数据就没有学习的素材。

一个简单的例子

为了更好的理解机器学习的过程,让我们来看一个最最简单的数据分类的例子。 在此我们采用了网上非常流行的鸢尾花数据。

该数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。—— [百度百科]

我们此处仅需要用到该数据集的部分数据,下图显示该数据集中Setosa,Versicolour花瓣长和宽的分布。

由图可见,Setosa和Versicolour这两种鸢尾花的花瓣尺寸分布在两个完全不同的区域,可以通过一条直线将之区分,这种情形被称之为线性可分割。

那么我们如何通过机器学习算法让机器可以正确地画出这条直线呢?在此,我们引入一个最简的线性分类学习模型 - 感知器 (perceptron)。

最简线性分类模型 - 感知器 (perceptron)

感知器的算法非常的简单,我们给每个输出参数给出一个权重值(w)与之相乘,并将之求和。根据其和的正负符号来做出分类。

那么机器学习算法是如何来获得这样一组权重值(w)? 下面的流程图描述了感知器的学习过程。

感知器的输出是+1或-1,将其与实际分类比较, 如果不相符则执行操作w = w + y*x实际上这个过程就是不断地调整线性分割的这条直线的斜率,以适应输入的数据。

用感知器实现鸢尾花分类

我们使用感知器来对鸢尾花进行分类,这里有一个问题。权重值的初值取(-1,1)区间里的一个随机数,不可以取0。如果权重取0的,根据公式

则y_也必为0,而不是1或-1中的一个值,根据流程图中的描述,计算机就无法确定学习算法中应该如果更新权重值,从而使学习过程失效。

下图展示了这个算法的学习过程,和每一次更新权重值后,分割线所处的位置,经过55次迭代后的最终分割线显示成红色。

从上图可见,这个学习算法是非常粗糙的,因此你会发现调整步幅经常过大,今后我们讲到的其他算法在这方面会有很多改进。

参考书目

Yaser S. Abu-Mostafa & Malik Magdon-Ismail & Hsuan-Tien Lin (2012)Learning From Data A Short CourseUnited States of America: AMLbook.com

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G00LNP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券