综述
学生党整理一些关于数据分析的知识:线性回归最小二乘法的介绍,误差评估及梯度下降等分析原理。
原理介绍
线性回归(最小二乘法)
以银行贷款为案例背景介绍:
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
… | … | … |
目标函数
- 目标:分析银行会贷款受工资和年龄的影响情况,预测银行贷款量
- 考虑:工资和年龄分别影响贷款的多少
- 思路:通过数据,找到一个合适的拟合平面
假设:
θ
1
\theta_1
θ1是年龄参数,
θ
2
\theta_2
θ2是工资参数
-
拟合平面为:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 ( θ 0 是 偏 置 项 ) h_\theta(x) = \theta_0+\theta_1x_1+\theta_2x_2\quad(\theta_0是偏置项) hθ(x)=θ0+θ1x1+θ2x2(θ0是偏置项) -
整合: h θ ( x ) = ∑ i = 0 n θ i x i = θ T x h_\theta(x) = \sum^{n}_{i = 0}\theta_ix_i=\theta^Tx hθ(x)=i=0∑nθixi=θTx
误差分析
真实值合预测值之间一定会存在差异(用 ε \varepsilon ε表述误差)
- 对于样本:
y i = θ T x i + ε i y^i=\theta^Tx^i+\varepsilon^i yi=θTxi+εi
误差 ε i \varepsilon^i εi是独立并且有相同的分布,并且服从 μ \mu μ为0, σ 2 \sigma^2 σ2为 θ 2 \theta^2 θ2的高斯分布(正态分布)。
- 独立:样本之间不会产生影响,每次贷款都是独立事件。
- 同分布:不同的样本每次贷款都是分布相同的事件。
- 高斯分布:银行给出的贷款量会有一定的浮动,大部分情况浮动小,小部分情况浮动大。
似然函数求解
思路:误差项用实际值和预测值的差代替,得到不含误差变量的函数,函数表示预测值成为实际值的可能性。
- 预测值与误差: y i = θ T x i + ε i y^i=\theta^Tx^i+\varepsilon^i yi=θTxi+εi
- 由于误差服从高斯分布: 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(yi∣xi;θ)=2πσ1e−2σ2(yi−θTxi)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)=\prod_{i=1}^{m}p(y^i|x^i;\theta)=\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(yi∣xi;θ)=i=1∏m2πσ1e−2σ2(yi−θTxi)2
- 取对数: l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ e − ( y i − θ T x i ) 2 2 σ 2 logL(\theta)=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^i-\theta^Tx^i)^2}{2\sigma^2}} logL(θ)=logi=1∏m2πσ1e−2σ2(yi−θTxi)2
- 展开化简: ∑ i = 1 m l o g 1 2 π σ e − ( y i − θ T x i ) 2 2 σ 2 = m l o g 1 2 π σ − 1 2 σ 2 ∑ i = 1 m ( y i − θ T x i ) 2 \sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^i-\theta^Tx^i)^2}{2\sigma^2}}=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2 i=1∑mlog2πσ1e−2σ2(yi−θTxi)2=mlog2πσ1−2σ21i=1∑m(yi−θTxi)2
- 目标:让似然函数越大越好,即目标函数越小,得出的函数拟合度越好 J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ T x i ) 2 ( 最 小 二 乘 法 ) J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2\quad(最小二乘法) J(θ)=21i=1∑m(yi−θTxi)2(最小二乘法)
偏导求解最小值:
- 目标函数: J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x i ) − y i ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) ) J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_\theta(x^i)-y^i)^2=\frac{1}{2}(X\theta-y)^T(X\theta-y)) J(θ)=21i=1∑m(hθ(xi)−yi)2=21(Xθ−y)T(Xθ−y))
- 求偏导: ∇ θ J ( θ ) = ∇ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) ) = X T X θ − X T y \nabla_\theta J(\theta)=\nabla_\theta(\frac{1}{2}(X\theta-y)^T(X\theta-y)))=X^TX\theta-X^Ty ∇θJ(θ)=∇θ(21(Xθ−y)T(Xθ−y)))=XTXθ−XTy
- 令偏导等于 0 即可得到拟合度最好的函数系数 θ = ( X T X ) − 1 X T y \theta =(X^TX)^{-1}X^Ty θ=(XTX)−1XTy
评估
- 最常用的评估项 R 2 R^2 R2: 1 − ∑ i = 1 m ( y i ^ − y i ) 2 ∑ i = 1 m ( y i − y ‾ ) 2 ( 残 差 平 方 和 ) ( 类 似 方 差 项 ) 1-\dfrac{\sum_{i = 1}^{m}(\hat{y_i}-y_i)^2}{\sum_{i = 1}^{m}(y_i- \overline{y})^2}\qquad\dfrac{(残差平方和)}{(类似方差项)} 1−∑i=1m(yi−y)2∑i=1m(yi^−yi)2(类似方差项)(残差平方和)
- R 2 R^2 R2的取值越接近于 1 认为模型的拟合度越好
梯度下降
当我们得到一个目标函数后,直接求解可能并不可行(线性回归可以当做一个特例),机器学习就是将一推数据交给机器,然后指定学习方向(目标函数),让它朝着这个方向去做。
- 目标函数: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^i)-y^i) J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)
- 目标:寻找山谷的最低点,即目标函数的极值点
- 方法:(1)找到合适方向(2)每次递增一小点(3)根据方向和递增量更新参数
三种梯度下降法
目标函数: J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^{m}(h_\theta(x^i)-y^i)^2 J(θ)=21i=1∑m(hθ(xi)−yi)2
- 批量梯度下降(BGD):
∂
J
(
θ
)
∂
θ
j
=
−
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
x
j
i
θ
j
′
=
θ
j
+
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
x
j
i
\frac{\partial J(\theta)}{\partial{\theta_j}}=-\frac{1}{m}\sum_{i=1}^{m}(y^i-h_\theta(x^i))x^i_j\qquad\theta_j'=\theta_j+\frac{1}{m}\sum_{i=1}^{m}(y^i-h_\theta(x^i))x^i_j
∂θj∂J(θ)=−m1i=1∑m(yi−hθ(xi))xjiθj′=θj+m1i=1∑m(yi−hθ(xi))xji
(容易得到最优解,但是由于每次考虑所有样本,速度很慢) - 随机梯度下降(SGD): θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i \theta_j'=\theta_j+(y^i-h_\theta(x^i))x^i_j θj′=θj+(yi−hθ(xi))xji(每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向)
- 小批量梯度下降法(MBGD): θ j : = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x k ) − y k ) x j k \theta_j:=\theta_j-\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^k)-y^k)x^k_j θj:=θj−α101k=i∑i+9(hθ(xk)−yk)xjk(每次更新选择一部分数据来算,实用!)
学习率
- 学习率(步长):对结果会产生巨大的影响,一般设置较小值
- 批量处理数据量:32,64,128都可以,很多时候还要考虑内存和效率
小结
本章主要介绍了线性回归的最小二乘法的推到过程、误差的评估方法、三种梯度下降方法及学习率的设置。