在机器学习中,Linear Regression有两种方法:梯度下降和 Normal Equation,对应到数学就是微积分和线性代数的知识。梯度下降容易理解但实现起来略复杂,Normal Equation 则十分简洁,公式θ=inv(X'* X)*X'*y
,为什么竟然可行?其背后的数学原理是什么?从代数的角度推导容易得出公式但并不解决困惑。
这篇文章记录一下我的思考和理解过程,从直观的角度出发做一些分析。
简单分析
从方程组的角度看:假设 Xθ = y
代表方程组,在一些特殊条件下,我们可以求解出 θ,这是最基本的利用矩阵解方程组。但现实中并没有多少特殊情况,θ 并不总是可解(可解条件:当且仅当y是X中列向量的线性组合时,方程组可解;亦即,当 y 在 X 的 column space 中时可解)。
观察我们的公式 θ = inv(X'* X) * X' * y
,即在 Xθ = y
两边同时乘以 X'(转置)后的变形(前提是X'*X可逆)。通过这种方法使得方程“可解”。此时的 θ 应该叫 θ-hat了。
那么,
- 为什么通过乘以X转置能使得不可解的方程“可解”?
- 解得的 θ-hat到底是什么?
- 这一系列的操作有什么几何意义?
下面做一些说明,
- 方程
Xθ = y
“可解”的条件是 “y 在 X 的 column space 中”,将 X'X 视为等号左边的 X,X'y 视为右边的 y,此时 X'X 的列空间与 X' 的相同,X'y 是对 X' 的列向量的线性组合,就是说 “等式右边的向量在左边的矩阵的列空间中了”; - 我们解得的 X*θ-hat 是向量 y 在矩阵 X 上的投影(此处应该有图);
- 也就是说,我们在方程无解时,转而求解 y 在 X 的向量空间的投影来求得近似值。既然是近似,那么就有误差了,而误差表达起来也十分优雅:如果我们把 y 在矩阵 X 上的投影表示为向量 p,那么误差向量 e = y - p,||e||就是我们在最小二乘法中求得的误差值,或者说是我们 Machine Learning 中的 cost function 的分子部分。
本文仅是我已有线性代数知识的总结和结论,错误和疏漏在所难免。至于更直观的图示和详细的解释,可以查看维基百科:“投影”、“最小二乘法”等相关词条。偷懒了~