版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darkrabbit/article/details/80544777
线性回归(Linear Regression)
之前并未做过笔记,所以这篇文章是对线性模型的回顾,对应:
- 第一周:(06)1.6 线性回归模型
- 第一周:(07)1.6 线性回归模型-优化算法
- 第一周:(08)1.6 线性回归模型-模型选择
- 《机器学习》(西瓜书):第3章 线性模型 - 3.1 基本形式
- 《机器学习》(西瓜书):第3章 线性模型 - 3.2 线性回归
- sklearn官方文档
1 线性模型(Linear Models)
给定由d个属性描述的示例
x=(x1,x2,⋯,xd)
,其中
xi
是
x
在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:
y^(ω,x)=f(x)=ω0+ω1x1+ω2x2+⋯+ωdxd
其中,
ω=(ω0,ω1,ω2,⋯,ωd)
。
注意,在sklearn
中,
ω=(ω1,ω2,⋯,ωd)
用coef_
表示,而
ω0
用intercept_
表示。
sklearn官方文档原文
y^(ω,x)=ω0+ω1x1+ω2x2+⋯+ωpxp
Across the module, we designate the vector
ω=(ω1,ω2,⋯,ωp)
as
coef_
and
ω0
as
intercept_
.
在sklearn
中,线性模型来自同一个模块,且使用方法一样,伪代码:
from sklearn import linear_model
model = linear_model.线性模型(线性模型参数)
model.fit(X_train)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)
2 线性回归(Linear Regression)与最小二乘法(Ordinary Least Squares)
给定数据集
D={(x1,y1),(x2,y2),⋯,(xm,ym)}
,其中
xi=(xi1,xi2,⋯,xid)T,yi∈R
。
“线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测输出标记:
f(xi)=ωTxi+b使得f(xi)⋍yi
为了确定其中的
ω
与
b
,我们将使用回归任务最常用的性能度量方法“均方误差”来衡量
f(x)
与
y
之间的差别,我们试图让它最小。
而均方误差的几何意义对应了“欧氏距离”(Euclidean distance)。
2.1 最小二乘法(Ordinary Least Squares)
基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(Ordinary Least Squares)。
假设
d=1
,即
x={xi}
,则线性回归的试图学得:
f(xi)=ωxi+b
均方误差最小化:
minE(ω,b)=argminω∑i=1m(f(xi)−yi)2=argminω∑i=1m(yi−ωxi−b)2
最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。所以,为了使上式最小,分别对
ω,b
求导:
对
ω
求导详细过程:
∂E(ω,b)∂ω=∂(∑mi=1(yi−ωxi−b)2)∂ω=2(∑i=1m(yi−ωxi−b)(yi−ωxi−b)′)=2(∑i=1m(yi−ωxi−b)(−xi))=2(∑i=1m(ωx2i−yixi+bxi))=2(∑i=1m(ωx2i)−∑i=1m(yixi−bxi))=2(ω∑i=1mx2−∑i=1m(yi−b)xi)
对
b
求导详细过程:
∂E(ω,b)∂b=∂(∑mi=1(yi−ωxi−b)2)∂b=2(∑i=1m(yi−ωxi−b)(yi−ωxi−b)′)=2(∑i=1m(yi−ωxi−b)(−1))=2(∑i=1m(ωxi−yi+b))=2(∑i=1mb+∑i=1m(ωxi−yi))=2(mb−∑i=1m(yi−ωxi))
然后再令他们等于零,这样可以解得最优解的闭式(closed-form):
⎧⎩⎨⎪⎪⎪⎪2(ω∑mi=1x2−∑mi=1(yi−b)xi)2(mb−∑mi=1(yi−ωxi))=0=0⟹⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ωb=∑mi=1yi(xi−1m∑mi=1xi)∑mi=1x2i−1m(∑mi=1xi)2=1m∑mi=1(yi−ωxi)
直接求解
ω
(不使用克莱默法则)详细过程:
那么将b带入到第一个式子得:
2(ω∑i=1mx2−∑i=1m(yi−b)xi)ω∑i=1mx2ω∑i=1mx2ω∑i=1mx2ω∑i=1mx2ω∑i=1mx2ω∑i=1mx2−ωm(∑i=1mxi)2ω=0=∑i=1m(yi−b)xi=∑i=1m(yi−1m∑i=1m(yi−ωxi))xi=∑i=1m(yixi−xim∑i=1myi+ωxim∑i=1mxi)=∑i=1myixi−∑i=1m(xim∑i=1myi)+∑i=1m(ωxi⋅1m∑i=1mxi)=∑i=1myixi−∑i=1m(yi⋅1m∑i=1mxi)+ωm(∑i=1mxi)2=∑i=1myi(xi−1m∑i=1mxi)=∑mi=1yi(xi−1m∑mi=1xi)∑mi=1x2i−1m(∑mi=1xi)2,(1m∑i=imxi=x¯,均值是常数),(∑(a∑b)=∑∑(ab))
2.2 线性回归(Linear Regression)
放到一般情况,即
x=(x1,x2,⋯,xd)
,试图学得:
f(xi)=ωTxi+b使得f(xi)⋍yi
这称为“多元线性回归”(multivariate linear regression)。
我们将它适用于所有样本:
y=Xω^
其中:
和之前类似的,我们得到均方误差最小化:
minE(ω,b)=argminω(y−Xω^)T(y−Xω^)
同样的令它等于零,这样可以解得最优解的闭式(closed-form):
2XT(Xω^−y)XTXω^(XTX)−1XTXω^ω^=0=XTy=(XTX)−1XTy=(XTX)−1XTy,ifXTX=∣∣∣∣满秩矩阵(full-rank matrix)or正定矩阵(positive definite matrix)
则可得出多元最终模型:
f(Xi)=Xi(XTX)−1XTy
几乎所有的任务中,
XTX
都不是满秩矩阵。此时可解出多个
Xi
,选择哪一个作为输出,将由学习算法决定,常见的是引入正则项(regularization)
正则项为空时,也可以称为最小二乘回归。
2.3 sklearn中的线性回归模型
在sklearn
中,导入线性回归:
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LinearRegressionCV
LR = LinearRegression()
LR.fit(X_train)
y_test_pred = LR.predict(X_test)
3 带正则的线性回归(Linear Regression With Regularizer)
3.1 Lasso(L1正则)
它的目标函数为:
12×Nsamples×||y−Xω||22+λ||ω||1
由于
λ||ω||1
在
ωj=0
时,不可w微,所以在梯度下降法进行优化求解时,需要使用次梯度。
在sklearn
中,导入Lasso:
from sklearn.linear_model import Lasso
from sklearn.linear_model import LassoCV
from sklearn.linear_model import LassoLars
from sklearn.linear_model import LassoLarsCV
from sklearn.linear_model import LassoLarsIC
3.2 Ridge(岭回归)(L2正则)
又称为吉洪诺夫正则化方法(Tikhonov regularization),它的目标函数为:
12×Nsamples×||y−Xω||22+λ||ω||22
在sklearn
中,导入Ridge:
from sklearn.linear_model import Ridge
from sklearn.linear_model import RidgeCV