作为监督学习必掌握的模型之一,简单线性回归虽名为简单,但其中也涵盖了诸多数学知识点(例如矩阵计算,向量偏导),虽然很多公式已经集成在了各种package中,但这些知识点的理解掌握对于代码的快速实现以及基础知识的巩固还是大有裨益的。
问题引入
已知一个样本数量为10,带有噪声的一维特征的线性数据集,其Target与Feature的函数关系如图表示为:
现在我们得知一个新的数据feature value(x)=1.5,但其target value未知,如何才能根据现有的样本,最好的去预测其应有的目标值呢?最好的方法就是去拟合一条直线,让它最大程度的代表此样本集的线性关系。当我们求解出了所要的线性模型,再将特征值代入,就能得到最合理的目标值了。
而这个过程就是线性回归。
简单线性回归
一元线性回归
假设数据满足线性模型条件,因此其预测目标值y与特征值x存在关系:
y p r e d = b + w x y_{pred}=b+wx ypred=b+wx
变化为向量形式为
Y p r e d = ( y p r e d 1 y p r e d 2 ⋮ ) = ( 1 x 1 1 x 2 ⋮ ⋮ ) ( b w ) = X T Θ Y_{pred} = \begin{pmatrix} y_{pred1} \\ y_{pred2} \\ \vdots \\ \end{pmatrix} = \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ \end{pmatrix} \begin{pmatrix} b \\ w \\ \end{pmatrix} =X^T\Theta Ypred=⎝⎜⎛ypred1ypred2⋮⎠⎟⎞=⎝⎜⎛11⋮x1x2⋮⎠⎟⎞(bw)=XTΘ
其中b为y轴截距,w为系数。
思路:找到最优的(b,w)使线性模型在历史数据上的误差最小
这里误差的定义为:Sum of Squared Error(SSE)
S S E = ∑ k = 0 n − 1 ( y p r e d k − y k ) 2 = ( Y p r e d − Y ) T ( Y p r e d − Y ) = ( X T Θ − Y