什么是回归
预测的结果是连续值,则称之为回归。当因变量和自变量为线性关系时,它是一种特殊的线性模型。
举个例子
- 研究一个例子:不同的工资和年龄,在同一家银行能获得多少额度的贷款
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
- 假设:X1(年龄),X2(工资)就是我们的两个特征,Y(额度)是额度。
![工资和年龄对贷款额度的影响](https://img-blog.csdnimg.cn/20190924212521616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE0OTAyMzg5,size_16,color_FFFFFF,t_70 #pic_center =300x300) - 画一个三维平面,在上面标出对应的点,就能找到一个面,来表示三者间的关系
数学公式
- 假设θ1表示年龄,θ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
θ0是一个偏置项偏置项:
就是y=kx+b中的b
打个比方 有点(1,1) 属于1类 点(2,2)属于2类,请问是否能从原点画一条线把他们分开
不可以,所以需要偏置值b,这样线段就不从(0,0)点出发了
在神经网络中也经常用到偏置项,这个东西影响不大…
- 整合一下
h θ ( x ) = ∑ x = 0 n θ x x x = θ T x h_\theta(x) = \sum_{x=0}^n{\theta_xx_x=\theta^Tx} hθ(x)=x=0∑nθxxx=θTx
这样就根据已知的数据得到了一个平面,而接下来要做的就是通过新的样本在这个三维坐标系中标记我们的预测样本。
怎么处理回归问题
对回归问题来说,假设的选择是一个关键问题。在已知的数据中得到了一个拟合平面,如果得到新的预测样本,把样本标记到坐标系中,就能得到预测的结果(这里结果指贷款额度),如上图所示,红点就是预测值,得到的结果往往不能完全很好的出现在平面上,这时就体现了一个东西——误差。真实值和预测值之间存在差异,这是很正常的。想办法把误差减小就好了。
误差
先有一个思路:预测值和真实值的误差当然是越小越好,我们只要按照这个想法去求解,就ok了。
- 误差有下面几个特性
- 误差ζ(i)是独立并且具有相同的分布,并且服从均值为0方差为θ²的高斯分布
- 独立:不同的一组数据相互不影响
- 同分布:假设就是同一家银行的同一个贷款产品所给出的额度
- 服从高斯分布,额度有多有少,绝大多数是正常的范围,不考虑极端的情况
- 误差本身就是一种假设
用ζ来表示误差,因此对于每个样本:
y
(
i
)
=
θ
T
x
(
i
)
+
ζ
(
i
)
①
y^{(i)}=θ^Tx^{(i)}+ζ^{(i)} ①
y(i)=θTx(i)+ζ(i)①
因为误差服从高斯分布,所以:
P
ϵ
(
i
)
=
1
2
π
σ
e
x
p
(
−
(
ζ
(
i
)
)
2
2
σ
2
)
②
P^{ϵ^{(i)}}=\frac{1}{\sqrt{2π}σ}exp(-\frac{ (ζ^{(i)})^2 }{2σ^2})②
Pϵ(i)=2πσ1exp(−2σ2(ζ(i))2)②
将 ①带入②:
P
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
1
2
π
σ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
)
P(y^{(i)}|x^{(i)};θ)=\frac{1}{\sqrt{2π}σ}exp(-\frac{(y^{(i)}-θ^Tx^{(i)})^2}{2σ^2})
P(y(i)∣x(i);θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
所以,似然函数:
L
(
θ
)
=
∏
i
=
1
m
P
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
1
2
π
σ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
)
L(θ) = \prod_{i=1}^m P(y^{(i)}|x^{(i)};θ)=\frac{1}{\sqrt{2π}σ}exp(-\frac{(y^{(i)}-θ^Tx^{(i)})^2}{2σ^2})
L(θ)=i=1∏mP(y(i)∣x(i);θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
似然函数表示样本成为真实值的概率,因此L(θ)当然是越大越好。
乘法往往比较复杂
log
A
B
=
log
A
+
log
B
\log_{AB} =\log_A+\log_B
logAB=logA+logB
根据以上特性,使用对数函数变换一下似然函数:
L
(
θ
)
=
∑
i
=
1
m
log
1
2
π
σ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
σ
2
)
L(θ) = \sum_{i=1}^m \log\frac{1}{\sqrt{2π}σ}exp(-\frac{(y^{(i)}-θ^Tx^{(i)})^2}{2σ^2})
L(θ)=i=1∑mlog2πσ1exp(−2σ2(y(i)−θTx(i))2)
=
m
log
1
2
π
σ
−
1
σ
2
⋅
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
=m\log \frac{1}{\sqrt{2π}σ}-\frac{1}{σ^2} \cdot \frac{1}{2} \sum_{i=1}^m (y^{(i)}-θ^Tx^{(i)})^2
=mlog2πσ1−σ21⋅21i=1∑m(y(i)−θTx(i))2
下面这部分作为常数项并不影响结果,所以不进行考虑
m
log
1
2
π
σ
−
1
σ
2
m\log \frac{1}{\sqrt{2π}σ}-\frac{1}{σ^2}
mlog2πσ1−σ21
所以最后我们得到一个式子(最小二乘法):
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
=
J
(
θ
)
\frac{1}{2} \sum_{i=1}^m (y^{(i)}-θ^Tx^{(i)})^2 = J(θ)
21i=1∑m(y(i)−θTx(i))2=J(θ)
这个东西就是常说的目标函数了。
要让似然函数越大越好,那么换言之:因为J(θ)就是似然函数里的对数函数部分。所以让函数结果J(θ)越小越好。就能让误差最小。
那么有了目标函数,怎样求函数最小点?
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
J(θ) = \frac{1}{2} \sum_{i=1}^m (y^{(i)}-θ^Tx^{(i)})^2
J(θ)=21i=1∑m(y(i)−θTx(i))2
把矩阵展开
=
1
2
(
X
θ
−
y
)
T
−
(
X
θ
−
y
)
=\frac{1}{2}(Xθ-y)^T-(Xθ-y)
=21(Xθ−y)T−(Xθ−y)
求偏导,令偏导等于0就能求出最小点(手打公式太痛苦,偷个懒…):
偏导等于:
θ
=
(
X
T
X
)
−
1
X
T
y
θ = (X^TX)^{-1} X^Ty
θ=(XTX)−1XTy
求极值的数学思想,对公式求导=0即可得到极小值,但是工业上计算量很大,公式很复杂,所以从计算机的角度来讲,求极值是利用梯度下降法。
梯度下降法
机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做,并且每次优化一点点,累积起来就能越来越好。
梯度下降法就是朝着往下的放下,逐步优化的一个过程。
这是一个梯度下降模型图。接下来考虑几个点:
- 初始位置的选择
- 梯度更新的方向
- θ的更新公式
- 高维情况下,梯度方向就是垂直于登高线的方向
梯度下降有的地方还不理解,以后再回来看····