线性回归
回归被用来估计或解释一个独立变量(y)和一个or更多独立变量(x_i)之间的关系。最基础的回归-线性回归-基于一个线性方程。
假设这个方程为:
此处 y 是一个独立变量,\theta_0 和 \theta_1 是模型的参数,x 是另一个独立变量,也被称为特征。
我们的目标就是找到参数 \theta_1 和 \theta_0 的一组值,这组值能最好的拟合训练的数据集。那么如何定义拟合的好坏呢?
\epsilon_i,被定义为 error。我们想要的就是能令\epsilon_i最小的那组\theta。下面说方法。
穷举搜索
测试 \theta 的所有值。但是太费时间。
正规方程
换个方式写y = \theta_1 x+ \theta_0:
在这里,h_\theta(X) 是个假设函数,\hat{y} 是估计的目标值。\theta 是模型的参数向量,包括偏差(bias)\theta_0 和特征权重(feature weight)\theta_1 到 \theta_N,X是特征的向量(不是特征向量,是特征的向量)。
经过推导,就能得到Normal Equation:
推导过程网络上很多,比如 机器学习(2)——线性回归(Linear Regression) - 知乎 (zhihu.com)
在Normal Equation中,X为特征的向量,y为实际目标值从 y_1 到 y_m,m 是点的数量。\hat{\theta} 就是可以令cost function最小的那组值。
正规方程法是确定性算法,不需要设置学习率,不需要反复迭代,只需要矩阵运算就可直接求出 \theta。
梯度下降(Gradient Descent)
梯度下降法是一种迭代优化算法。
首先,定义均方差MSE(Mean Square Error)为cost function:
梯度下降算法使用预测值和实际值之间的差异来决定下行步骤的速度,差距越大,下行速度越快。当预测值和实际值之间差异消失,cost也就最小,此时的 \theta 也就成为了全局最优解。
\theta_j根据上述方程更新,\theta的初始值一般是随机的。\eta 代表学习率,也就是使用多大的步长,来寻找cost function的局部最小值。学习率是一个超参数(hyperparameter),所谓调参调参,调的就是这些参。。。
换句话说,梯度下降就是循着表面的斜率下降的方向一直走,直到找到一个valley。
从图3中可以看书,如果学习率设定的太小,那么就需要更多次的迭代来到达最小点,如果太大,则可能根本不会收敛。
两种梯度下降的方法
Batch Gradient Descent
会使用数据集中的所有点来计算MSE和对应梯度。
Stochastic Gradient Descent
相比BGD,这个方法会随机采样数据集来计算。
更高维度的回归
也可以把模型假设为更高阶的模型:
Y是被预测的独立变量,\theta是梯度系数,x_n是n维的特征。
对于2阶和3阶的MSE:
如果在建模时选择的n太小,可能会导致 underfitting,不能代表整个数据集。反之,n太大会导致 overfitting。
相比于正规方程法只适用于线性回归,而梯度下降法适用于更高维度的回归。