Topic
- 什么是线性回归?原理及实现
- 什么是最小二乘法?
- 最小二乘法代数求解
- 最小二乘法矩阵求解
本篇是理论篇,实战篇:线性回归实战
一、线性回归
先来回想下: 回归
回归 面对的一群连续值,从这群连续的点钟找出误差最小的线,从而来预估其他点
通过找到一条直线去拟合数据点的分布趋势的过程,就是线性回归的过程
然而这种线可能会有很多,那么如何从中找出最合适的线呢?
找到红线?
二、最小二乘法代数求解
最小二乘法是用于求解线性回归拟合参数 w 的一种常用方法,(均方误差最小)
先来理解下 平方损失函数
y(x,w)=b+wx
对数据进行拟合时,得到拟合的整体误差(即蓝色线段的长度总和)
平方损失函数
如果一个数据点为(
xi,yi
),那么它对应的误差(损失)为:
yi−(b+wxi)
那么损失总和:
∑i=1n(yi−(b+wxi))
更倾向于使用
均方误差
作为衡量损失的指标
∑i=1n(yi−(b+wxi))2
(1) 平方损失函数:
f=∑i=1n(yi−(b+wxi))2
(2)目标求
min(f)
最小时, 对应的
w
分别对 w
和 b
求导,一阶偏导,并令其为零
∂f∂w=2(w∑i=1nx2−∑i=1n(y−b)x)=0
∂f∂b=2(mb−∑i=1n(y−wx))=0
(3)求得:
w=∑ni=1y(x−x1)∑ni=1x2−1m(∑ni=1x)2
均值:
x1=1n∑i=1mx
b=1m∑i=1n(y−wx)
(4)结果
这样,就求出了 平方损失函数最小时对应的 ww 参数值,这也就是最佳拟合直线
三、 最小二乘法矩阵求解
为什么又要用矩阵来运算呢?代数计算方法不好吗?
- 并不是代数计算方式不好,只是在小数据集情况下,二者运算的效率相近
- 当面临 十万 或 百万规模的数据时,矩阵计算的效率就会高很多
(1)
y=wx+b
,表达矩阵形式为:
⎡⎣⎢⎢⎢⎢⎢⎢x1x2x3...xn111...1⎤⎦⎥⎥⎥⎥⎥⎥(1)
即:
y=XW
(2)平方损失函数 :
f=∑ni=1(yi−(b+wxi))2
f=∑i=1n(y−XW)2=∑i=1n(y−XW)T(y−XW)(2)
(3)对 矩阵求偏导数
f=2∗XTXW−2∗XTy=0(3)
注意:
这里将 W 看做是系数变量,即
WT=W
,W是常量,固定的W转置是等价的。
(4)求得
当 矩阵
XTX
满秩(先不考虑不满秩)时,
(XTX)−1XTX=E
, 且
EW=W
所以,
(XTX)−1XTXW=(XTX)−1XTy
得到:
W=(XTX)−1XTy
最后
看到这边是否有些疲惫,奖励自己一杯肥仔快乐水吧!!!
下一篇将介绍 线性回归实战
加油!!!