监督学习(Supervised learning)
咱们先来聊几个使用监督学习来解决问题的实例。假如咱们有一个数据集,里面的数据是俄勒冈州波特兰市的 套房屋的面积和价格:
居住面积(平方英尺) | 价格(千美元) |
---|---|
用这些数据来投个图:
有了这样的数据,我们怎样才能学会预测波特兰其他房屋的价格,以及它们的居住面积?
这里要先规范一下符号和含义,这些符号以后还要用到,咱们假设 %7D#card=math&code=x%5E%7B%28i%29%7D&height=16&width=20) 表示 “输入的” 变量值(在这个例子中就是房屋面积),也可以叫做输入特征;然后咱们用
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 来表示“输出值”,或者称之为目标变量,这个例子里面就是房屋价格。这样的一对
%7D%2Cy%5E%7B(i)%7D)#card=math&code=%28x%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29&height=19&width=55)就称为一组训练样本,然后咱们用来让机器来学习的数据集,就是——一个长度为
的训练样本的列表
%7D%2Cy%5E%7B(i)%7D)%3B%20i%20%3D%201%2C%5Cdots%20%2Cm%5C%7D#card=math&code=%5C%7B%28x%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29%3B%20i%20%3D%201%2C%5Cdots%20%2Cm%5C%7D&height=19&width=146)——也叫做一个训练集。另外一定注意,这里的上标
#card=math&code=%28i%29&height=16&width=15)只是作为训练集的索引记号,和数学乘方没有任何关系,千万别误解了。另外我们还会用大写的
来表示 输入值的空间,大写的
表示输出值的空间。在本节的这个例子中,输入输出的空间都是实数域,所以
。
然后再用更加规范的方式来描述一下监督学习问题,我们的目标是,给定一个训练集,来让机器学习一个函数 ,让
#card=math&code=h%28x%29&height=16&width=25) 是一个与对应的真实
值比较接近的评估值。由于一些历史上的原因,这个函数
就被叫做假设(hypothesis)。用一个图来表示的话,这个过程大概就是下面这样:
如果我们要预测的目标变量是连续的,比如在咱们这个房屋价格-面积的案例中,这种学习问题就被称为回归问题。 如果只能取一小部分的离散的值(比如给定房屋面积,咱们要来确定这个房子是一个住宅还是公寓),这样的问题就叫做分类问题。
**
1 线性回归
为了让我们的房屋案例更有意思,咱们稍微对数据集进行一下补充,增加上每一个房屋的卧室数目:
居住面积(平方英尺) | 卧室数目 | 价格(千美元) |
---|---|---|
现在,输入特征 就是在
范围取值的一个二维向量了。例如
%7D#card=math&code=x_1%5E%7B%28i%29%7D&height=21&width=20) 就是训练集中第
个房屋的面积,而
%7D#card=math&code=x_2%5E%7B%28i%29%7D&height=21&width=20) 就是训练集中第
个房屋的卧室数目。(通常来说,设计一个学习算法的时候,选择哪些输入特征都取决于你,所以如果你不在波特兰收集房屋信息数据,你也完全可以选择包含其他的特征,例如房屋是否有壁炉,卫生间的数量啊等等。关于特征筛选的内容会在后面的章节进行更详细的介绍,不过目前来说就暂时先用给定的这两个特征了。)
要进行这个监督学习,咱们必须得确定好如何在计算机里面对这个函数/假设 进行表示。咱们现在刚刚开始,就来个简单点的,咱们把
假设为一个以
为变量的线性函数:
%20%3D%20%5Ctheta0%20%2B%20%5Ctheta_1%20%5Ctimes%20x_1%20%2B%20%5Ctheta_2%20%5Ctimes%20x_2%0A#card=math&code=h%5Ctheta%20%20%28x%29%20%3D%20%5Ctheta_0%20%2B%20%5Ctheta_1%20%5Ctimes%20x_1%20%2B%20%5Ctheta_2%20%5Ctimes%20x_2%0A&height=16&width=181)
这里的是参数(也可以叫做权重),是从
到
的线性函数映射的空间参数。在不至于引起混淆的情况下,咱们可以把
#card=math&code=h_%5Ctheta%28x%29&height=16&width=32) 里面的
省略掉,就简写成
#card=math&code=h%28x%29&height=16&width=25)。另外为了简化公式,咱们还设
(这个为 截距项 intercept term)。这样简化之后就有了:
%20%3D%20%5Csum%5En%7Bi%3D0%7D%20%20%5Ctheta_i%20x_i%20%3D%20%5Ctheta%5ET%20x%0A#card=math&code=h%28x%29%20%3D%20%5Csum%5En%7Bi%3D0%7D%20%20%5Ctheta_i%20x_i%20%3D%20%5Ctheta%5ET%20x%0A&height=40&width=129)
等式最右边的 和
都是向量,等式中的
是输入变量的个数(不包括
)。
现在,给定了一个训练集,咱们怎么来挑选/学习参数 呢?一个看上去比较合理的方法就是让
#card=math&code=h%28x%29&height=16&width=25) 尽量逼近
,至少对咱已有的训练样本能适用。用公式的方式来表示的话,就要定义一个函数,来衡量对于每个不同的
值,
%7D)#card=math&code=h%28x%5E%7B%28i%29%7D%29&height=19&width=38) 与对应的
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的距离。这样用如下的方式定义了一个 成本函数 (cost function):
%20%3D%20%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D(h%5Ctheta(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5E2%0A#card=math&code=J%28%5Ctheta%29%20%3D%20%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D%28h%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5E2%0A&height=40&width=172)
如果之前你接触过线性回归,你会发现这个函数和常规最小二乘法 拟合模型中的最小二乘法成本函数非常相似。不管之前接触过没有,咱们都接着往下进行,以后就会发现这是一个更广泛的算法家族中的一个特例。
1.1 最小均方算法(LMS algorithm)
我们希望选择一个能让 #card=math&code=J%28%5Ctheta%29&height=16&width=25) 最小的
值。怎么做呢,咱们先用一个搜索的算法,从某一个对
的“初始猜测值”,然后对
值不断进行调整,来让
#card=math&code=J%28%5Ctheta%29&height=16&width=25) 逐渐变小,最好是直到我们能够达到一个使
#card=math&code=J%28%5Ctheta%29&height=16&width=25) 最小的
。具体来说,咱们可以考虑使用梯度下降法(gradient descent algorithm),这个方法就是从某一个
的初始值开始,然后逐渐重复更新:
%0A#card=math&code=%5Ctheta_j%20%3A%3D%20%5Ctheta_j%20-%20%5Calpha%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7DJ%28%5Ctheta%29%0A&height=36&width=119)
(上面的这个更新要同时对应从 到
的所有
值进行。)这里的
也称为学习速率。这个算法是很自然的,逐步重复朝向
降低最快的方向移动。
1 本文中 $:= $ 表示的是计算机程序中的一种赋值操作,是把等号右边的计算结果赋值给左边的变量,
就表示用
的值覆盖原有的
值。要注意区分,如果写的是
则表示的是判断二者相等的关系。(译者注:在 Python 中,单个等号
就是赋值,两个等号
表示相等关系的判断。)
要实现这个算法,咱们需要解决等号右边的导数项。首先来解决只有一组训练样本 #card=math&code=%28x%2C%20y%29&height=16&width=31) 的情况,这样就可以忽略掉等号右边对
的求和项目了。公式就简化下面这样:
%20%26%20%3D%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Cthetaj%7D%20%5Cfrac%20%2012(h%5Ctheta(x)-y)%5E2%5C%5C%0A%26%20%3D%202%20%5Ccdot%5Cfrac%2012(h%5Ctheta(x)-y)%5Ccdot%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7D%20%20(h%5Ctheta(x)-y)%20%5C%5C%0A%26%20%3D%20(h%5Ctheta(x)-y)%5Ccdot%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7D(%5Csum%5En%7Bi%3D0%7D%20%5Cthetaix_i-y)%20%5C%5C%0A%26%20%3D%20(h%5Ctheta(x)-y)%20xj%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7DJ%28%5Ctheta%29%20%26%20%3D%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7D%20%5Cfrac%20%2012%28h%5Ctheta%28x%29-y%29%5E2%5C%5C%0A%26%20%3D%202%20%5Ccdot%5Cfrac%2012%28h%5Ctheta%28x%29-y%29%5Ccdot%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7D%20%20%28h%5Ctheta%28x%29-y%29%20%5C%5C%0A%26%20%3D%20%28h%5Ctheta%28x%29-y%29%5Ccdot%20%5Cfrac%20%5Cpartial%20%7B%5Cpartial%5Ctheta_j%7D%28%5Csum%5En%7Bi%3D0%7D%20%5Cthetaix_i-y%29%20%5C%5C%0A%26%20%3D%20%28h%5Ctheta%28x%29-y%29%20x_j%0A%5Cend%7Baligned%7D%0A&height=133&width=266)
对单个训练样本,更新规则如下所示:
%7D-h%5Ctheta%20(x%5E%7B(i)%7D))x_j%5E%7B(i)%7D%0A#card=math&code=%5Ctheta_j%20%3A%3D%20%5Ctheta_j%20%2B%20%5Calpha%20%28y%5E%7B%28i%29%7D-h%5Ctheta%20%28x%5E%7B%28i%29%7D%29%29x_j%5E%7B%28i%29%7D%0A&height=23&width=180)
这个规则也叫 LMS 更新规则 (LMS 是 “least mean squares” 的缩写,意思是最小均方),也被称为 Widrow-Hoff 学习规则。这个规则有几个看上去就很自然直观的特性。例如,更新的大小与%7D%20%E2%88%92%20h%5Ctheta(x%5E%7B(i)%7D))#card=math&code=%28y%5E%7B%28i%29%7D%20%E2%88%92%20h%5Ctheta%28x%5E%7B%28i%29%7D%29%29&height=19&width=90)成正比;另外,当我们遇到训练样本的预测值与
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的真实值非常接近的情况下,就会发现基本没必要再对参数进行修改了;与此相反的情况是,如果我们的预测值
%7D)#card=math&code=h_%5Ctheta%28x%5E%7B%28i%29%7D%29&height=19&width=44) 与
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的真实值有很大的误差(比如距离特别远),那就需要对参数进行更大地调整。
当只有一个训练样本的时候,我们推导出了 LMS 规则。当一个训练集有超过一个训练样本的时候,有两种对这个规则的修改方法。第一种就是下面这个算法:
%7D-h%5Ctheta%20(x%5E%7B(i)%7D))x_j%5E%7B(i)%7D%5Cquad(%E5%AF%B9%E6%AF%8F%E4%B8%AAj)%20%5C%5C%0A%26%5Cqquad%5C%7D%0A%5Cend%7Baligned%7D%0A#card=math&code=%0A%5Cbegin%7Baligned%7D%0A%26%5Cqquad%20%E9%87%8D%E5%A4%8D%E7%9B%B4%E5%88%B0%E6%94%B6%E6%95%9B%20%5C%7B%20%5C%5C%0A%26%5Cqquad%5Cqquad%5Ctheta_j%20%3A%3D%20%5Ctheta_j%20%2B%20%5Calpha%20%5Csum%5Em%7Bi%3D1%7D%28y%5E%7B%28i%29%7D-h_%5Ctheta%20%28x%5E%7B%28i%29%7D%29%29x_j%5E%7B%28i%29%7D%5Cquad%28%E5%AF%B9%E6%AF%8F%E4%B8%AAj%29%20%5C%5C%0A%26%5Cqquad%5C%7D%0A%5Cend%7Baligned%7D%0A&height=80&width=328)
读者很容易能证明,在上面这个更新规则中求和项的值就是%7D%7B%5Cpartial%20%5Ctheta_j%7D#card=math&code=%5Cfrac%20%7B%5Cpartial%20J%28%5Ctheta%29%7D%7B%5Cpartial%20%5Ctheta_j%7D&height=37&width=37) (这是因为对
的原始定义)。所以这个更新规则实际上就是对原始的成本函数 $J $进行简单的梯度下降。这一方法在每一个步长内检查所有整个训练集中的所有样本,也叫做批量梯度下降法(batch gradient descent)。这里要注意,因为梯度下降法容易被局部最小值影响,而我们要解决的这个线性回归的优化问题只能有一个全局的而不是局部的最优解;因此,梯度下降法应该总是收敛到全局最小值(假设学习速率
不设置的过大)。
很明确是一个凸二次函数。下面是一个样例,其中对一个二次函数使用了梯度下降法来找到最小值。
上图的椭圆就是一个二次函数的轮廓图。图中还有梯度下降法生成的规矩,初始点位置在#card=math&code=%2848%2C30%29&height=16&width=43)。图中的画的
(用直线连接起来了)标记了梯度下降法所经过的
的可用值。
对咱们之前的房屋数据集进行批量梯度下降来拟合 ,把房屋价格当作房屋面积的函数来进行预测,我们得到的结果是
。如果把
#card=math&code=h_%7B%5Ctheta%7D%28x%29&height=16&width=32) 作为一个定义域在
上的函数来投影,同时也投上训练集中的已有数据点,会得到下面这幅图:
如果在数据集中添加上卧室数目作为输入特征,那么得到的结果就是
这个结果就是用批量梯度下降法来获得的。此外还有另外一种方法能够替代批量梯度下降法,这种方法效果也不错。如下所示:
%7D-h%7B%5Ctheta%7D(x%5E%7B(i)%7D))x_j%5E%7B(i)%7D%20%5Cqquad(%E5%AF%B9%E6%AF%8F%E4%B8%AA%20j)%20%5C%5C%0A%26%5Cqquad%5Cqquad%5C%7D%20%20%5C%5C%0A%26%5Cqquad%5C%7D%0A%5Cend%7Baligned%7D%0A#card=math&code=%0A%5Cbegin%7Baligned%7D%0A%26%5Cqquad%E5%BE%AA%E7%8E%AF%EF%BC%9A%5C%7B%20%5C%5C%0A%26%5Cqquad%5Cqquad%20i%E4%BB%8E1%E5%88%B0m%2C%5C%7B%20%20%20%5C%5C%0A%26%5Cqquad%5Cqquad%5Cqquad%5Ctheta_j%20%3A%3D%20%5Ctheta_j%20%20%2B%5Calpha%28y%5E%7B%28i%29%7D-h%7B%5Ctheta%7D%28x%5E%7B%28i%29%7D%29%29x_j%5E%7B%28i%29%7D%20%5Cqquad%28%E5%AF%B9%E6%AF%8F%E4%B8%AA%20j%29%20%5C%5C%0A%26%5Cqquad%5Cqquad%5C%7D%20%20%5C%5C%0A%26%5Cqquad%5C%7D%0A%5Cend%7Baligned%7D%0A&height=102&width=347)
在这个算法里,我们对整个训练集进行了循环遍历,每次遇到一个训练样本,根据每个单一训练样本的误差梯度来对参数进行更新。这个算法叫做随机梯度下降法(stochastic gradient descent),或者叫增量梯度下降法(incremental gradient descent)。批量梯度下降法要在运行第一步之前先对整个训练集进行扫描遍历,当训练集的规模 变得很大的时候,引起的性能开销就很不划算了;随机梯度下降法就没有这个问题,而是可以立即开始,对查询到的每个样本都进行运算。通常情况下,随机梯度下降法查找到足够接近最低值的
的速度要比批量梯度下降法更快一些。(也要注意,也有可能会一直无法收敛(converge)到最小值,这时候
会一直在
#card=math&code=J%28%5Ctheta%29&height=16&width=25) 最小值附近震荡;不过通常情况下在最小值附近的这些值大多数其实也足够逼近了,足以满足咱们的精度要求,所以也可以用。
)由于这些原因,特别是在训练集很大的情况下,随机梯度下降往往比批量梯度下降更受青睐。
2 当然更常见的情况通常是我们事先对数据集已经有了描述,并且有了一个确定的学习速率
,然后来运行随机梯度下降,同时逐渐让学习速率
随着算法的运行而逐渐趋于
,这样也能保证我们最后得到的参数会收敛到最小值,而不是在最小值范围进行震荡。(译者注:由于以上种种原因,通常更推荐使用的都是随机梯度下降法,而不是批量梯度下降法,尤其是在训练用的数据集规模大的时候。)
1.2 法方程(The normal equations)
上文中的梯度下降法是一种找出 最小值的办法。然后咱们聊一聊另一种实现方法,这种方法寻找起来简单明了,而且不需要使用迭代算法。这种方法就是,我们直接利用找对应导数为
位置的
,这样就能找到
的最小值了。我们想实现这个目的,还不想写一大堆代数公式或者好几页的矩阵积分,所以就要介绍一些做矩阵积分的记号。
1.2.1 矩阵导数(Matrix derivatives)
假如有一个函数 从
大小的矩阵映射到实数域,那么就可以定义当矩阵为
的时候有导函数
如下所示:
%3D%5Cbegin%7Bbmatrix%7D%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7B11%7D%7D%20%26%20%5Cdots%20%20%26%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7B1n%7D%7D%20%5C%5C%20%5Cvdots%20%20%26%20%5Cddots%20%26%20%5Cvdots%20%20%5C%5C%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7Bm1%7D%7D%20%26%20%5Cdots%20%20%26%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7Bmn%7D%7D%20%5C%5C%20%5Cend%7Bbmatrix%7D%0A#card=math&code=%5CnablaA%20f%28A%29%3D%5Cbegin%7Bbmatrix%7D%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7B11%7D%7D%20%26%20%5Cdots%20%20%26%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7B1n%7D%7D%20%5C%5C%20%5Cvdots%20%20%26%20%5Cddots%20%26%20%5Cvdots%20%20%5C%5C%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A%7Bm1%7D%7D%20%26%20%5Cdots%20%20%26%20%5Cfrac%20%7B%5Cpartial%20f%7D%7B%5Cpartial%20A_%7Bmn%7D%7D%20%5C%5C%20%5Cend%7Bbmatrix%7D%0A&height=82&width=192)
因此,这个梯度 #card=math&code=%5CnablaA%20f%28A%29&height=16&width=48)本身也是一个
的矩阵,其中的第
#card=math&code=%28i%2Cj%29&height=16&width=26) 个元素是 $\frac {\partial f}{\partial A{ij}} $ 。
假如 $ A =\begin{bmatrix} A{11} & A{12} \ A{21} & A{22} \ \end{bmatrix} $ 是一个 矩阵,然后给定的函数
为:
%20%3D%20%5Cfrac%2032A%7B11%7D%2B5A%5E2%7B12%7D%2BA%7B21%7DA%7B22%7D%0A#card=math&code=f%28A%29%20%3D%20%5Cfrac%2032A%7B11%7D%2B5A%5E2%7B12%7D%2BA%7B21%7DA%7B22%7D%0A&height=30&width=182)
这里面的 表示的意思是矩阵
的第
#card=math&code=%28i%2Cj%29&height=16&width=26) 个元素。然后就有了梯度:
%20%3D%5Cbegin%7Bbmatrix%7D%20%5Cfrac%20%2032%20%26%2010A%7B12%7D%20%5C%5C%20A%7B22%7D%20%26%20A%7B21%7D%20%5C%5C%20%5Cend%7Bbmatrix%7D%20%0A#card=math&code=%5Cnabla%20_A%20f%28A%29%20%3D%5Cbegin%7Bbmatrix%7D%20%5Cfrac%20%2032%20%26%2010A%7B12%7D%20%5C%5C%20A%7B22%7D%20%26%20A%7B21%7D%20%5C%5C%20%5Cend%7Bbmatrix%7D%20%0A&height=43&width=155)
然后咱们还要引入 求迹运算,简写为
。对于一个给定的
方形矩阵
,它的迹定义为对角项和:
假如 是一个实数,实际上
就可以看做是一个
的矩阵,那么就有
的迹
。(如果你之前没有见到过这个“运算记号”,就可以把
的迹看成是
#card=math&code=tr%28A%29&height=16&width=31),或者理解成为一个对矩阵
进行操作的
函数。不过通常情况都是写成不带括号的形式更多一些。)
如果有两个矩阵 和
,能够满足
为方阵,
求迹运算就有一个特殊的性质:
(自己想办法证明)。在此基础上进行推论,就能得到类似下面这样的等式关系:
下面这些和求迹运算相关的等量关系也很容易证明。其中 和
都是方形矩阵,
是一个实数:
%3DtrA%2BtrB%20%5C%5C%0Atr%20a%20A%3Da%20trA%0A#card=math&code=trA%3DtrA%5ET%20%5C%5C%0Atr%28A%2BB%29%3DtrA%2BtrB%20%5C%5C%0Atr%20a%20A%3Da%20trA%0A&height=50&width=583)
接下来咱们就来在不进行证明的情况下提出一些矩阵导数(其中的一些直到本节末尾才用得上)。另外要注意等式#card=math&code=%284%29&height=16&width=17)中的
必须是非奇异方阵(non-singular square matrices),而
表示的是矩阵
的行列式。那么我们就有下面这些等量关系:
%7D%5C%5C%0A%20%20%20%5Cnabla%7BA%5ET%7D%20f(A)%20%26%20%3D%20(%5Cnabla%7BA%7D%20f(A))%5ET%20%26%5Ctext%7B(2)%7D%5C%5C%0A%20%20%20%5CnablaA%20tr%20ABA%5ETC%26%20%3D%20CAB%2BC%5ETAB%5ET%20%26%5Ctext%7B(3)%7D%5C%5C%0A%20%20%20%5Cnabla_A%7CA%7C%20%26%20%3D%20%7CA%7C(A%5E%7B-1%7D)%5ET%20%26%5Ctext%7B(4)%7D%5C%5C%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%20%20%20%5Cnabla_A%20tr%20AB%20%26%20%3D%20B%5ET%20%26%20%5Ctext%7B%281%29%7D%5C%5C%0A%20%20%20%5Cnabla%7BA%5ET%7D%20f%28A%29%20%26%20%3D%20%28%5Cnabla_%7BA%7D%20f%28A%29%29%5ET%20%26%5Ctext%7B%282%29%7D%5C%5C%0A%20%20%20%5Cnabla_A%20tr%20ABA%5ETC%26%20%3D%20CAB%2BC%5ETAB%5ET%20%26%5Ctext%7B%283%29%7D%5C%5C%0A%20%20%20%5Cnabla_A%7CA%7C%20%26%20%3D%20%7CA%7C%28A%5E%7B-1%7D%29%5ET%20%26%5Ctext%7B%284%29%7D%5C%5C%0A%5Cend%7Baligned%7D%0A&height=78&width=241)
为了让咱们的矩阵运算记号更加具体,咱们就详细解释一下这些等式中的第一个。假如我们有一个确定的矩阵 (注意顺序,是
,这里的意思也就是
的元素都是实数,
的形状是
的一个矩阵),那么接下来就可以定义一个函数$ f: R^{m\times n} → R$ ,对应这里的就是
%20%3D%20trAB#card=math&code=f%28A%29%20%3D%20trAB&height=16&width=78)。这里要注意,这个矩阵是有意义的,因为如果 $A \in R^{m\times n} $,那么
就是一个方阵,是方阵就可以应用
求迹运算;因此,实际上
映射的是从 $R^{m\times n} $ 到实数域
。这样接下来就可以使用矩阵导数来找到
#card=math&code=%5CnablaAf%28A%29&height=16&width=48) ,这个导函数本身也是一个 $m \times n
(1)$ 表明了这个导数矩阵的第
#card=math&code=%28i%2Cj%29&height=16&width=26)个元素等同于
(
的转置)的第
#card=math&code=%28i%2Cj%29&height=16&width=26) 个元素,或者更直接表示成 。
上面等式#card=math&code=%281-3%29&height=16&width=41) 都很简单,证明就都留给读者做练习了。等式
#card=math&code=%284%29&height=16&width=17)需要用逆矩阵的伴随矩阵来推导出。
3 假如咱们定义一个矩阵
,它的第
#card=math&code=%28i%2Cj%29&height=16&width=26) 个元素是$ (−1)^{i+j}$ 与矩阵 $A $移除 第
行 和 第
列 之后的行列式的乘积,则可以证明有
%5ET%20%2F%7CA%7C#card=math&code=A%5E%7B%E2%88%921%7D%20%3D%20%28A%27%29%5ET%20%2F%7CA%7C&height=18&width=98)。(你可以检查一下,比如在
是一个
矩阵的情况下看看
是什么样的,然后以此类推。如果你想看看对于这一类结果的证明,可以参考一本中级或者高级的线性代数教材,比如Charles Curtis, 1991, Linear Algebra, Springer。)这也就意味着 $A’ = |A|(AT $。此外,一个矩阵
的行列式也可以写成
。因为
%7Bij%7D#card=math&code=%28A%27%29%7Bij%7D&height=18&width=32) 不依赖
(通过定义也能看出来),这也就意味着$(\frac \partial {\partial A{ij}})|A| = A’{ij} $,综合起来也就得到上面的这个结果了。
1.2.2 最小二乘法回顾(Least squares revisited)
通过刚才的内容,咱们大概掌握了矩阵导数这一工具,接下来咱们就继续用逼近模型(closed-form)来找到能让 #card=math&code=J%28%5Ctheta%29&height=16&width=25) 最小的
值。首先咱们把
用矩阵-向量的记号来重新表述。
给定一个训练集,把设计矩阵(design matrix) 设置为一个
矩阵(实际上,如果考虑到截距项,也就是
那一项,就应该是
#card=math&code=m%5Ctimes%20%28n%2B1%29&height=16&width=70) 矩阵),这个矩阵里面包含了训练样本的输入值作为每一行:
%7D)%20%5ET-%5C%5C%0A-(x%5E%7B(2)%7D)%20%5ET-%5C%5C%0A%5Cvdots%20%5C%5C%0A-(x%5E%7B(m)%7D)%20%5ET-%5C%5C%0A%5Cend%7Bbmatrix%7D%20%0A#card=math&code=X%20%3D%5Cbegin%7Bbmatrix%7D%0A-%28x%5E%7B%281%29%7D%29%20%5ET-%5C%5C%0A-%28x%5E%7B%282%29%7D%29%20%5ET-%5C%5C%0A%5Cvdots%20%5C%5C%0A-%28x%5E%7B%28m%29%7D%29%20%5ET-%5C%5C%0A%5Cend%7Bbmatrix%7D%20%0A&height=86&width=116)
然后,咱们设 是一个
维向量(m-dimensional vector),其中包含了训练集中的所有目标值:
%7D%5C%5C%0Ay%5E%7B(2)%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ay%5E%7B(m)%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%20%0A#card=math&code=y%20%3D%5Cbegin%7Bbmatrix%7D%0Ay%5E%7B%281%29%7D%5C%5C%0Ay%5E%7B%282%29%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ay%5E%7B%28m%29%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%20%0A&height=84&width=71)
因为
译者注:这个怎么推出来的我目前还没尝试,目测不难
,所以可以证明存在下面这种等量关系:
%7D)%5ET%5Ctheta%20%5C%5C%0A%5Cvdots%20%5C%5C%0A(x%5E%7B(m)%7D)%5ET%5Ctheta%5C%5C%0A%5Cend%7Bbmatrix%7D%20-%0A%5Cbegin%7Bbmatrix%7D%0Ay%5E%7B(1)%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ay%5E%7B(m)%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%26%20%3D%0A%5Cbegin%7Bbmatrix%7D%0Ah%5Ctheta%20(x%5E%7B1%7D)%20-y%5E%7B(1)%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ah%5Ctheta%20(x%5E%7Bm%7D)-y%5E%7B(m)%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0AX%5Ctheta%20-%20%5Cvec%7By%7D%20%20%26%3D%0A%5Cbegin%7Bbmatrix%7D%0A%28x%5E%7B%281%29%7D%29%5ET%5Ctheta%20%5C%5C%0A%5Cvdots%20%5C%5C%0A%28x%5E%7B%28m%29%7D%29%5ET%5Ctheta%5C%5C%0A%5Cend%7Bbmatrix%7D%20-%0A%5Cbegin%7Bbmatrix%7D%0Ay%5E%7B%281%29%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ay%5E%7B%28m%29%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%26%20%3D%0A%5Cbegin%7Bbmatrix%7D%0Ah%5Ctheta%20%28x%5E%7B1%7D%29%20-y%5E%7B%281%29%7D%5C%5C%0A%5Cvdots%20%5C%5C%0Ah%5Ctheta%20%28x%5E%7Bm%7D%29-y%5E%7B%28m%29%7D%5C%5C%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%5Cend%7Baligned%7D%0A&height=131&width=199)
对于向量 ,则有
,因此利用这个性质,可以推出:
%5ET%20(X%5Ctheta%20-%20%5Cvec%7By%7D)%20%26%3D%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D(h%5Ctheta%20(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5E2%5C%5C%0A%26%3D%20J(%5Ctheta)%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%5Cfrac%2012%28X%5Ctheta%20-%20%5Cvec%7By%7D%29%5ET%20%28X%5Ctheta%20-%20%5Cvec%7By%7D%29%20%26%3D%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D%28h%5Ctheta%20%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5E2%5C%5C%0A%26%3D%20J%28%5Ctheta%29%0A%5Cend%7Baligned%7D%0A&height=59&width=276)
最后,要让 的值最小,就要找到函数对于
导数。结合等式
#card=math&code=%282%29&height=16&width=17)和等式
#card=math&code=%283%29&height=16&width=17),就能得到下面这个等式
#card=math&code=%285%29&height=16&width=17):
%7D%0A#card=math&code=%5Cnabla_%7BA%5ET%7D%20trABA%5ETC%20%3DB%5ETA%5ETC%5ET%2BBA%5ETC%20%5Cqquad%20%5Ctext%7B%285%29%7D%0A&height=19&width=259)
因此就有:
%20%26%3D%20%5Cnabla%5Ctheta%20%5Cfrac%2012%20(X%5Ctheta%20-%20%5Cvec%7By%7D)%5ET%20(X%5Ctheta%20-%20%5Cvec%7By%7D)%20%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla%5Ctheta%20(%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%5Ctheta%5ET%20X%5ET%20%5Cvec%7By%7D%20-%20%5Cvec%7By%7D%20%5ETX%5Ctheta%20%2B%5Cvec%7By%7D%5ET%20%5Cvec%7By%7D)%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla%5Ctheta%20tr(%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%5Ctheta%5ET%20X%5ET%20%5Cvec%7By%7D%20-%20%5Cvec%7By%7D%20%5ETX%5Ctheta%20%2B%5Cvec%7By%7D%5ET%20%5Cvec%7By%7D)%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla%5Ctheta%20(tr%20%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%202tr%5Cvec%7By%7D%20%5ET%20X%5Ctheta)%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20(X%5ETX%5Ctheta%2BX%5ETX%5Ctheta-2X%5ET%5Cvec%7By%7D)%20%5C%5C%0A%26%3D%20X%5ETX%5Ctheta-X%5ET%5Cvec%7By%7D%5C%5C%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0A%5Cnabla%5Ctheta%20J%28%5Ctheta%29%20%26%3D%20%5Cnabla%5Ctheta%20%5Cfrac%2012%20%28X%5Ctheta%20-%20%5Cvec%7By%7D%29%5ET%20%28X%5Ctheta%20-%20%5Cvec%7By%7D%29%20%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla%5Ctheta%20%28%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%5Ctheta%5ET%20X%5ET%20%5Cvec%7By%7D%20-%20%5Cvec%7By%7D%20%5ETX%5Ctheta%20%2B%5Cvec%7By%7D%5ET%20%5Cvec%7By%7D%29%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla%5Ctheta%20tr%28%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%5Ctheta%5ET%20X%5ET%20%5Cvec%7By%7D%20-%20%5Cvec%7By%7D%20%5ETX%5Ctheta%20%2B%5Cvec%7By%7D%5ET%20%5Cvec%7By%7D%29%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%5Cnabla_%5Ctheta%20%28tr%20%5Ctheta%20%5ETX%5ETX%5Ctheta%20-%202tr%5Cvec%7By%7D%20%5ET%20X%5Ctheta%29%5C%5C%0A%26%3D%20%5Cfrac%20%2012%20%28X%5ETX%5Ctheta%2BX%5ETX%5Ctheta-2X%5ET%5Cvec%7By%7D%29%20%5C%5C%0A%26%3D%20X%5ETX%5Ctheta-X%5ET%5Cvec%7By%7D%5C%5C%0A%5Cend%7Baligned%7D%0A&height=176&width=315)
在第三步,我们用到了一个定理,也就是一个实数的迹就是这个实数本身;第四步用到了 这个定理;第五步用到了等式
#card=math&code=%285%29&height=16&width=17),其中
,还用到了等式
#card=math&code=%281%29&height=16&width=17)。要让
取得最小值,就设导数为
,然后就得到了下面的法线方程(normal equations):
所以让 #card=math&code=J%28%5Ctheta%29&height=16&width=25) 取值最小的
就是
%5E%7B-1%7DX%5ET%5Cvec%7By%7D%0A#card=math&code=%5Ctheta%20%3D%20%28X%5ETX%29%5E%7B-1%7DX%5ET%5Cvec%7By%7D%0A&height=18&width=107)
1.3 概率解释(Probabilistic interpretation)
在面对回归问题的时候,可能有这样一些疑问,就是为什么选择线性回归,尤其是为什么选择最小二乘法作为成本函数 ?在本节里,我们会给出一系列的概率基本假设,基于这些假设,就可以推出最小二乘法回归是一种非常自然的算法。
首先咱们假设目标变量和输入值存在下面这种等量关系:
%7D%3D%5Ctheta%5ET%20x%5E%7B(i)%7D%2B%20%5Cepsilon%20%5E%7B(i)%7D%0A#card=math&code=y%5E%7B%28i%29%7D%3D%5Ctheta%5ET%20x%5E%7B%28i%29%7D%2B%20%5Cepsilon%20%5E%7B%28i%29%7D%0A&height=18&width=105)
上式中 $ \epsilon ^{(i)}$ 是误差项,用于存放由于建模所忽略的变量导致的效果 (比如可能某些特征对于房价的影响很明显,但我们做回归的时候忽略掉了)或者随机的噪音信息(random noise)。进一步假设 $ \epsilon ^{(i)}$ 是独立同分布的 (IID ,independently and identically distributed) ,服从高斯分布(Gaussian distribution ,也叫正态分布 Normal distribution),其平均值为 ,方差(variance)为
。这样就可以把这个假设写成 $ \epsilon ^{(i)} ∼ N (0, \sigma ^2)$ 。然后 $ \epsilon ^{(i)} $ 的密度函数就是:
%7D%20)%3D%20%5Cfrac%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%20(-%20%5Cfrac%20%20%7B(%5Cepsilon%20%5E%7B(i)%7D%20)%5E2%7D%7B2%5Csigma%5E2%7D)%0A#card=math&code=p%28%5Cepsilon%20%5E%7B%28i%29%7D%20%29%3D%20%5Cfrac%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%20%28-%20%5Cfrac%20%20%7B%28%5Cepsilon%20%5E%7B%28i%29%7D%20%29%5E2%7D%7B2%5Csigma%5E2%7D%29%0A&height=41&width=172)
这意味着存在下面的等量关系:
%7D%20%7Cx%5E%7B(i)%7D%3B%20%5Ctheta)%3D%20%5Cfrac%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%20(-%20%5Cfrac%20%20%7B(y%5E%7B(i)%7D%20-%5Ctheta%5ET%20x%20%5E%7B(i)%7D%20)%5E2%7D%7B2%5Csigma%5E2%7D)%0A#card=math&code=p%28y%20%5E%7B%28i%29%7D%20%7Cx%5E%7B%28i%29%7D%3B%20%5Ctheta%29%3D%20%5Cfrac%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%20%28-%20%5Cfrac%20%20%7B%28y%5E%7B%28i%29%7D%20-%5Ctheta%5ET%20x%20%5E%7B%28i%29%7D%20%29%5E2%7D%7B2%5Csigma%5E2%7D%29%0A&height=41&width=263)
这里的记号 %7D%20%7Cx%5E%7B(i)%7D%3B%20%5Ctheta)%E2%80%9D#card=math&code=%E2%80%9Cp%28y%20%5E%7B%28i%29%7D%20%7Cx%5E%7B%28i%29%7D%3B%20%5Ctheta%29%E2%80%9D&height=19&width=86) 表示的是这是一个对于给定
%7D#card=math&code=x%5E%7B%28i%29%7D&height=16&width=20) 时
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的分布,用
代表该分布的参数。 注意这里不能用
%7D%20%7Cx%5E%7B(i)%7D%2C%5Ctheta)%E2%80%9D)#card=math&code=%5Ctheta%28%E2%80%9Cp%28y%20%5E%7B%28i%29%7D%20%7Cx%5E%7B%28i%29%7D%2C%5Ctheta%29%E2%80%9D%29&height=19&width=102)来当做条件,因为
并不是一个随机变量。这个
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的分布还可以写成
%7D%20%7C%20x%5E%7B(i)%7D%3B%20%5Ctheta%20%E2%88%BC%20N%20(%5Ctheta%20%5ET%20x%5E%7B(i)%7D%2C%20%5Csigma%5E2)#card=math&code=y%5E%7B%28i%29%7D%20%7C%20x%5E%7B%28i%29%7D%3B%20%5Ctheta%20%E2%88%BC%20N%20%28%5Ctheta%20%5ET%20x%5E%7B%28i%29%7D%2C%20%5Csigma%5E2%29&height=19&width=149)。
给定一个设计矩阵(design matrix),其包含了所有的
%7D#card=math&code=x%5E%7B%28i%29%7D&height=16&width=20),然后再给定
,那么
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 的分布是什么?数据的概率以
#card=math&code=p%20%28%5Cvec%7By%7D%7CX%3B%5Ctheta%20%29&height=16&width=53) 的形式给出。在
取某个固定值的情况下,这个等式通常可以看做是一个
的函数(也可以看成是
的函数)。当我们要把它当做
的函数的时候,就称它为 似然函数(likelihood function)
%20%3DL(%5Ctheta%3BX%2C%5Cvec%7By%7D)%3Dp(%5Cvec%7By%7D%7CX%3B%5Ctheta)%0A#card=math&code=L%28%5Ctheta%29%20%3DL%28%5Ctheta%3BX%2C%5Cvec%7By%7D%29%3Dp%28%5Cvec%7By%7D%7CX%3B%5Ctheta%29%0A&height=16&width=172)
结合之前对 %7D#card=math&code=%5Cepsilon%5E%7B%28i%29%7D&height=16&width=17) 的独立性假设 (这里对
%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 以及给定的
%7D#card=math&code=x%5E%7B%28i%29%7D&height=16&width=20) 也都做同样假设),就可以把上面这个等式改写成下面的形式:
%20%26%3D%5Cprod%20%5Em%20%7Bi%3D1%7Dp(y%5E%7B(i)%7D%7Cx%5E%7B(i)%7D%3B%5Ctheta)%5C%5C%0A%26%3D%5Cprod%20%5Em%20%7Bi%3D1%7D%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp(-%20%5Cfrac%20%7B(y%5E%7B(i)%7D-%5Ctheta%5ET%20x%5E%7B(i)%7D)%5E2%7D%7B2%5Csigma%5E2%7D)%5C%5C%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0AL%28%5Ctheta%29%20%26%3D%5Cprod%20%5Em%20%7Bi%3D1%7Dp%28y%5E%7B%28i%29%7D%7Cx%5E%7B%28i%29%7D%3B%5Ctheta%29%5C%5C%0A%26%3D%5Cprod%20%5Em%20%7Bi%3D1%7D%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%28-%20%5Cfrac%20%7B%28y%5E%7B%28i%29%7D-%5Ctheta%5ET%20x%5E%7B%28i%29%7D%29%5E2%7D%7B2%5Csigma%5E2%7D%29%5C%5C%0A%5Cend%7Baligned%7D%0A&height=82&width=239)
现在,给定了%7D#card=math&code=y%5E%7B%28i%29%7D&height=18&width=18) 和
%7D#card=math&code=x%5E%7B%28i%29%7D&height=16&width=20)之间关系的概率模型了,用什么方法来选择咱们对参数
的最佳猜测呢?最大似然法(maximum likelihood)告诉我们要选择能让数据的似然函数尽可能大的
。也就是说,咱们要找的
能够让函数
#card=math&code=L%28%5Ctheta%29&height=16&width=26) 取到最大值。
除了找到 #card=math&code=L%28%5Ctheta%29&height=16&width=26) 最大值,我们还以对任何严格递增的
#card=math&code=L%28%5Ctheta%29&height=16&width=26) 的函数求最大值。如果我们不直接使用
#card=math&code=L%28%5Ctheta%29&height=16&width=26),而是使用对数函数,来找对数似然函数
#card=math&code=l%28%5Ctheta%29&height=16&width=20) 的最大值,那这样对于求导来说就简单了一些:
%20%26%3D%5Clog%20L(%5Ctheta)%5C%5C%0A%26%3D%5Clog%20%5Cprod%20%5Em%20%7Bi%3D1%7D%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp(-%20%5Cfrac%20%7B(y%5E%7B(i)%7D-%5Ctheta%5ET%20x%5E%7B(i)%7D)%5E2%7D%7B2%5Csigma%5E2%7D)%5C%5C%0A%26%3D%20%5Csum%20%5Em%20%7Bi%3D1%7Dlog%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp(-%20%5Cfrac%20%7B(y%5E%7B(i)%7D-%5Ctheta%5ET%20x%5E%7B(i)%7D)%5E2%7D%7B2%5Csigma%5E2%7D)%5C%5C%0A%26%3D%20m%20%5Clog%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D-%20%5Cfrac%201%7B%5Csigma%5E2%7D%5Ccdot%20%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D%20(y%5E%7B(i)%7D-%5Ctheta%5ETx%5E%7B(i)%7D)%5E2%5C%5C%0A%5Cend%7Baligned%7D%0A#card=math&code=%5Cbegin%7Baligned%7D%0Al%28%5Ctheta%29%20%26%3D%5Clog%20L%28%5Ctheta%29%5C%5C%0A%26%3D%5Clog%20%5Cprod%20%5Em%20%7Bi%3D1%7D%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%28-%20%5Cfrac%20%7B%28y%5E%7B%28i%29%7D-%5Ctheta%5ET%20x%5E%7B%28i%29%7D%29%5E2%7D%7B2%5Csigma%5E2%7D%29%5C%5C%0A%26%3D%20%5Csum%20%5Em%20%7Bi%3D1%7Dlog%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D%20exp%28-%20%5Cfrac%20%7B%28y%5E%7B%28i%29%7D-%5Ctheta%5ET%20x%5E%7B%28i%29%7D%29%5E2%7D%7B2%5Csigma%5E2%7D%29%5C%5C%0A%26%3D%20m%20%5Clog%20%5Cfrac%20%201%7B%5Csqrt%7B2%5Cpi%7D%5Csigma%7D-%20%5Cfrac%201%7B%5Csigma%5E2%7D%5Ccdot%20%5Cfrac%2012%20%5Csum%5Em%7Bi%3D1%7D%20%28y%5E%7B%28i%29%7D-%5Ctheta%5ETx%5E%7B%28i%29%7D%29%5E2%5C%5C%0A%5Cend%7Baligned%7D%0A&height=144&width=280)
因此,对 #card=math&code=l%28%5Ctheta%29&height=16&width=20) 取得最大值也就意味着下面这个子式取到最小值:
%7D-%5Ctheta%5ETx%5E%7B(i)%7D)%5E2%0A#card=math&code=%5Cfrac%2012%20%5Csum%5Em%20_%7Bi%3D1%7D%20%28y%5E%7B%28i%29%7D-%5Ctheta%5ETx%5E%7B%28i%29%7D%29%5E2%0A&height=40&width=119)
到这里我们能发现这个子式实际上就是 #card=math&code=J%28%5Ctheta%29&height=16&width=25),也就是最原始的最小二乘成本函数(least-squares cost function)。
总结一下也就是:在对数据进行概率假设的基础上,最小二乘回归得到的 和最大似然法估计的
是一致的。所以这是一系列的假设,其前提是认为最小二乘回归(least-squares regression)能够被判定为一种非常自然的方法,这种方法正好就进行了最大似然估计(maximum likelihood estimation)。(要注意,对于验证最小二乘法是否为一个良好并且合理的过程来说,这些概率假设并不是必须的,此外可能(也确实)有其他的自然假设能够用来评判最小二乘方法。)
另外还要注意,在刚才的讨论中,我们最终对 的选择并不依赖
,而且也确实在不知道
的情况下就已经找到了结果。稍后我们还要对这个情况加以利用,到时候我们会讨论指数族以及广义线性模型。
1.4 局部加权线性回归(Locally weighted linear regression)
假如问题还是根据从实数域内取值的 来预测
。左下角的图显示了使用
来对一个数据集进行拟合。我们明显能看出来这个数据的趋势并不是一条严格的直线,所以用直线进行的拟合就不是好的方法。
那么这次不用直线,而增加一个二次项,用 来拟合。(看中间的图) 很明显,我们对特征补充得越多,效果就越好。不过,增加太多特征也会造成危险的:最右边的图就是使用了五次多项式
来进行拟合。看图就能发现,虽然这个拟合曲线完美地通过了所有当前数据集中的数据,但我们明显不能认为这个曲线是一个合适的预测工具,比如针对不同的居住面积
来预测房屋价格
。先不说这些特殊名词的正规定义,咱们就简单说,最左边的图像就是一个欠拟合(under fitting) 的例子,比如明显能看出拟合的模型漏掉了数据集中的结构信息;而最右边的图像就是一个过拟合(over fitting) 的例子。(在本课程的后续部分中,当我们讨论到关于学习理论的时候,会给出这些概念的标准定义,也会给出拟合程度对于一个猜测的好坏检验的意义。)
正如前文谈到的,也正如上面这个例子展示的,一个学习算法要保证能良好运行,特征的选择是非常重要的。(等到我们讲模型选择的时候,还会看到一些算法能够自动来选择一个良好的特征集。)在本节,咱们就简要地讲一下局部加权线性回归(locally weighted linear regression ,缩写为LWR),这个方法是假设有足够多的训练数据,对不太重要的特征进行一些筛选。这部分内容会比较简略,因为在作业中要求学生自己去探索一下LWR 算法的各种性质了。
在原始版本的线性回归算法中,要对一个查询点 进行预测,比如要衡量
#card=math&code=h%28x%29&height=16&width=25),要经过下面的步骤:
- 使用参数
进行拟合,让数据集中的值与拟合算出的值的差值平方
%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B(i)%7D%20)%5E2#card=math&code=%5Csum_i%28y%5E%7B%28i%29%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B%28i%29%7D%20%29%5E2&height=32&width=106)最小(最小二乘法的思想);
- 输出
。
相应地,在 LWR 局部加权线性回归方法中,步骤如下:
- 使用参数
进行拟合,让加权距离
%7D(y%5E%7B(i)%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B(i)%7D%20)%5E2#card=math&code=%5Csum_i%20w%5E%7B%28i%29%7D%28y%5E%7B%28i%29%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B%28i%29%7D%20%29%5E2&height=32&width=130) 最小;
- 输出
。
上面式子中的 %7D#card=math&code=w%5E%7B%28i%29%7D&height=16&width=21) 是非负的权值。直观点说就是,如果对应某个
的权值
%7D#card=math&code=w%5E%7B%28i%29%7D&height=16&width=21) 特别大,那么在选择拟合参数
的时候,就要尽量让这一点的
%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B(i)%7D%20)%5E2#card=math&code=%28y%5E%7B%28i%29%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B%28i%29%7D%20%29%5E2&height=19&width=86) 最小。而如果权值
%7D#card=math&code=w%5E%7B%28i%29%7D&height=16&width=21) 特别小,那么这一点对应的
%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B(i)%7D%20)%5E2#card=math&code=%28y%5E%7B%28i%29%7D%20%E2%88%92%20%5Ctheta%5ET%20x%5E%7B%28i%29%7D%20%29%5E2&height=19&width=86) 就基本在拟合过程中忽略掉了。
对于权值的选取可以使用下面这个比较标准的公式:
%7D%20%3D%20exp(-%20%5Cfrac%20%7B(x%5E%7B(i)%7D-x)%5E2%7D%7B2%5Ctau%5E2%7D)%0A#card=math&code=w%5E%7B%28i%29%7D%20%3D%20exp%28-%20%5Cfrac%20%7B%28x%5E%7B%28i%29%7D-x%29%5E2%7D%7B2%5Ctau%5E2%7D%29%0A&height=37&width=148)
4 如果
是有值的向量,那就要对上面的式子进行泛化,得到的是
%7D%20%3D%20exp(%E2%88%92%20%5Cfrac%20%7B(x%5E%7B(i)%7D-x)%5ET(x%5E%7B(i)%7D-x)%7D%7B2%5Ctau%5E2%7D)#card=math&code=w%5E%7B%28i%29%7D%20%3D%20exp%28%E2%88%92%20%5Cfrac%20%7B%28x%5E%7B%28i%29%7D-x%29%5ET%28x%5E%7B%28i%29%7D-x%29%7D%7B2%5Ctau%5E2%7D%29&height=37&width=204),或者:
%7D%20%3D%20exp(%E2%88%92%20%5Cfrac%20%7B(x%5E%7B(i)%7D-x)%5ET%5CSigma%20%5E%7B-1%7D(x%5E%7B(i)%7D-x)%7D%7B2%7D)#card=math&code=w%5E%7B%28i%29%7D%20%3D%20exp%28%E2%88%92%20%5Cfrac%20%7B%28x%5E%7B%28i%29%7D-x%29%5ET%5CSigma%20%5E%7B-1%7D%28x%5E%7B%28i%29%7D-x%29%7D%7B2%7D%29&height=35&width=227),这就看是选择用
还是
。
要注意的是,权值是依赖每个特定的点 的,而这些点正是我们要去进行预测评估的点。此外,如果
%7D%20%E2%88%92%20x%7C#card=math&code=%7Cx%5E%7B%28i%29%7D%20%E2%88%92%20x%7C&height=19&width=51) 非常小,那么权值 $w^{(i)} $就接近
;反之如果
%7D%20%E2%88%92%20x%7C#card=math&code=%7Cx%5E%7B%28i%29%7D%20%E2%88%92%20x%7C&height=19&width=51) 非常大,那么权值 $w^{(i)} $就变小。所以可以看出,
的选择过程中,查询点
附近的训练样本有更高得多的权值。(
is chosen giving a much higher “weight” to the (errors on) training examples close to the query point x.)(还要注意,当权值的方程的形式跟高斯分布的密度函数比较接近的时候,权值和高斯分布并没有什么直接联系,尤其是当权值不是随机值,且呈现正态分布或者其他形式分布的时候。)随着点$x^{(i)} $ 到查询点
的距离降低,训练样本的权值的也在降低,参数
控制了这个降低的速度;
也叫做带宽参数,这个也是在你的作业中需要来体验和尝试的一个参数。
局部加权线性回归是咱们接触的第一个非参数 算法。而更早之前咱们看到的无权重的线性回归算法就是一种参数 学习算法,因为有固定的有限个数的参数(也就是 ),这些参数用来拟合数据。我们对
进行了拟合之后,就把它们存了起来,也就不需要再保留训练数据样本来进行更进一步的预测了。与之相反,如果用局部加权线性回归算法,我们就必须一直保留着整个训练集。这里的非参数算法中的 非参数“non-parametric” 是粗略地指:为了呈现出假设
随着数据集规模的增长而线性增长,我们需要以一定顺序保存一些数据的规模。(The term “non-parametric” (roughly) refers to the fact that the amount of stuff we need to keep in order to represent the hypothesis h grows linearly with the size of the training set. )