线性回归及其Python实现(最大似然法)
标签: Python 机器学习
本节内容总结于博主在牛客网机器学习特训营的笔记
参考资料:《机器学习实战》
1.什么是线性回归(Linear Regression)
维基百科:线性回归
在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
按照博主自己的理解,线性就是因变量的变化量和自变量的变化量成比例(比如1个鸡蛋1元钱,2个鸡蛋2元钱,3个鸡蛋3元钱,其中价格变化量:鸡蛋变化量始终为1:1),数学上表现为一阶导数为常数。例如这个例子的线性回归方程就是 y = x y=x y=x,一阶导数 y ′ = 1 y\prime=1 y′=1。
线性回归就是把因变量和自变量之间的关系看做线性的关系,然后求它们之间线性关系,感觉是一种减熵的效果,所以是回归。比如把人脚底板长度作为自变量,身高作为因变量,那么在这两种数据之间就可以做一个简单线性回归,可以得到脚底板长度和身高的关系式。公安人员可以依据这种方法从犯罪现场的脚印推断出犯罪嫌疑人身高。
2.回归系数公式推导
假设因变量为 y y y,自变量为 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn,则有
(1) y = h w ( x ) = w 0 + w 1 x 1 + . . . + w n x n = ∑ i = 0 n w i x i = w T x y=h_w(x)=w_0+w_1x_1+...+w_nx_n=\sum _{i=0}^nw_ix_i=w^Tx\tag{1} y=hw(x)=w0+w1x1+...+wnxn=i=0∑nwixi=wTx(1)
w 0 w_0 w0是 x 0 = 1 x_0=1 x0=1的系数,表示全局偏移量,在平面直线中的具体意义为截距,也作为自变量的一个维度。
因为种种原因,数据是按照一定的误差分布在拟合的曲线两边,否则只需要少数的几个数据就能拟合出完美的直线了。幸运的是,这种误差符合正态分布,所以从此处入手开始推导线性回归方程。
假设一共有m个样本,对于第i个数据(注意不是平方),有
(2) y ( i ) = w T x ( i ) + ξ ( i ) y^{(i)}=w^Tx^{(i)}+\xi ^{(i)}\tag{2} y(i)=wTx(i)+ξ(i)(2)
其中 ξ ( i ) \xi ^{(i)} ξ(i)概率密度为正态分布的概率密度
(3) p ( ξ ( i ) ) = 1 2 π σ e x p [ − ( ξ ( i ) ) 2 2 σ 2 ] p(\xi ^{(i)})=\frac {1}{\sqrt {2\pi}\sigma}exp[-\frac {(\xi ^{(i)})^2}{2\sigma ^2}]\tag{3} p(ξ(i))=<