集智专栏
资源加载中,请稍后...
集智专栏

Patchouli的机器学习系列教程三:线性回归——『道』

集智小编

本文作者Patchouli Exarch,毕业于谢菲尔德大学计算机科学专业,《中国味道》文史编辑。


在上一篇理论教程中,我们简单了解了线性回归,学会了使用线性回归拟合并预测历史的行程。我们发现许多数据都是非常符合线性回归的,比如运动数据:我这里提供历届奥林匹克运动会100m和马拉松金牌数据:100米马拉松

import pylab as plt
import numpy as np
import pandas as pd
a=pd.read_csv('100m.csv')
plt.plot(a.year,a.second,'ro')

b=pd.read_csv('marathon.csv')
plt.plot(b.year,b.hour,'ro')

长得就一副欠线性回归的样子。我们之后的课程都是围绕着这份马拉松数据进行展开讲解,在那之前,我们要先温习旧的并学习新的数学内容了。

1.高斯分布及其相关特性

高斯分布被如下定义:

记作:

其中 是高斯分布的参数,特别的:数个高斯分布的参数的和,也可以作为一个新的高斯分布的参数:

高斯分布还有一个重大的特性:1812年,拉普拉斯在其发表的著作《概率分析理论》中阐述了启发自棣莫弗的“拉普拉斯中心极限定理”,定理指出:大量相互独立的随机变量,其均值的分布以正态分布为极限。也就是说,无论什么分布,在样本足够大的时候,都是可以用正态分布来表示。

拉普拉斯的理念为我们提供了一个很好的观测分布的方法,在我们于上一节课确定了线性回归方程的基本形式后:

我们都看出无论怎样拟合还是会有偏差,然而就像解决电脑屏幕抖的问题下,总有“跟着屏幕一起抖”的逗逼回答,我们不妨为我们的线性回归方程添加一个随机变量,你随机变量喜欢抖?老子比你还能抖!

而既然伟大的拉普拉斯说了,巨量随机变量都按照高斯分布来分布,那么这就是随机变量的一种特性,即使我们的随机变量并没有那么多,这种特性也是可以被利用的,结合以上的内容,我们对线性回归做出如下修正:

其中 服从高斯分布 ,而参数来自:

用数据集告诉你的 该以怎样的参数抖跟着数据一起抖。请注意,这里的 是还没有加噪音的那个。

2.似然估计函数

好了,现在我们都知道噪音服从一个基于数据集得出的参数的高斯分布,会按照数据集抖的方式跟着数据集一起抖。那么问题来了,参数该怎么求?

答:似然估计函数,记作:

你们还记不记得贝叶斯公式:

其中 P(B|A) 意为在 A 发生的情况下 B 发生的概率,而反过来我们也是可以求在 B 已经发生的情况下是哪个 A 的概率,就像我们在教程一中算的,一个村子已经失窃了,求来的是哪拨贼。似然估计函数也是如此,数据集已经有了,事情已然不可挽回,只能根据数据计算出这批数据最有可能是按照什么样的参数分布的,为计算这个参数构建的函数,就叫似然估计函数。 那么假如我们把这种理念整体地套用到线性回归上呢,难道只有 是参数吗? m和 c 不是参数吗?为什么不把所有的参数都扔到似然估计函数中去呢:

由于每个数据点都是相互独立的,所以

好多人看到 还能忍,看到 就报了血警了。没关系,我们可以取对数,这样连乘就变成了连加,是为对数似然函数:

3.最大似然估计

最大似然估计是指根据已有的数据集推理出来一个参数,使得在此参数下的分布和已有的数据集最相似。请注意,是与已有的数据,也就是说他不管这串数据真正的分布是怎样的,他只管从已有的部分里推理出来和已有的部分最相似的分布。至于这串数据是不是真的可靠,是不是真的“能”推理出来真正的参数,我们一概不管。这个参数来自历史,服务历史,我正好去过未来,它不在那里。

根据KL散度大数定理,最大似然估计在 时具有一致性。

4.目标函数

根据如上的推理,我们可以设计出这次的目标函数,由于 是一个常数,因此函数设计如下:

还是熟悉的配方,还是熟悉的味道,由于我们要参数达到最大,也就是函数的极值,自然导数要取零,所以最终又回到了我们之前的求偏导,递归参数,使得偏导数尽可能地趋于零。

是这样,别忘了我们还有 E(m,c)呢:

,我们一样可以对其求偏导,来得出我们想要的参数。

解得:

同理,令

解得:

最后令

解得:

5.高维数据

有的时候,我们的样本点并不是一个数,而是一个向量,就像我们上节课中电影和用户的坐标一样,是为特征向量。在样本集 X 中,存在着一列列特征向量,而这时我们需要将回归函数修正为:

其中 W 是权重向量,

我们可以将修正后的回归函数记作:

我们还可以把常数 c 放到 w 中去,这样回归函数就变成了:

其中,

由此,似然函数就变成了:

而,数据集的对数似然函数就变成了:

目标函数也就变成了:

在第一讲中我们学习了矩阵的微积分:

如果 A 是实对称矩阵,那么显然:

既然 m 和 c 合并成为了 W ,那么我们就可以直接对 W 做最大似然估计了: 令

解得:

最终由于:

得到最终结果:

最一开始的噪声弱弱的问了一句:还记得我吗?

是的,经过漫长的数学计算,我们终于知道,在电脑屏幕抖的时候,我们的脑袋应该以怎样的参数跟着一起抖了。这个参数,就是我们为了让线性回归方程更加符合数据而添加的正态分布的参数。

现在你们明白为什么我要学人工智能了吗?就是因为身处这个行业,可以和傻x完全隔绝开,只用专心对付坏x们就可以了;傻x们要是能看懂这些,他们高考早考上985了(笑)。

您也许喜欢这些文章

集智专栏

边看边练的简明机器学习教程 Part I

发表至系列教程
来自 Google 的 Yufeng Guo 尝试把常人眼中高大上的机器学习用最直观、简短的方式传授与你,你可以选择静静地看视频,看完第二天忘了;也可以看完视频自己哼哧哼哧地去搭建环境练习代码;又或者,你可以在集智一边看视频一边在线调戏代码。省时省力,岂不美哉?
集智专栏

如何用机器学习预测《守望先锋》里的赢家?

发表至趣味项目
实时预测游戏比赛中的胜负,有很多用途,例如为玩家提供有益的反馈,帮助改进技术;观众角度讲,会成为很好的参与工具...
集智专栏

浅说深度学习(2):简史

发表至系列教程
系列第2篇,简单回顾深度学习的历史,并详细介绍快速、高效训练深度学习架构的方法。核心内容是:梯度下降算法,正则化。

文章评论(0)