1 线性回归
1.1 概念
- 利用称为线性回归方程的最小二乘函数对 一个或者多个自变量 和 因变量 之间关系进行建模的一种回归分析。
- 主要应用于对连续值的预测,例如股票的价格、房价的趋势等
1.2 推导方法
1.2.1 模型 - 线性回归方程
y(x,w)=w0+w1x(1)
1.2.2 目标函数 - 平方损失函数
一个数据点为 (
xi,
yi) 的误差:
yi−(w0+w1xi)(2)
误差损失总和 「残差」:
i=1∑n(yi−(w0+w1xi))(3)
在线性回归中,使用残差的平方和来表示所有样本点的误差「平方损失函数」:
i=1∑n(yi−(w0+w1xi))2(4)
1.2.3 求解方法
1.2.3.1 最小二乘法 - 代数求解(一元)
平方损失函数为:
f=i=1∑n(yi−(w0+w1xi))2(5)
我们的目标是求取平方损失函数
min(f) 最小时,对应的
w。首先求
f 的 1
阶偏导数:
∂w0∂f=−2(i=1∑nyi−nw0−w1i=1∑nxi)∂w1∂f=−2(i=1∑nxiyi−w0i=1∑nxi−w1i=1∑nxi2)(6)
然后,我们令
∂w0∂f=0 以及
∂w1∂f=0,解得:
w1=n∑xi2−(∑xi)2n∑xiyi−∑xi∑yiw0=n∑xi2−(∑xi)2∑xi2∑yi−∑xi∑xiyi(7)
求出了平方损失函数最小时对应的
w 参数值,这也就是最佳拟合直线。
1.2.3.2 最小二乘法 - 矩阵求解(一元 或者 多元)
线性回归方程:
y(x,w)=w0+w1x(1)
表达成矩阵形式为:
⎣⎢⎢⎢⎢⎡y1y2...y9y10⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡1,x11,x2...1,x91,x10⎦⎥⎥⎥⎥⎤∗[w0w1](8)
即:
y(x,w)=XW(8)
(8)式中,而
X 则是
⎣⎢⎢⎢⎢⎡1,x11,x2...1,x91,x10⎦⎥⎥⎥⎥⎤ ,
W 为
[w0w1] 矩阵。
平方损失函数为:
f=i=1∑n(yi−(w0+w1xi))2=(y−XW)T(y−XW)(9)
此时,对矩阵求偏导数得到:
∂W∂f=2∗XTXW−2∗XTy=0(10)
常用向量矩阵求导公式
当矩阵
XTX 满秩时,
(XTX)−1XTX=E,且
EW=W。所以,
(XTX)−1XTXW=(XTX)−1XTy。最终得到:
W=(XTX)−1XTy(11)
在使用矩阵求解的过程中,还是使用了一元来举例子求解,但如果(8)式中,
X 代入
⎣⎢⎢⎢⎢⎡1,x11,x12,x13,...,x1n1,x21,x22,x23,...,x2n1,x31,x32,x33,...,x3n...1,xm1,xm2,xm3,...,xmn⎦⎥⎥⎥⎥⎤ ,
W 代入
⎣⎢⎢⎢⎢⎢⎢⎡w0w1w2w3...wm⎦⎥⎥⎥⎥⎥⎥⎤ 矩阵,其实这个就是多元的线性回归的求解过程。
1.2.4 性能度量
平均绝对误差(MAE) 就是绝对误差的平均值:
MAE(y,y^)=n1i=1∑n∣yi−y^i∣(12)
其中,
yi 表示真实值,
y^i 表示预测值,
n 则表示值的个数。MAE 的值越小,说明预测模型拥有更好的精确度。
均方误差(MSE) 它表示误差的平方的期望值:
MSE(y,y^)=n1i=1∑n(yi−y^)2(13)
其中,
yi 表示真实值,
y^i 表示预测值,
n 则表示值的个数。MSE 的值越小,说明预测模型拥有更好的精确度。
2 sklearn 中使用
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(train_x, train_y)
model.coef_, model.intercept_
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
print("线性回归平均绝对误差: ", mean_absolute_error(test_y, results.flatten()))
print("线性回归均方误差: ", mean_squared_error(test_y, results.flatten()))
print("线性回归 R square: ", r2_score(test_y, results.flatten()))
3 优缺点
优点: 实现简单,计算简单
缺点: 不能拟合非线性数据
4 疑问
4.1 线性回归用于特征的筛选
LinearRegression训练后,使用 model.coef_得到模型的参数,参数越大表示权重越大
4.2 线性回归,Ridge回归(L2范式),Lasso回归(L1范式)之间的联系
前面矩阵求解的时候,最小二乘法的矩阵解法是有局限性的,就是 公式
(11) 成立的条件就是
∣∣XTX∣∣ 不能为 0。而当变量之间的相关性较强(多重共线性),或者
m 大于
n 时,
(11) 式中的
X 不是满秩(
rank(A)̸=dim(x))矩阵。从而使得
∣∣XTX∣∣ 的结果趋近于 0,造成拟合参数的数值不稳定性增加。
所以以下两种场景建议使用 L1 或者 L2 范式
- 数据集的列(特征)数量 > 数据量(行数量),即 XX 不是列满秩。
- 数据集列(特征)数据之间存在较强的线性相关性,即模型容易出现过拟合。
4.3 最小二乘法算法复杂度怎么分析?
4.4 由2引出的疑问 sklearn 中 Ridge / Lasso 和 LinearRegression 结果是一样的吗? 有待验证
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
4.5 最大似然估计,梯度下降,最小二乘法之间有什么联系
- 为什么会出现这些求解过程?SVM支持向量机
- 在 sklearn 的 LinearRegression 有使用到么?LinearRegression 使用的是最小二乘法,sklearn 里面也有梯度下降的算法
批量梯度下降(BGD)
优点:得到全局最优解;易于并行实现
缺点:当样本数目很多时,训练过程会很慢
随机梯度下降(SGD)
优点:训练速度快
缺点:准确度下降,并不是全局最优;不易于并行实现
小批量梯度下降(MBGD)
参考资料
机器学习算法1_线性回归 Datawhale
线性回归 - 爖
线性回归算法 - 黑桃