凌云时刻 · 技术
导读:从大型主机到PC,再到无人驾驶,到机器人,我们正处在技术急速发展的裂变拐点。如何获得数据,如何让数据产生价值,进而影响决策?曾经需要花费数天才能完成的数据处理,现在只要几分钟,这全归功于机器学习算法。从今天起,我们将开始连载机器学习的算法笔记系列,本篇为该系列的第一篇。
作者 | 计缘
来源 | 凌云时刻(微信号:linuxpk)
机器学习的定义
非正式定义:在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。
正式定义:对于一个计算机程序来讲,给他一个任务T和一个性能测量方法P,如果在经验E的影响下P对T的测量结果得到了改进,那么就说该程序从E中得到了学习。
举个机器下棋的例子,经验E对应着程序不断和自己下棋的经历,任务T是下棋,性能测量方法P可以是它在和人类棋手对弈的胜率。如果说机器与人类棋手对应的胜率不断提高,那说明机器从自己和自己下棋的过程中得到了学习。
机器学习四大内容简述
监督学习(Supervised Learning)
学习理论(Learning Theory)
无监督学习(Unsupervised Learning)
强化学习(Reinforcement Learning)
监督学习(Supervised Learning)
如上图所示,描述了假定城市区域的房屋面积与售价的关系。横坐标是房屋面积,纵坐标是售价。如果我想在横轴随意取一个面积,就希望知道它的售价,那么就需要一个方法通过面积确定售价。图中的方法是通过一条标准线来找到对应的售价。那么这条线要如何得来呢?
在这个示例中,我们已经给出了若干房屋面积和售价的数据集,即已经告知了机器若干问题和答案。机器通过这些数据集中面积和售价的关系,自我学习从而得出这条线,这种学习类型就属于监督学习类型。
因为这种场景中的数据集取值都是连续的,所以这类问题都可以归为线性回归的问题。
如上图所示,描述了肿瘤大小与恶性良性的关系。横坐标是肿瘤的大小,纵坐标表示恶性或良性,与连续的房屋售价不同的是,这里的纵坐标只有两个值0或1。
这个示例中,我们同样给出了一组肿瘤大小与恶性良性的数据集,我们希望机器通过这组答案数据集自我学习然后有能力通过肿瘤大小判断出恶性或良性。当然这里只是示例,实际中会有很多其他的横轴指标值用于判断学习。
该示例中这种离散的数值问题可以归为分类的问题。
任何具体的方式方法背后都有一个或多个理论进行支撑,机器学习也不例外。
这一大块的内容贯穿整个机器学习,包括人工智能和机器学习正式诞生之前的定理证明,理解为什么学习型算法是有效的。每种学习型算法需要多少训练数据,比如上面的房屋售价示例到底需要多少房屋的样本。以及机器学习渗透在我们生活中的真实应用场景等等。
如果我现在有一组不知道任何信息的数据集,然后需要机器进行分析然后给出这组数据集中的几种共性或者相似的结构,将其聚类,这个方式就称之为无监督学习。即我们不会提供机器问题和答案,只提供数据,需要机器自我学习和分析找出共性进行聚类。
无监督学习的应用场景很多,当下流行的各种P图软件都或多或少的用到了这类算法,比如图的修复功能,抠图功能,像素化等一些滤镜都是对像素的聚类。还有声音驳杂功能,从嘈杂的声音中提取出有用的声音等。
强化学习是机器学习的精髓,更贴近机器的自我学习,用在不能通过一次决策下定论的情形中,比如分析病人肿瘤病情的例子,通过监督学习,我们给定了确切的答案,不是良性就是恶性,即我们做的决策要么对,要么错。但在强化学习中,在一段时间内会机器做出一系列决策。比如我们编写一个程序让一架无人机做出一系列特技表演动作,这种场景就不是一次决策能实现的了的。
那么强化学习究竟是什么?在它背后有一个称为回报函数的概念。比如我们训练宠物狗坐下、握手等行为,每当小狗做出的正确的行为,我们都会给小狗奖励,比如摸摸头进行鼓励或者给一块小骨头。渐渐的小狗就知道做出怎样的行为有奖励,怎样的行为没有奖励,即学会了坐下和握手的行为。这就很类似强化学习的理论,我们需要找到一种方式,来定义我们想要什么,如何定义一个好的行为和一个坏的行为,然后就需要一个合适的学习型算法来获得更多的回报和更少的惩罚。
监督学习
线性回归是监督学习中相对简单也但很实用的一个数学方法,它是用于确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。我们先从一元线性回归看起。
一元线性回归顾名思义只包括一个自变量和一个因变量,且二者的关系可用一条直线来近似表示,比如上文中的卖房示例,假设我们的分析数据如下表所示:
这组数据是链家网站望京二手房的数据,如果把这些数据画在二维坐标内,就可以得到一个散点图,就像上文图一所示,如果我们想得知房屋面积和售价的关系,就可以利用一元线性回归来画出一条拟合直线。
首先我们知道一元线性函数的表达式为 ,该函数可以在二维坐标系内画出一条直线,并且 的值随x的值变化而变化,既 是自变量, 是因变量。假设上面给出的数据房屋面积为 ,售价为 ,那么每一个实际的x值都会有一个实际的y值。那么对于我们要画出的拟合直线来讲,每一个实际的x值都会有一个通过拟合直线预测而来的y值,我们期望的结果是每个 的实际值与预测值的差的平方和最小,也就是预测出的值和真实的值差距越小,那么认为我们画出的这条拟合直线称为回归线。用公式表达为:
实际 预测 实际 预测 实际 预测
因为y的预测值可以由函数 求得,所以代入上面的公式可得:
所以监督学习中的线性回归方法就是通过大量的数据样本由机器求得 和 的值,使得函数 的值最小,那么回归线也就求出来了,既称为算法收敛。
说到函数的最小值,那就要引入导数这个数学工具了,下面我从几何角度来解释什么是导数,它和函数的最小值有什么关系。
如上图所示,在图中的二维坐标系中,有一条曲线,一条直线,该直线为曲线的切线,相交于点 ,该点的 轴坐标值为 。
如上图所示,我们再画一条直线 ,使其经过曲线上的点 和点 ,直线 称为曲线的割线。当点 逐渐接近点 时,直线 就会逐渐接近直线 ,所以说切线其实是割线的极值。
如上图所示, 表示 的变化量,并且我们假设直线 的函数为 ,那么 表示函数 的变化量。在几何学中,一条直线关于横坐标轴倾斜程度的量,称为斜率,并且定义对于两个已知点 和 ,如果 不等于 ,则经过这两点直线的斜率为 。
所以直线 的斜率为 。因为点 和 的坐标分别为 和 ,所以我们代入可得:
上文中说到切线其实是割线的极值,那么切线 的斜率就是当 趋向于0时的值:
接下来我们再来看导数,导数是微积分中重要的基础概念,它描述了一个函数在某一点附近的变化率,如果函数的自变量和因变量都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率:
在数学中,极大值与极小值是指在一个域上函数取得最大值或最小值的点的函数值。这个域可以是整个函数域,也可以是整个函数域中的局部域。所以一个函数有局部极大极小值,也有全局极大极小值。
说到极值,又不得不说到微积分中的另外一个概念,驻点。
如上图所示,在二维坐标中展示了一个一元函数的曲线,点 、 、 、 、 都是该曲线上的局部极大值或局部极小值,这些点就称为驻点。在每个驻点,函数在该域的输出值停止增加或减少,即变化率为零。每个驻点其实就是局部域曲线的切点。结合上文中提到的导数是描述函数在某一点附近的变化率,所以可得一元函数的局部极值点的导数为零。
假设有一个一元函数 ,该函数的导数通过上面的导数公式可得 ,并且该函数代表的曲线为下凹曲线,所以该函数的最小值为 ,即当 等于 时 的值最小。
f′(x
上文中 是一个二元函数,实质上道理一样,我们可以把二元函数图像设想成一个像碗一样的曲面,那么最小值就是碗底,即曲面的最凹陷部,那么从360度任意方向上看,偏导数都是0。
在数学中,一个多元函数的偏导数是它关于其中一个变量的导数,而保持其他变量恒定。全导数自然就是所有变量的导数。函数 关于变量 的偏导数写为 或 偏导数符号 是全导数符号 的变体。
因为曲面上的每一个点都有无穷多条切线,所以描述这种函数的导数非常困难,所以通常选择其中一条切线,并求出它的斜率,将其他变量视为常量,这就是偏导数。
所以 的最小值就是分别求 和 的偏导数,然后可以得到一个关于 和 的二元方程组,就可以求出 和 了,这个方法被称为最小二乘法。
首先我们把 F(a,b) 展开:
然后利用平均数,把上面式子中每个括号里的内容进一步简化,比如:
则:
所以 可以继续简化为:
然后我们分别对aa和bb求偏导数,并且令偏导等于0:
消掉
最后得到关于 a, 的二元方程组为:
最后得出 和 的求解公式:
将上文中的那组数据带入后可算的 和 的值:
从带入结果来看,这条回归线的函数为 ,现在我们就可以通过回归线来做一些预测,比如上图中计算了面积为35.5平方米和55.26平方米房子的售价,分别为169.29万和464.4万。
因为我们画出的拟合直线只是一个近似值,所以需要有一个标准来评判回归线拟合程度的好坏,即算法收敛情况。我们来看几个概念:
总偏差平方和又称总平方和(SST,Sum of Squares for Total),是每个因变量的实际值与因变量的平均值的差的平方和,即反映了因变量取值的总体波动情况:
回归平方和(SSR,Sum of Squares for Regression)是因变量的回归值(回归线上的 值)与其平均值的差的平方和。它是由于自变量 的变化引起的 的变化,反映了 的总偏差中由于 与 之间的线性关系引起的 的变化部分:
误差平方和(SSE,Sum of Squares for Error)是因变量的各实际值与回归值的差的平方和,反映了除xx对yy的线性影响之外的其他因素对yy变化的作用:
因为总偏差是包含了所有可能对
y值有影响的因素,比如房子的售价不可能只有面积来决定,还包括地域、户型、楼层、楼龄等等因素。回归平方和只包含xx对yy变化的影响,即只是面积对售价的影响。
所以拟合优度 R2=SSR/SST或者
R2=1−SSE/SST, R2的取值范围在0到1之间,越接近1说明拟合程度越好,说明x对y值的影响权重越大。
比如如果所有的点都在回归线上,那说明 等于0,则说明 的变化100%由 的变化引起,没有其他因素会影响 ,则回归线能够完全解释 的变化,如果 R2的值很低,则说明 和 之间可能根本就不存在线性关系。R2=1
将数据带入计算得出最拟合优度为0.92,拟合程度还不错,说明在特定的望京区域内房屋面积是主要影响价格的因素。
总结
我认为从线性回归开始学习机器学习是最好的切入点,而且线性回归也是监督学习最根本的支撑,比如梯度下降等算法都需要基于线性回归的知识来理解。另外在我看来人工智能(AI)并不是要造一个机器人脑,这是伪科学。人工智能只是利用机器强大的计算能力,用数学工具,通过对大量数据的统计分析从而得出近似最优答案。所以说,人类和AlphaGO下棋,不是输在智力,而是输在身体机能。
END
往期精彩文章回顾
Kafka从上手到实践 - 实践真知:搭建Kafka相关的UI工具
Kafka从上手到实践 - Kafka集群:启动Kafka集群
Kafka从上手到实践 - Kafka集群:Kafka Listeners
Kafka从上手到实践 - Kafka集群:配置Broker
Kafka从上手到实践:搭建Zookeeper集群
Kafka CLI:Reseting Offset & Config CLI
长按扫描二维码关注凌云时刻
每日收获前沿技术与科技洞见