理解线性回归(一)——回归的思想
1. 经典的线性回归
之前介绍的LR回归和SVM算法本质上都和回归有写关联,尤其是LR回归算法。回归的目的是预测数值型的目标值,其核心部分和我们中小学时候学习到的线性拟合是一样的,就是说,假如我们能够建立了回归背后的数学模型,我们便可以根据输入变量来预测输出量。这儿的数学模型就是回归方程,里面的系数就是回归系数。求解这些回归系数的过程就是回归。
那么如何在给定一组输入x和输出y的情况下,求出回归系数w呢?一个常用的方法就是找出使误差最小的w,这里的误差是指预测y和真实y之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消。所以我们一般使用平方误差。
那么根据上式,我们便可知:给定了数据集X和输出y,我们便可以求出回归系数w。Python代码如下。(注意:这里涉及到矩阵X的求逆运算,我们需要先判断X是否奇异,即如果X的行列式det(X)==0,那么我们是不可以求逆的,这个判断可以使用numpy模块中的linalg.det来计算行列式)
def standRegres(xArr,yArr):
xMat = mat(xArr); yMat = mat(yArr).T
xTx = xMat.T*xMat
if linalg.det(xTx) == 0.0: #计算矩阵X的行列式,判断X是否奇异,是否可以求逆
print "This matrix is singular, cannot do inverse"
return
ws = xTx.I * (xMat.T*yMat)