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

1. 模型向量化(重要)

(Model Vectorization)

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

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

1.1 输入输出及参数

可以用 特征矩阵 X X 来描述所有特征,用参数向量 θ \theta 来描述所有参数,用输出向量 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 X 的维度是 m ( n + 1 ) m*(n+1) x 0 = 1 x_0=1 θ \theta 的维度为 ( n + 1 ) 1 (n+1)*1 y y 的维度为 m 1 m*1

1.2 假设函数

整个训练集所有假设结果 也可以用一个 m 1 m*1 维的向量表示:
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}

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 由于 ( 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} 是一个 m 1 m*1 的矩阵,故 ( X θ y ) T (X θ - y)^T 是一个 1 m 1*m 的矩阵,因此:
( 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 ) (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)

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)} 现用向量来表示所有参数的更新过程: θ = θ α δ \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}

又因为: δ = 1 m [ x 0 ( 1 ) x 0 ( 2 ) x 0 ( m ) x 1 ( 1 ) x 1 ( 2 ) x 1 ( m ) : : : x 0 ( 1 ) x 0 ( 2 ) x 0 ( 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_0^{(1)}&x_0^{(2)}&···&x_0^{(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)
因此,梯度下降可以表示为:
θ = θ α 1 m X T ( X θ y ) \theta=\theta-\alpha\frac{1}{m}X^T(X\theta-y)

2. 正规方程

(Normal Equation)

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

假设我们的训练集特征矩阵为 X X (包含了 x 0 x_0 ),并且我们的训练集结果为向量 y y ,则利用正规方程可以直接解出最优的 参数向量 θ θ
θ = ( X T X ) 1 X T y θ=(X^TX)^{-1}X^Ty 上标 T T 代表矩阵转置,上标 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 ( θ ) = 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 ( θ ) J(θ) 求偏导,需要用到以下几个矩阵的求导法则:

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

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 ( θ ) θ = 0 \dfrac{\partial J(θ)}{\partial θ}=0 ,则有:
θ = ( X T X ) 1 X T y θ=(X^TX)^{-1}X^Ty

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

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

2.3 正规方程之不可逆性

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

  • 模型中有多余的特征(Redundant features),使得矩阵 X T X X^TX 线性相关(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
    • x 1 = s i z e   i n   m 2 x_1=size\ in\ m^2
  • 模型的特征数量过多,例如 m n m\leq n m m 为样本数量, n n 为特征数量
    • 一般通过删除某些特征,或者使用正则化方法来解决 m n m\leq n 的问题,见下一章 过拟合与正则化
发布了21 篇原创文章 · 获赞 21 · 访问量 1967

猜你喜欢

转载自blog.csdn.net/m0_37867091/article/details/104859679