吴恩达机器学习(二)线性回归 3/3 —— 向量化及正规方程

1. 模型向量化(重要)

(Model Vectorization)

为了在实际应用中计算更为方便,例如在编程中都是使用矩阵进行计算(参考 编程作业(1)线性回归),我们可以将整个模型向量化。

在这里插入图片描述
对于整个训练集而言:

1.1 输入输出及参数

可以用 特征矩阵 X X X 来描述所有特征,用参数向量 θ \theta θ 来描述所有参数,用输出向量 y y y 表示所有输出变量:
X = [ x 0 ( 1 ) x 1 ( 1 ) x 2 ( 1 ) ⋅ ⋅ ⋅ x n ( 1 ) x 0 ( 2 ) x 1 ( 2 ) x 2 ( 2 ) ⋅ ⋅ ⋅ x n ( 2 ) : : : ⋅ ⋅ ⋅ : x 0 ( m ) x 1 ( m ) x 2 ( m ) ⋅ ⋅ ⋅ x n ( m ) ]   ,   θ = [ θ 0 θ 1 : θ n ]   ,   y = [ y ( 1 ) y ( 2 ) : y ( m ) ] X=\begin{bmatrix} x_0^{(1)}&x_1^{(1)}&x_2^{(1)}&···&x_n^{(1)}\\ \\ x_0^{(2)}&x_1^{(2)}&x_2^{(2)}&···&x_n^{(2)}\\ \\:&:&:&···&:\\ \\ x_0^{(m)}&x_1^{(m)}&x_2^{(m)}&···&x_n^{(m)}\\ \end{bmatrix}\ ,\ \theta=\begin{bmatrix} \theta_0\\ \\ \theta_1\\ \\:\\ \\ \theta_n \end{bmatrix}\ ,\ y=\begin{bmatrix} y^{(1)}\\ \\ y^{(2)}\\ \\:\\ \\ y^{(m)} \end{bmatrix} 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 X X 的维度是 m ∗ ( n + 1 ) m*(n+1) m(n+1) x 0 = 1 x_0=1 x0=1 θ \theta θ 的维度为 ( n + 1 ) ∗ 1 (n+1)*1 (n+1)1 y y y 的维度为 m ∗ 1 m*1 m1

1.2 假设函数

整个训练集所有假设结果 也可以用一个 m ∗ 1 m*1 m1 维的向量表示:
h θ ( x ) = X θ = [ x 0 ( 1 ) θ 0 + x 1 ( 1 ) θ 1 + x 2 ( 1 ) θ 2 + ⋅ ⋅ ⋅ + x n ( 1 ) θ n x 0 ( 2 ) θ 0 + x 1 ( 2 ) θ 1 + x 2 ( 2 ) θ 2 + ⋅ ⋅ ⋅ + x n ( 2 ) θ n : x 0 ( m ) θ 0 + x 1 ( m ) θ 1 + x 2 ( m ) θ 2 + ⋅ ⋅ ⋅ + x n ( m ) θ n ] = [ h θ ( x ( 1 ) ) h θ ( x ( 2 ) ) : h θ ( x ( m ) ) ] h_\theta(x)=X\theta=\begin{bmatrix} x_0^{(1)}\theta_0+x_1^{(1)}\theta_1+x_2^{(1)}\theta_2+···+x_n^{(1)}\theta_n\\ \\ x_0^{(2)}\theta_0+x_1^{(2)}\theta_1+x_2^{(2)}\theta_2+···+x_n^{(2)}\theta_n\\ \\:\\ \\ x_0^{(m)}\theta_0+x_1^{(m)}\theta_1+x_2^{(m)}\theta_2+···+x_n^{(m)}\theta_n\\ \end{bmatrix}=\begin{bmatrix}h_\theta(x^{(1)})\\ \\ h_\theta(x^{(2)})\\ \\:\\ \\ h_\theta(x^{(m)}) \end{bmatrix} 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 ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ)=\frac{1}{2m} \displaystyle\sum_{i=1}^{m} ( h_θ( x^{(i)} ) - y^{(i)}) ^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2由于 ( X θ − y ) = [ h θ ( x ( 1 ) ) − y ( 1 ) h θ ( x ( 2 ) ) − y ( 2 ) : h θ ( x ( m ) ) − y ( m ) ] (X θ - y)=\begin{bmatrix}h_\theta(x^{(1)})-y^{(1)}\\ \\ h_\theta(x^{(2)})-y^{(2)}\\ \\:\\ \\ h_\theta(x^{(m)})-y^{(m)} \end{bmatrix} (Xθy)=hθ(x(1))y(1)hθ(x(2))y(2):hθ(x(m))y(m)是一个 m ∗ 1 m*1 m1 的矩阵,故 ( X θ − y ) T (X θ - y)^T (Xθy)T是一个 1 ∗ m 1*m 1m的矩阵,因此:
( X θ − y ) T ( X θ − y ) = ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = ( X θ − y ) ⋅ ( X θ − y ) (X θ - y)^T(X θ - y)=\sum_{i=1}^m(h_θ( x^{(i)} ) - y^{(i)})^2=(X θ - y)·(X θ - y) (Xθy)T(Xθy)=i=1m(hθ(x(i))y(i))2=(Xθy)(Xθy)其中最后一项表示向量 ( X θ − y ) (X θ - y) (Xθy)自身的内积(注意:内积是该向量每一项的平方之和,结果是标量

因此代价函数就可以化简为: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ( X θ − y ) T ( X θ − y ) = 1 2 m ( X θ − y ) ⋅ ( X θ − y ) J(θ)=\frac{1}{2m} \sum_{i=1}^{m} ( h_θ( x^{(i)} ) - y^{(i)})^2 =\frac{1}{2m} (X θ - y)^T(Xθ - y)=\frac{1}{2m} (X θ - y)·(X θ - y) J(θ)=2m1i=1m(hθ(x(i))y(i))2=2m1(Xθy)T(Xθy)=2m1(Xθy)(Xθy)

1.4 梯度下降函数

最后,用向量来表示梯度下降,原公式为:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)现用向量来表示所有参数的更新过程: θ = θ − α δ \theta=\theta-\alpha\delta θ=θαδ其中: θ = [ θ 0 θ 1 : θ n ]    ,    δ = 1 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 1 ( i ) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x n ( i ) ] \theta=\begin{bmatrix} \theta_0\\ \\ \theta_1\\ \\:\\ \\ \theta_n \end{bmatrix}\ \ ,\ \ \delta=\frac{1}{m} \begin{bmatrix} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}\\ \\ \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_1^{(i)}\\ \\······\\ \\ \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_n^{(i)} \end{bmatrix} θ=θ0θ1:θn  ,  δ=m1i=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)

又因为: δ = 1 m [ x 0 ( 1 ) x 0 ( 2 ) ⋅ ⋅ ⋅ x 0 ( m ) x 1 ( 1 ) x 1 ( 2 ) ⋅ ⋅ ⋅ x 1 ( m ) : : ⋅ ⋅ ⋅ : x n ( 1 ) x n ( 2 ) ⋅ ⋅ ⋅ x n ( m ) ] [ h θ ( x ( 1 ) ) − y ( 1 ) h θ ( x ( 2 ) ) − y ( 2 ) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ h θ ( x ( m ) ) − y ( m ) ] = 1 m X T ( X θ − y ) \delta=\frac{1}{m} \begin{bmatrix} x_0^{(1)}&x_0^{(2)}&···&x_0^{(m)}\\ \\ x_1^{(1)}&x_1^{(2)}&···&x_1^{(m)}\\ \\:&:&···&:\\ \\ x_n^{(1)}&x_n^{(2)}&···&x_n^{(m)}\\ \end{bmatrix} \begin{bmatrix} h_\theta(x^{(1)})-y^{(1)}\\ \\ h_\theta(x^{(2)})-y^{(2)}\\ \\······\\ \\ h_\theta(x^{(m)})-y^{(m)} \end{bmatrix}=\frac{1}{m}X^T(X\theta-y) δ=m1x0(1)x1(1):xn(1)x0(2)x1(2):xn(2)x0(m)x1(m):xn(m)hθ(x(1))y(1)hθ(x(2))y(2)hθ(x(m))y(m)=m1XT(Xθy)
因此,梯度下降可以表示为:
θ = θ − α 1 m X T ( X θ − y ) \theta=\theta-\alpha\frac{1}{m}X^T(X\theta-y) θ=θαm1XT(Xθy)

2. 正规方程

(Normal Equation)

到目前为止,我们都在使用 梯度下降算法 来求解 线性回归问题,即求偏导来寻找使代价函数得到最优解的参数。现介绍另外一种求 参数 θ θ θ的方法,即正规方程(Normal Equation):

假设我们的训练集特征矩阵为 X X X(包含了 x 0 x_0 x0),并且我们的训练集结果为向量 y y y,则利用正规方程可以直接解出最优的 参数向量 θ θ θ
θ = ( X T X ) − 1 X T y θ=(X^TX)^{-1}X^Ty θ=(XTX)1XTy上标 T T T 代表矩阵转置,上标 − 1 -1 1 代表矩阵的逆。

注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

2.1 正规方程的推导过程

在模型向量化中,我们得到代价函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ( X θ − y ) T ( X θ − y ) J(θ)=\frac{1}{2m} \sum_{i=1}^{m} ( h_θ( x^{(i)} ) - y^{(i)})^2 =\frac{1}{2m} (X θ - y)^T(Xθ - y) J(θ)=2m1i=1m(hθ(x(i))y(i))2=2m1(Xθy)T(Xθy)化简得:
J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) = 1 2 m ( θ T X T − y T ) ( X θ − y ) = 1 2 m ( θ T X T X θ − θ T X T y − y T X θ + y T y ) \begin{aligned} J(θ)&=\frac{1}{2m} (X θ - y)^T(Xθ - y) \\&=\frac{1}{2m}(θ^TX^T-y^T)(Xθ - y) \\&=\frac{1}{2m}(θ^TX^TXθ-θ^TX^Ty-y^TXθ+y^Ty) \end{aligned} J(θ)=2m1(Xθy)T(Xθy)=2m1(θTXTyT)(Xθy)=2m1(θTXTXθθTXTyyTXθ+yTy)接下来对 J ( θ ) J(θ) J(θ) 求偏导,需要用到以下几个矩阵的求导法则:

  • d A B B = A T \dfrac{dAB}{B}=A^T BdAB=AT
  • d X T A X X = 2 A X \dfrac{dX^TAX}{X}=2AX XdXTAX=2AX

J ( θ ) J(θ) J(θ) 求导得:
∂ J ( θ ) ∂ θ = 1 2 m ( 2 X T X θ − X T y − ( y T X ) T − 0 ) = 1 2 m ( 2 X T X θ − X T y − X T y − 0 ) = 1 2 m ( 2 X T X θ − 2 X T y ) = 1 m ( X T X θ − X T y ) \begin{aligned} \frac{\partial J(θ)}{\partial θ}&=\frac{1}{2m}(2X^TXθ - X^Ty-(y^TX)^T-0) \\&=\frac{1}{2m}(2X^TXθ - X^Ty-X^Ty-0) \\&=\frac{1}{2m}(2X^TXθ - 2X^Ty) \\&=\frac{1}{m}(X^TXθ - X^Ty) \end{aligned} θJ(θ)=2m1(2XTXθXTy(yTX)T0)=2m1(2XTXθXTyXTy0)=2m1(2XTXθ2XTy)=m1(XTXθXTy) ∂ J ( θ ) ∂ θ = 0 \dfrac{\partial J(θ)}{\partial θ}=0 θJ(θ)=0,则有:
θ = ( X T X ) − 1 X T y θ=(X^TX)^{-1}X^Ty θ=(XTX)1XTy

2.2 梯度下降和正规方程的比较

梯度下降正规方程
需要选择学习率 α α α不需要
需要多次迭代一次运算得出,不需要迭代
当特征数量 n n n 很大时也能正常运行不适合特征数量 n n n 很大的情况,因为逆矩阵 ( X T X ) − 1 (X^TX)^{-1} (XTX)1的计算复杂度高,运算代价大,一般 n n n 小于10000 可接受
适用于各种类型的模型只适用于线性模型,不适合逻辑回归模型等其他模型

2.3 正规方程之不可逆性

θ = ( X T X ) − 1 X T y θ=(X^TX)^{-1}X^Ty θ=(XTX)1XTy通常有以下两种原因会使矩阵 X T X X^TX XTX不可逆(即奇异矩阵):

  • 模型中有多余的特征(Redundant features),使得矩阵 X T X X^TX XTX线性相关(linearly dependent),例如两个特征都是面积,但是用了不同的单位(1 m = 3.28 feet):
    • x 1 = s i z e   i n   f e e t 2 x_1=size\ in\ feet^2 x1=size in feet2
    • x 1 = s i z e   i n   m 2 x_1=size\ in\ m^2 x1=size in m2
  • 模型的特征数量过多,例如 m ≤ n m\leq n mn m m m为样本数量, n n n为特征数量
    • 一般通过删除某些特征,或者使用正则化方法来解决 m ≤ n m\leq n mn的问题,见下一章 过拟合与正则化
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值