1、从一个例子来了解线性回归
数据:工资和年龄
目标:预测银行贷款额度
考虑:工资和年龄对银行贷款额度的影响程度
工资 | 年龄 | 贷款额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
自变量(特征):工资(X1)、年龄(X2)
因变量:贷款额度(y)
假设
θ
1
\theta_1
θ1是工资参数,
θ
2
\theta_2
θ2是年龄参数,
则该例子中回归方程为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
h_\theta(x) =\theta_0 + \theta_1x_1 +\theta_2x_2
hθ(x)=θ0+θ1x1+θ2x2
2、线性回归算法详解(Linear Regression)
对于每个样本,输出值是各特征的线性组合:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
h_\theta(x) =\theta_0 + \theta_1x_1 +\theta_2x_2+\cdots+\theta_nx_n
hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn
h
θ
(
x
)
=
∑
i
=
1
n
θ
i
x
i
=
θ
T
x
h_\theta(x) = \displaystyle\sum_{i=1}^n\theta_ix_i=\theta^Tx
hθ(x)=i=1∑nθixi=θTx (其中
θ
0
\theta_0
θ0是偏置项)
假设样本数量为m,每个样本包含n个特征,则输入数据为一个m*n的矩阵。
θ
\theta
θ:表示各个特征的权重
x
(
i
)
x^{(i)}
x(i):表示第
i
i
i行所有的
x
x
x
h
θ
(
x
(
i
)
)
h_\theta(x^{(i)})
hθ(x(i)):表示第
i
i
i行所有的
x
x
x乘以
θ
\theta
θ后的取值
y
(
i
)
y^{(i)}
y(i):表示第
i
i
i行对应的真实的
y
y
y值
误差
真实值与预测值之间的误差用
ε
\varepsilon
ε表示,对于每个样本,有
y
(
i
)
=
θ
T
x
(
i
)
+
ε
(
i
)
y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)}
y(i)=θTx(i)+ε(i)
误差
ε
(
i
)
\varepsilon^{(i)}
ε(i)服从均值为0方差为
σ
2
\sigma^2
σ2的高斯分布
似然函数
高斯分布函数密度曲线可以表示为:
f
(
x
)
=
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
f(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
f(x)=2πσ1e−2σ2(x−μ)2 (
μ
\mu
μ:均值
σ
\sigma
σ:标准差)
则有误差服从高斯分布:
p
(
ε
(
i
)
)
=
1
2
π
σ
e
−
(
ε
(
i
)
)
2
2
σ
2
p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\varepsilon^{(i)})^2}{2\sigma^2}}
p(ε(i))=2πσ1e−2σ2(ε(i))2
将误差公式代入,则有
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
1
2
π
σ
e
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}
p(y(i)∣x(i);θ)=2πσ1e−2σ2(y(i)−θTx(i))2
似然函数:
L
(
θ
)
=
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∏
i
=
1
m
1
2
π
σ
e
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
L(\theta)=\displaystyle\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=\displaystyle\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}
L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1e−2σ2(y(i)−θTx(i))2
似然函数解释:什么样的参数组合
θ
T
\theta^T
θT能够使得数据的预测值恰好是真实值的概率最大
似然函数公式化简
由于似然函数包含累乘算术,将累乘变成累加有利于计算
根据
l
o
g
(
A
∗
B
)
=
l
o
g
A
+
l
o
g
B
log(A*B)=logA+logB
log(A∗B)=logA+logB 则有
对数似然函数:
l
o
g
L
(
θ
)
=
l
o
g
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
l
o
g
∏
i
=
1
m
1
2
π
σ
e
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
logL(\theta)=log\displaystyle\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=log\displaystyle\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}
logL(θ)=logi=1∏mp(y(i)∣x(i);θ)=logi=1∏m2πσ1e−2σ2(y(i)−θTx(i))2
展开化简:
∑
i
=
1
m
l
o
g
(
1
2
π
σ
e
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
)
\displaystyle\sum_{i=1}^mlog(\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}})
i=1∑mlog(2πσ1e−2σ2(y(i)−θTx(i))2)
=
m
l
o
g
1
2
π
σ
−
1
σ
2
.
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
)
=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}.\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)
=mlog2πσ1−σ21.21i=1∑m(y(i)−θTx(i))2)
目标:让似然函数(对数似然函数)值越大越好,因此目标函数
J
(
θ
)
J(\theta)
J(θ)的值要越小越好
目标函数
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
)
J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)
J(θ)=21i=1∑m(y(i)−θTx(i))2)
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
)
J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)
J(θ)=21i=1∑m(y(i)−θTx(i))2)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
h
θ
(
x
(
i
)
)
)
2
=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)}))^2
=21i=1∑m(y(i)−hθ(x(i)))2
=
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
=\frac{1}{2}(X\theta-y)^T(X\theta-y)
=21(Xθ−y)T(Xθ−y)
对 J ( θ ) J(\theta) J(θ)求偏导,令偏导为0,得 θ = ( X T X ) − 1 X T y \theta=(X^TX)^{-1}X^Ty θ=(XTX)−1XTy
评估方法
最常用的评估项
R
2
R^2
R2:
R
2
=
1
−
∑
i
=
1
m
(
y
i
^
−
y
i
)
2
∑
i
=
1
m
(
y
i
−
y
ˉ
)
2
R^2=1-\frac{\displaystyle\sum_{i=1}^m(\hat{y_i}-y_i)^2}{\displaystyle\sum_{i=1}^m(y_i-\bar{y})^2}
R2=1−i=1∑m(yi−yˉ)2i=1∑m(yi^−yi)2
残差平方和:
∑
i
=
1
m
(
y
i
^
−
y
i
)
2
\displaystyle\sum_{i=1}^m(\hat{y_i}-y_i)^2
i=1∑m(yi^−yi)2
方差:
∑
i
=
1
m
(
y
i
−
y
ˉ
)
2
\displaystyle\sum_{i=1}^m(y_i-\bar{y})^2
i=1∑m(yi−yˉ)2
当
R
2
R^2
R2越接近1,我们认为模型拟合效果越好
3、梯度下降
当引入了目标函数
J
(
θ
)
J(\theta)
J(θ)之后,如何进行求解,不是每次都可以直接求解的(线性回归可直接求目标函数的偏导为0是特例)
梯度下降是一种寻找目标函数最小化的方法。
目标函数为:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
)
J(\theta)=\frac{1}{2}\displaystyle\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2)
J(θ)=21i=1∑m(y(i)−θTx(i))2)
θ
i
=
θ
i
−
α
∂
∂
θ
i
J
(
θ
)
\theta_i = \theta_i - \alpha\frac{\partial}{ \partial\theta_i}J(\theta)
θi=θi−α∂θi∂J(θ)
α
\alpha
α:学习率,会对结果产生很大影响,一般设置较小
图片来源于:https://www.jianshu.com/p/93d9fea7f4c2
从数学的角度看,梯度的方向是函数增长最快的方向,梯度的反方向就是函数减小最快的方向。
越接近最优解的时候,步长越小。因为这个向量等于
α
i
\alpha_i
αi与偏导数 的乘积,虽然
α
i
\alpha_i
αi始终是一个定值,但是越接近最值的时候,这个坡度就会越缓,从而导数的值就越小,也就是乘积变小了,这就是看到步长变小的缘故。
-
批量梯度下降
每次都考虑所有的样本,容易得到最优解,但是速度慢
-
随机梯度下降
每次随机找一个样本,迭代速度快,但不一定每次都朝着收敛的方向
-
小批量梯度下降
每次更新选择一小部分数据来计算,较为实用!