机器学习——线性回归
目录
你的人生永远不会辜负你,那些转错的弯,走错的路,流下的泪水,滴下的汗水,留下的伤痕。所有这些全都让你成为独一无二的自己!
线性回归是什么?
- 线性: 指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数;
- 非线性: 则指不按比例、不成直线的关系,一阶导数不为常数;
- 线性关系: 两个变量之间存在一次方函数关系,就称它们之间存在线性关系。正比例关系是线性关系中的特例,反比例关系不是线性关系。更通俗一点讲,如果把这两个变量分别作为点的横坐标与纵坐标,其图象是平面上的一条直线,则这两个变量之间的关系就是线性关系。即如果可以用一个二元一次方程来表达两个变量之间关系的话,这两个变量之间的关系称为线性关系,因而,二元一次方程也称为线性方程。推而广之,含有n个变量的一次方程,也称为n元线性方程,不过这已经与直线没有什么关系了;
- 回归: 回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系,特别是当输入变量的值发生变化时,输出变量的值也随之发生变化。回归模型正是表示从输入变量到输出变量之间映射关系的函数;
线性回归中因变量(x)服从正态分布?
我们假设线性回归的噪声服从均值为0的正态分布。 当噪声符合正态分布 N ( 0 , δ 2 ) % N(0, \delta^2) N(0,δ2)时,因变量则符合正态分布 N ( a x ( i ) + b , δ 2 ) % N(ax_{(i)}+b, \delta^2) N(ax(i)+b,δ2),其中预测函数 y = a x ( i ) + b % y=ax_{(i)}+b y=ax(i)+b。这个结论可以由正态分布的概率密度函数得到。也就是说当噪声符合正态分布时,其因变量必然也符合正态分布。在用线性回归模型拟合数据之前,首先要求数据应符合或近似符合正态分布,否则得到的拟合函数不正确。
一般表达式(公式)是什么?
向量形式为:
h
(
x
)
=
w
x
+
b
h(x) =wx+b
h(x)=wx+b
简化符号,可以令:
w
=
(
w
1
,
.
.
.
,
w
n
,
b
)
T
w=(w_1,...,w_n,b)^T
w=(w1,...,wn,b)T
x
=
(
x
(
1
)
,
.
.
.
,
x
(
n
)
,
1
)
T
x=(x^{(1)},...,x^{(n)},1)^T
x=(x(1),...,x(n),1)T
数学模型表示为:
h
(
x
)
=
w
T
x
h(x) =w^Tx
h(x)=wTx
基本的原理是什么?
1.给定数据集
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
% D = \left\{ {\left( {{x_i},{y_i}} \right)} \right\}_{i = 1}^m
D={(xi,yi)}i=1m,其中
x
i
=
(
x
i
1
,
x
i
2
,
…
,
x
i
d
)
% x_i=\left( {{x_{i1}},{x_{i2}}, \ldots ,{x_{id}}} \right)
xi=(xi1,xi2,…,xid),
y
i
∈
R
% {y_i} \in R
yi∈R(线性回归的输出空间是整个实数空间)
线性回归试图学到:
f
(
x
i
)
=
w
T
x
i
+
b
(
1
)
f\left( {{x_i}} \right) = {w^T}{x_i} + b\qquad \qquad (1)
f(xi)=wTxi+b(1)使得:
f
(
x
i
)
≃
y
i
f\left( {{x_i}} \right) \simeq {y_i}
f(xi)≃yi
为便于讨论,使得:
b
=
w
0
⋅
x
0
b = {w_0} \cdot x{}_0
b=w0⋅x0其中
x
0
=
1
% {x_0} = 1
x0=1。此时
w
% w
w就成为了
w
=
(
w
0
,
w
1
,
…
,
w
d
)
w = \left( {{w_0},{w_1}, \ldots ,{w_d}} \right)
w=(w0,w1,…,wd)
x
% x
x就成了
x
i
=
(
1
,
x
i
1
,
…
,
x
i
d
)
x_i=\left( {{1},{x_{i1}}, \ldots ,{x_{id}}} \right)
xi=(1,xi1,…,xid)期望学得的函数为
f
(
x
i
)
=
w
T
x
i
f\left( {{x_i}} \right) = {w^T}{x_i}
f(xi)=wTxi
2.预测值和真实值之间都肯定存在差异
ε
% \varepsilon
ε,对于每个样本:
y
i
=
w
T
x
i
+
ε
i
(
2
)
{y_i} = {w^T}{x_i} + {\varepsilon _i \qquad \qquad(2)}
yi=wTxi+εi(2)
假设误差
ε
% \varepsilon
ε是独立同分布的,并且服从高斯分布。即:
p
(
ε
i
)
=
1
2
π
σ
exp
(
−
ε
i
2
2
σ
2
)
(
3
)
p\left( {{\varepsilon _i}} \right) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{{{\varepsilon _i}^2}}{{2{\sigma ^2}}}} \right)\qquad\qquad (3)
p(εi)=2πσ1exp(−2σ2εi2)(3)
将(2)代入(3)中,得到在已知参数
w
% w
w和数据
w
i
% w_i
wi的情况下,预测值为
y
i
% y_i
yi的条件概率:
p
(
y
i
∣
x
i
;
w
)
=
1
2
π
σ
exp
(
−
(
y
i
−
w
T
x
i
)
2
2
σ
2
)
(
4
)
p\left( {{y_i}\left| {{x_i};w} \right.} \right) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)\qquad \qquad (4)
p(yi∣xi;w)=2πσ1exp(−2σ2(yi−wTxi)2)(4)
3.将(4)连乘得到在已知参数
w
% w
w和数据x的情况下,预测值为
y
% y
y的条件概率,这个条件概率在数值上等于,likelihood(w|x,y),也就是在已知现有数据的条件下,
w
% w
w是真正参数的概率,即似然函数:
L
(
w
)
=
∏
i
=
1
m
p
(
y
i
∣
x
i
;
w
)
=
∏
i
=
1
m
1
2
π
σ
exp
(
−
(
y
i
−
w
T
x
i
)
2
2
σ
2
)
(
5
)
L\left( w \right) {\rm{ = }}\prod\limits_{i = 1}^m {p\left( {{y_i}\left| {{x_i};w} \right.} \right)} = \prod\limits_{i = 1}^m {\frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right) \qquad \qquad (5)
L(w)=i=1∏mp(yi∣xi;w)=i=1∏m2πσ1exp(−2σ2(yi−wTxi)2)(5)
为什么要引入似然函数:为了根据样本估计参数值。
为什么要对似然函数进行log变换:由于乘法难解,通过对数可以将乘法转换为加法,简化计算。
对数似然函数:
ℓ
(
w
)
=
log
∏
i
=
1
m
1
2
π
σ
exp
(
−
(
y
i
−
w
T
x
i
)
2
2
σ
2
)
=
∑
i
=
1
m
log
1
2
π
σ
exp
(
−
(
y
i
−
w
T
x
i
)
2
2
σ
2
)
=
∑
i
=
1
m
log
1
2
π
σ
+
∑
i
=
1
m
l
o
g
(
exp
(
−
(
y
i
−
w
T
x
i
)
2
2
σ
2
)
)
=
m
log
1
2
π
σ
−
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
2
σ
2
=
m
log
1
2
π
σ
−
1
σ
2
1
2
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
(
6
)
\begin{array}{l} \ell\left( w \right) = \log \prod\limits_{i = 1}^m {\frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{{\sqrt {2\pi } \sigma }}} \exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)\\ = \sum\limits_{i = 1}^m {\log \frac{1}{{\sqrt {2\pi } \sigma }}} + \sum\limits_{i = 1}^m {log\left( {\exp \left( { - \frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \right)} \right)} \\ = m\log \frac{1}{{\sqrt {2\pi } \sigma }} - \sum\limits_{i = 1}^m {\frac{{{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}}}{{2{\sigma ^2}}}} \\ = m\log \frac{1}{{\sqrt {2\pi } \sigma }} - \frac{1}{{{\sigma ^2}}}\frac{1}{2}\sum\limits_{i = 1}^m {{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}} \end{array}(6)
ℓ(w)=logi=1∏m2πσ1exp(−2σ2(yi−wTxi)2)=i=1∑mlog2πσ1exp(−2σ2(yi−wTxi)2)=i=1∑mlog2πσ1+i=1∑mlog(exp(−2σ2(yi−wTxi)2))=mlog2πσ1−i=1∑m2σ2(yi−wTxi)2=mlog2πσ1−σ2121i=1∑m(yi−wTxi)2(6)
得到目标函数:
J
(
w
)
=
1
2
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
=
1
2
∥
[
y
1
−
w
T
x
1
y
2
−
w
T
x
2
⋯
y
m
−
w
T
x
m
]
∥
2
=
1
2
∥
[
y
1
y
2
⋯
y
m
]
−
w
T
[
x
1
x
2
⋯
x
m
]
∥
2
=
1
2
∥
y
−
w
T
X
∥
2
=
1
2
(
y
−
w
T
x
)
T
(
y
−
w
T
x
)
(
7
)
(
最
小
二
乘
法
)
\begin{array}{l} J(w) = \frac{1}{2}\sum\limits_{i = 1}^m {{{\left( {{y_i} - {w^T}{x_i}} \right)}^2}} \\ = \frac { 1 } { 2 } \left\| \left[ \begin{array} { c } { y _ { 1 } - w ^ { T } x _ { 1 } } \\ { y _ { 2 } - w ^ { T } x _ { 2 } } \\ { \cdots } \\ { y _ { m } - w ^ { T } x _ { m } } \end{array} \right] \right\| ^ { 2 }= \frac { 1 } { 2 } \left\| \left[ \begin{array} { l } { y _ { 1 } } \\ { y _ { 2 } } \\ { \cdots } \\ { y _ { m } } \end{array} \right] - w ^ { T } \left[ \begin{array} { c } { x _ { 1 } } \\ { x _ { 2 } } \\ { \cdots } \\ { x _ { m } } \end{array} \right] \right\| ^ { 2 } \\ = \frac{1}{2}{\left\| {y - {w^T}X} \right\|^2} = \frac{1}{2}{\left( {y - {w^T}x} \right)^T}\left( {y - {w^T}x} \right)\end{array} \qquad (7) (最小二乘法)
J(w)=21i=1∑m(yi−wTxi)2=21∥∥∥∥∥∥∥∥⎣⎢⎢⎡y1−wTx1y2−wTx2⋯ym−wTxm⎦⎥⎥⎤∥∥∥∥∥∥∥∥2=21∥∥∥∥∥∥∥∥⎣⎢⎢⎡y1y2⋯ym⎦⎥⎥⎤−wT⎣⎢⎢⎡x1x2⋯xm⎦⎥⎥⎤∥∥∥∥∥∥∥∥2=21∥∥y−wTX∥∥2=21(y−wTx)T(y−wTx)(7)(最小二乘法)
为什么要让目标函数越小越好:似然函数表示样本成为真实的概率,似然函数越大越好,也就是目标函数
J
(
w
)
% J\left( w \right)
J(w)越小越好。
4. 目标函数是凸函数,只要找到一阶导数为0的位置,就找到了最优解。
因此求偏导:
∂
J
(
w
)
∂
w
=
1
2
∂
∂
w
(
(
y
−
w
T
x
)
T
(
y
−
w
T
x
)
)
=
1
2
∂
∂
w
(
(
y
−
X
w
)
T
(
y
−
X
w
)
)
=
1
2
∂
∂
w
(
w
T
X
T
X
w
−
2
w
T
X
y
+
y
T
y
)
=
1
2
(
X
T
X
w
+
X
T
X
w
−
2
X
y
)
=
X
T
X
w
−
X
y
(
8
)
\begin{array}{l} \frac{{\partial J\left( w \right)}}{{\partial w}} = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{{\left( {y - {w^T}x} \right)}^T}\left( {y - {w^T}x} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{{\left( {y - Xw} \right)}^T}\left( {y - Xw} \right)} \right)\\ = \frac{1}{2}\frac{\partial }{{\partial w}}\left( {{w^T}{X^T}Xw - 2{w^T}Xy + {y^T}y} \right)\\ {\rm{ = }}\frac{1}{2}\left( {{X^T}Xw{\rm{ + }}{X^T}Xw{\rm{ - }}2Xy} \right)\\ {\rm{ = }}{X^T}Xw{\rm{ - }}Xy \end{array} \qquad\qquad (8)
∂w∂J(w)=21∂w∂((y−wTx)T(y−wTx))=21∂w∂((y−Xw)T(y−Xw))=21∂w∂(wTXTXw−2wTXy+yTy)=21(XTXw+XTXw−2Xy)=XTXw−Xy(8)
5. 令偏导等于0
∂
J
(
w
)
∂
w
=
0
(
9
)
\frac{{\partial J\left( w \right)}}{{\partial w}} = {\rm{0}} \qquad\qquad (9)
∂w∂J(w)=0(9)
得到:
X
T
X
w
=
X
y
(
10
)
{X^T}Xw = Xy \qquad\qquad (10)
XTXw=Xy(10)
情况一:
X
T
X
% {X^T}X
XTX可逆,唯一解。令公式(10)为零可得最优解为:
w
∗
=
(
X
T
X
)
−
1
X
T
y
(
11
)
w^* = {\left( {{X^T}X} \right)^{ - 1}}X^Ty \qquad\qquad (11)
w∗=(XTX)−1XTy(11)
学得的线性回归模型为:
y
∧
=
w
T
X
=
X
T
w
=
X
T
(
X
T
X
)
−
1
X
T
y
(
12
)
\mathop y\limits^ \wedge = {w^T}X = {X^T}w = {X^T}{\left( {{X^T}X} \right)^{ - 1}}{X^T}y \qquad\qquad (12)
y∧=wTX=XTw=XT(XTX)−1XTy(12)
情况二:
X
T
X
% {X^T}X
XTX不可逆,可能有多个解。选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是增加
λ
% \lambda
λ扰动。
w
∗
=
(
X
T
X
+
λ
I
)
−
1
X
T
y
(
13
)
{w^*} = {\left( {{X^T}X + \lambda I} \right)^{ - 1}}{X^T}y \qquad\qquad (13)
w∗=(XTX+λI)−1XTy(13)
线性回归可以解决什么问题?
对大量的观测数据进行处理,从而得到比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在,从而就可以模拟出结果,也就是对结果进行预测。 解决的就是通过已知的数据得到未知的结果。 例如:对房价的预测、判断信用评价、电影票房预估等。
过拟合欠拟合如何解决?
过拟合,欠拟合是什么?
- 图(1)预测的结果与真实的结果误差比较大不能很好的拟合数据,表示为欠拟合(训练集与预测集的准确率都低)。
- 图(2)预测的结果与真实的结果误差较小可以拟合数据,表示为合适拟合。
- 图(3)预测的结果与真实的结果误差太小对训练数据的拟合太强 ,表示为过拟合(训练集准确率高,测试集准确率低)
如何解决过拟合,欠拟合?
-
使用正则化项,也就是给loss 加上一个参数项,正则化项有L1正则化、L2正则化、ElasticNet(弹性网络)。加入这个正则化项好处:
- 控制参数幅度,不让模型“无法无天”。
- 限制参数搜索空间
- 解决欠拟合与过拟合的问题。
-
正则化的一般形式: ∑ i = 1 M L ( y i , f ( x i ; θ ) ) + λ J ( f ) \sum_{i=1}^M L(y_i, f(x_i;\theta)) + \lambda J(f) i=1∑ML(yi,f(xi;θ))+λJ(f)
-
正则化项一般是模型复杂度的单调递增函数。当模型越复杂的时正则化项越大,而当模型越复杂的时候就越容易产生过拟合。因此我们不仅要最小化损失函数,同时还要减小模型的复杂度。
作用:防止过拟合,提高泛化能力。 -
上式中 λ 是模型复杂度和损失函数之间的权衡,当λ很大时,模型越越简单,但是可能会发生欠拟合。当λ很小时,模型复杂,模型可能会发生过拟合。通常使用交叉验证确定λ 。
-
正则化项可以对应于贝叶斯先验概率,简单的模型先验概率比较高,复杂的模型概率比较小。
-
有两种方式可以表示正则化项 L1正则化、L2正则化: ∑ i = 1 M L ( y i , f ( x i ; θ ) ) + λ ∣ ∣ θ ∣ ∣ 1 ( L 1 正 则 化 ) ∑ i = 1 M L ( y i , f ( x i ; θ ) ) + λ ∣ ∣ θ ∣ ∣ 2 ( L 2 正 则 化 ) \sum_{i=1}^M L(y_i, f(x_i;\theta)) + \lambda ||\theta||_1 \qquad\ (L1正则化) \\ \sum_{i=1}^M L(y_i, f(x_i;\theta)) + \lambda ||\theta||_2 \qquad\ (L2正则化) i=1∑ML(yi,f(xi;θ))+λ∣∣θ∣∣1 (L1正则化)i=1∑ML(yi,f(xi;θ))+λ∣∣θ∣∣2 (L2正则化)
-
两者都可以表示模型的复杂度,但两者的作用却不一样
-
对于 L1范数,参数更趋向于等于0,学习得到的参数更加稀疏,具有特征选择的作用。
- 惩罚项表示为图中的黑色棱形,随着梯度下降法的不断逼近,与棱形第一次产生交点,而这个交点很容易出现在坐标轴上。这就说明了L1正则化容易得到稀疏矩阵。
- 应用场景:L1正则化(Lasso回归)可以使得一些特征的系数变小,甚至还使一些绝对值较小的系数直接变为0,从而增强模型的泛化能力。对于高的特征数据,尤其是线性关系是稀疏的,就采用L1正则化(Lasso回归),或者是要在一堆特征里面找出主要的特征,那么L1正则化(Lasso回归)更是首选了。
-
对于L2范数,每个参数都比较均衡,非0参数比较多,得到的参数更加平滑,可以防止过拟合。
- 惩罚项表示为图中的黑色圆形,随着梯度下降法的不断逼近,与圆第一次产生交点,而这个交点很难出现在坐标轴上。这就说明了L2正则化不容易得到稀疏矩阵,同时为了求出损失函数的最小值,使得w1和w2无限接近于0,达到防止过拟合的问题。
- 应用场景:只要数据线性相关,用LinearRegression拟合的不是很好,需要正则化,可以考虑使用岭回归(L2)。如果输入特征的维度很高,而且是稀疏线性关系的话, 岭回归就不太合适,考虑使用Lasso回归(L1)。
-
ElasticNet其实就是L1与L2的综合(既加入L1也加入L2):
- 应用场景:ElasticNet在我们发现用Lasso回归太过(太多特征被稀疏为0),而岭回归也正则化的不够(回归系数衰减太慢)的时候,可以考虑使用ElasticNet回归来综合,得到比较好的结果。
线性回归优点or缺点!
- 优点:
(1)思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效;
(2)是许多强大的非线性模型的基础。
(3)线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析。
(4)蕴含机器学习中的很多重要思想。
(5)能解决回归问题。 - 缺点:
(1)对于非线性数据或者数据特征间具有相关性多项式回归难以建模.
(2)难以很好地表达高度复杂的数据。
线性回归vs逻辑回归!
- (1)线性回归要求因变量服从正态分布,logistic回归对变量分布没有要求。
- (2)线性回归要求因变量(Y)是连续性数值变量,而logistic回归要求因变量是分类型变量。
- (3)线性回归要求自变量和因变量呈线性关系,而logistic回归不要求自变量和因变量呈线性关系
- (4)线性回归是直接分析因变量与自变量的关系,而logistic回归是分析因变量取某个值的概率与自变量的关系