Cyan's Blog

Search

Search IconIcon to open search

Part.9_Normal_Equation(ML_Andrew.Ng.)

Last updated Aug 14, 2021 Edit Source

# Normal Equation

2021-08-14

Tags: #MachineLearning #NormalEquation #LinearRegression

# Definition

The value of $\theta$ that minimizes $J(\theta)$ can be given in closed form by the equation $$ \theta=\left(X^{T} X\right)^{-1} X^{T} \vec{y} $$

其中 $$ X_{m\times (n+1)}=\left[\begin{array}{c} -\left(x^{(1)}\right)^{T}- \\ -\left(x^{(2)}\right)^{T}- \\ \vdots \\ -\left(x^{(m)}\right)^{T}- \end{array}\right] . $$ (其中$x$是$n+1$维列向量) $$ \vec{y}_{m\times 1}=\left[\begin{array}{c} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{array}\right] . $$

# Intuitive

具体的数学知识参见Linear Algebra and Its Applications by David C. Lay 第6章

# 推导

假设要得到$\theta$, 使$X\theta$尽可能靠近$\vec y$

# 通过向量空间推导

详细推导见上方提及的书Linear Algebra and Its Applications by David C. Lay 第6章

大概思路: $X$ 的列向量垂直于$(\vec y -\mathrm {proj}_{Col(X)}\space \vec y)=(\vec y-X\theta)$, 所以$X$的列与$(\vec y-X\theta)$的内积为0, 也就相当于$X^T$与$(\vec y-X\theta)$的矩阵积为0 $\Rightarrow X^T(\vec y-X\theta)=0 \Rightarrow X^T\vec y=X^TX\theta$

然后如果$X$的列向量独立, 那么$X^TX$可逆, 那么$\theta=(X^TX)^{-1}X^T\vec y$

# 求导数

Normal_Equation_Proof_2_Matrix_Method

# 局限性

$$ \begin{aligned} &\left[\begin{array}{c} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{array}\right]=\left[\begin{array}{ccc} 1 & x_{1} & x_{1}^{2} \\ 1 & x_{2} & x_{2}^{2} \\ \vdots & \vdots & \vdots \\ 1 & x_{n} & x_{n}^{2} \end{array}\right]\left[\begin{array}{c} \beta_{0} \\ \beta_{1} \\ \beta_{2} \end{array}\right]+\left[\begin{array}{c} \varepsilon_{1} \\ \varepsilon_{2} \\ \vdots \\ \varepsilon_{n} \end{array}\right]\\ &\quad y\quad=\quad\quad X \quad \quad\quad \quad \beta\quad+\quad\varepsilon \end{aligned}$$

# Normal Equation & Noninvertibility

因为方程是$\theta=\left(X^{T} X\right)^{-1} X^{T} \vec{y}$ , 在以下两种情况的时候, 可能会出现$(X^{T} X)$不可逆的情况:

在Octave语言里面 pinv (pseudo inverse) 可以用于求不可逆矩阵的逆 (inv 只能用于可逆矩阵)

# Normal Equation & Gradient Descent

Normal Equation方法只能解决线性回归问题(或者, 更一般地: 多重回归的线性模型4), 相比之下, 梯度下降能解决更多机器学习模型的参数问题

下面是对两个方法的一个比较:

Gradient DescentNormal Equation
Need to choose alphaNo need to choose alpha
Needs many iterationsNo need to iterate
$O(kn^2)$$O(n^3)$, need to calculate inverse of $X^TX$
Works well when n is largeSlow if n is very large

在正规方程法里面, 计算矩阵的逆的时间复杂度是$\mathcal{O}\left(n^{3}\right) .$ 所以在特征数量很大的时候, 这个方法的速度会很慢. 在实际应用中, 如果n > 10,000 就需要考虑使用梯度下降这种迭代形式来求参数的最优解了.

# 在应用的时候需要注意的地方

在完成作业的时候, 我发现利用Normal Equation 方法和 梯度下降方法所得到的$\theta$值不一样:

这是因为在梯度下降里面我们运用了Feature Scaling, 而在Normal Equation方法里面, 我们不需要对变量进行放缩.

最后他们的预测结果是完全一样的(考虑误差):


  1. 欧氏距离最小, 即 最小二乘法, 也即 均方误差作为损失函数要最小化 ↩︎

  2. Linear Algebra and Its Applications (4th Edition) by David C. Lay 第6.5节 ↩︎

  3. 这时可能有一解或者多解, 联系线性代数里面线性方程组的知识, 如果有多解, 那么说明列向量并不是独立的, 说明特征不是独立的. 具体参见 Linear Algebra and Its Applications (4th Edition) by David C. Lay 第6.5节 ↩︎

  4. Linear Algebra and Its Applications (4th Edition) by David C. Lay 第6.6节, 最小二乘法在线性模型中的应用:

    例4表明,多重回归的线性模型和前面例题中的简单回归模型具有同样的抽象形式,线性代数为我们理解所有线性模型内在的一般原理提供了帮助,定义只要$X$适当,关于$β$的标准方程就具有相同的矩阵形式,不管包含多少变量,这样,对$X^TX$可逆的任何线性模型,最小二乘中的$\hat β$总可由$\left(X^{T} X\right)^{-1} X^{T} \vec{y}$ 计算得到.

     ↩︎