Spark MLlib机器学习概论
一.什么是机器学习?
什么是机器学习?Herbert Sinmon给“学习”做出了这样的定义:“如果一个系统能够通过执行某个过程而改进性能,这就是学习。”更通俗的理解是:机器学习能够自动地从数据中学习“程序”,而这个程序不是人来编写的。
平面上有两类点,黄色代表类别a,蓝色代表类别b。这时我们希望能够找到平面上的一条曲线,将两个类别的点分成两个平面,使类别a属于平面A,类别b属于平面B。这样一来,对于一个新出现的颜色未知的点x,我们通过查看点落在平面A还是平面B中来判断x属于哪个类别。
当然,这个任务从人的视觉来看似比较容易完成的。人也可以将这个曲线用一个数学表达式来表示,但这个曲线方程是确定的,当观察到的数据发生变化时,需要重新调整方式,因此扩展性并不好。机器能够根据已经观测到的两个类别不同的情况自动给出不同的曲线表达式,这里的曲线就是我们常说的学习到的模型。这是一个有监督学习的典型案例。
这个案例中自动寻找曲线的算法是由SVM程序完成的。如今,机器学习已经被广泛应用于各个领域,例如:
- 图像识别。人脸识别,可以识别图像中人脸的位置。
- 语音识别。将声音转换为文字,例如小米的小爱。
- 文本识别。拼写纠错,搜索引擎大量应用文本挖掘
二.机器学习案例
要估计腾讯大厦的具体高度,需要根据多次测量来估算大厦的精确高度。
测量的具体过程是将卷尺从顶楼抛到地面来读数测量。由于大楼表面凹凸不平,以及风力等原因,每次读到的数据都不太一样。那么,大厦精确的高度应该是多少呢?假设实际高度是193.2米,我们称实际高度为理论值。我们可能永远不知道理论值具体是多少,但可以让估计值尽可能接近这个理论值。
最小二乘法就是一个这样的理论。它定义多次测量值的误差之和为累计误差:
累计误差=∑(观测值-理论值)2
我们用g(x)表示其累计误差,x表示理论值的估计值,xi表示第i次测量,得到数学表达式:
这里xi为已知值,依据最小二乘法可知,当累积误差最小时,我们就得到一个最接近理论值的估计值。这是求函数极值的常见方法。我们对x求导,得到公式:
导数为0时,g(x)取极小值,求解方程得:
估计值等于各次观测值的平均值。
所以,我们日常中使用多次测量求平均值的做法是有严格数学依据的。当然,这个案例比较简单,在机器学习的其它问题中,问题的抽象和求解可能要比这复杂的多。