1. 模型向量化(重要)
(Model Vectorization)
为了在实际应用中计算更为方便,例如在编程中都是使用矩阵进行计算(参考 编程作业(1)线性回归),我们可以将整个模型向量化。
对于整个训练集而言:
1.1 输入输出及参数
可以用 特征矩阵
X 来描述所有特征,用参数向量
θ 来描述所有参数,用输出向量
y 表示所有输出变量:
X=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x0(1)x0(2):x0(m)x1(1)x1(2):x1(m)x2(1)x2(2):x2(m)⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅xn(1)xn(2):xn(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤ , θ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡θ0θ1:θn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤ , y=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡y(1)y(2):y(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
X 的维度是
m∗(n+1) 且
x0=1,
θ 的维度为
(n+1)∗1,
y 的维度为
m∗1
1.2 假设函数
整个训练集 的 所有假设结果 也可以用一个
m∗1 维的向量表示:
hθ(x)=Xθ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x0(1)θ0+x1(1)θ1+x2(1)θ2+⋅⋅⋅+xn(1)θnx0(2)θ0+x1(2)θ1+x2(2)θ2+⋅⋅⋅+xn(2)θn:x0(m)θ0+x1(m)θ1+x2(m)θ2+⋅⋅⋅+xn(m)θn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡hθ(x(1))hθ(x(2)):hθ(x(m))⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
1.3 代价函数
对于代价函数,也可以向量化,先看原始的公式:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2由于
(Xθ−y)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡hθ(x(1))−y(1)hθ(x(2))−y(2):hθ(x(m))−y(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤是一个
m∗1 的矩阵,故
(Xθ−y)T是一个
1∗m的矩阵,因此:
(Xθ−y)T(Xθ−y)=i=1∑m(hθ(x(i))−y(i))2=(Xθ−y)⋅(Xθ−y)其中最后一项表示向量
(Xθ−y)自身的内积(注意:内积是该向量每一项的平方之和,结果是标量)
因此代价函数就可以化简为:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2=2m1(Xθ−y)T(Xθ−y)=2m1(Xθ−y)⋅(Xθ−y)
1.4 梯度下降函数
最后,用向量来表示梯度下降,原公式为:
θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)现用向量来表示所有参数的更新过程:
θ=θ−αδ其中:
θ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡θ0θ1:θn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤ , δ=m1⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∑i=1m(hθ(x(i))−y(i))x0(i)∑i=1m(hθ(x(i))−y(i))x1(i)⋅⋅⋅⋅⋅⋅∑i=1m(hθ(x(i))−y(i))xn(i)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
又因为:
δ=m1⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡x0(1)x1(1):x0(1)x0(2)x1(2):x0(2)⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅x0(m)x1(m):x0(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡hθ(x(1))−y(1)hθ(x(2))−y(2)⋅⋅⋅⋅⋅⋅hθ(x(m))−y(m)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤=m1XT(Xθ−y)
因此,梯度下降可以表示为:
θ=θ−αm1XT(Xθ−y)
2. 正规方程
(Normal Equation)
到目前为止,我们都在使用 梯度下降算法 来求解 线性回归问题,即求偏导来寻找使代价函数得到最优解的参数。现介绍另外一种求 参数
θ的方法,即正规方程(Normal Equation):
假设我们的训练集特征矩阵为
X(包含了
x0),并且我们的训练集结果为向量
y,则利用正规方程可以直接解出最优的 参数向量
θ:
θ=(XTX)−1XTy上标
T 代表矩阵转置,上标
−1 代表矩阵的逆。
注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。
2.1 正规方程的推导过程
在模型向量化中,我们得到代价函数:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2=2m1(Xθ−y)T(Xθ−y)化简得:
J(θ)=2m1(Xθ−y)T(Xθ−y)=2m1(θTXT−yT)(Xθ−y)=2m1(θTXTXθ−θTXTy−yTXθ+yTy)接下来对
J(θ) 求偏导,需要用到以下几个矩阵的求导法则:
-
BdAB=AT
-
XdXTAX=2AX
对
J(θ) 求导得:
∂θ∂J(θ)=2m1(2XTXθ−XTy−(yTX)T−0)=2m1(2XTXθ−XTy−XTy−0)=2m1(2XTXθ−2XTy)=m1(XTXθ−XTy)令
∂θ∂J(θ)=0,则有:
θ=(XTX)−1XTy
2.2 梯度下降和正规方程的比较
梯度下降 |
正规方程 |
需要选择学习率
α |
不需要 |
需要多次迭代 |
一次运算得出,不需要迭代 |
当特征数量
n 很大时也能正常运行 |
不适合特征数量
n 很大的情况,因为逆矩阵
(XTX)−1的计算复杂度高,运算代价大,一般
n 小于10000 可接受 |
适用于各种类型的模型 |
只适用于线性模型,不适合逻辑回归模型等其他模型 |
2.3 正规方程之不可逆性
θ=(XTX)−1XTy通常有以下两种原因会使矩阵
XTX不可逆(即奇异矩阵):
- 模型中有多余的特征(Redundant features),使得矩阵
XTX线性相关(linearly dependent),例如两个特征都是面积,但是用了不同的单位(1 m = 3.28 feet):
-
x1=size in feet2
-
x1=size in m2
- 模型的特征数量过多,例如
m≤n,
m为样本数量,
n为特征数量
- 一般通过删除某些特征,或者使用正则化方法来解决
m≤n的问题,见下一章 过拟合与正则化