机器学习 - 2 - 线性回归
首先吐槽我们的老师上课上得真是太烂了。。真的烂。。
PPT里也只会对没有意义的公式,而且还不解释是在干什么。。
回归
- 什么是回归
首先回归属于监督学习的一种,回归问题中,尝试预测连续的输出,与尝试预测离散的输出的分类问题恰恰相反。
举个例子:
- 预测房价
- 预测身高
- ...
- 回归模型
素材:
- 特征 \(x\)
- 预测值 \(y\)
- 训练集 \((x_i,y_i)\)
- 学习算法
- 回归函数 \(f\)
线性回归时:
\[f(X) = \omega_0 + \sum_{i = 1}^{m}\omega_ix_i \]
向量化(增加 \(x_0 = 1\),表示截距项):
\[f(X) = W^TX\]
一般化(当基函数不是多项式基函数时):
\[y(X,W) = \sum_{i = 0}^{M-1}\omega_i\phi_j(X) = W^T\Phi(X)\]
- 问题本质
拆分一下:
- 定义目标函数
- 使用训练集数据(真实数据)
- 最小化预测值 \(f\) 与真实输出值 \(y\) 的差异
- 确定模型中的参数 \(W^T\)
目标函数(代价函数):
\[J(W) = \frac{1}{2}\sum_{i=1}^{N}(f(X_i)-y_i)^2\]
进一步求出使 \(J(W)\) 最小的 \(W\) 即可。
- 定义目标函数
解回归
- 梯度下降法
策略:
- 随机赋 \(W\) 初值
- 改变 \(w_i\) 的值,使 \(J(W)\) 越来越小
- 沿梯度相反方向下降
梯度为一个向量,表示某一函数在某一点的方向导数沿该方向时取得最大值,即函数在该点处沿着该方向变化最快,变化率最大。
举个例子:
在爬山时,沿与等高线垂直的方向爬山,路最陡
怎么操作:
\[\omega_j^t = \omega_j^{t-1}-\alpha\frac{\partial}{\partial\omega_j}J(W)\]
\[\frac{\partial}{\partial\omega_j}J(W) = \sum_{i=1}^{N}(f(X_i)-y_i)\cdot X_{i,j}\]
所有 \(w_i\) 同时更新,其中 \(\alpha\) 为学习率/更新步长
一些衍生:
- 批处理梯度下降
- 每次更新都利用所有数据
- 大样本下,迭代速度很慢
- 随机梯度下降
- 每次只用一个样本
- 迭代速度快,大样本下较为有效,又被称为在线学习
一点补充:
- 标准方程组
矩阵化:
\[J(W) = \frac{1}{2}\sum_{i=1}^{N}(f(X_i)-y_i)^2 = (XW-y)^T(XW-y)\]
求导,另其为0:
\[\frac{\partial}{\partial W}J(W) = 2X^T(XW-y) = 0\]
解得:
\[W = (X^TX)^{-1}X^Ty\]
- 孰优孰劣
梯度下降 标准方程 需要选择学习率 不需要 迭代很多次 一次 \(O(kn^2)\) \(O(n^3)\) n很大时表现良好 n很大时很慢 数据需要归一化 不需要 结论:
样本量较小时选用标准方程组求解,样本量较大时选用梯度下降法求解
补充连接
matrix vector derivatives for machine learning
原文地址:https://www.cnblogs.com/ChildishChange/p/9746265.html