机器学习中线性回归(linear regression)与逻辑回归(logic regression)简单推导
线性回归(linear regression)
线性回归在机器学习中是非常重要,也是非常基础的拟合方法。
输入数据表
X i X^i Xi \ X j X_j Xj | X 1 X_1 X1 | X 2 X_2 X2 | X 3 X_3 X3 | X 4 X_4 X4 | X 5 X_5 X5 | … | h θ ( X i ) h_\theta(X^i) hθ(Xi) | y i y^i yi |
---|---|---|---|---|---|---|---|---|
X 1 X^1 X1 | ||||||||
X 2 X^2 X2 | ||||||||
X 3 X^3 X3 | ||||||||
X 4 X^4 X4 | ||||||||
X 5 X^5 X5 | ||||||||
… |
θ j \theta_j θj | θ 1 \theta_1 θ1 | θ 2 \theta_2 θ2 | θ 3 \theta_3 θ3 | θ 4 \theta_4 θ4 | θ 5 \theta_5 θ5 | … |
---|---|---|---|---|---|---|
如上图所示有i个输入样本, X i X^i Xi表示第i个样本。每个样本有j个特征值, X j X_j Xj表示第j个特征值。 y i y^i yi表示第i个输入样本的目标值。 θ j \theta_j θj为第j个输入特征的系数。线性回规的目的就是找出更好的 θ j \theta_j θj以拟合目标值。
h θ ( X i ) = θ 1 ⋅ X 1 + θ 2 ⋅ X 2 + . . . + θ j ⋅ X j h_\theta(X^i) = \theta_1 \cdot X_1+\theta_2 \cdot X_2+...+\theta_j \cdot X_j hθ(Xi)=θ1⋅X1+θ2⋅X2+...+θj⋅Xj
输入数据向量化
以表中数据的位置表示向量方向,则 X i ⃗ \vec{X^i} Xi为行向量, X j ⃗ \vec{X_j} Xj表示列向量, θ ⃗ \vec{\theta} θ表示行向量。
h θ ( X i ) = X i ⃗ ⋅ θ ⃗ T h_\theta(X^i) = \vec{X^i} \cdot \vec{\theta}^T hθ(Xi)=Xi⋅θT
举个例子
已知有m栋房子的面积,房间数,楼层数,是否邻河等各种特征数据,目标值是房子的售价。现在为了估算我家200平米三层小洋楼的售价,需要利用这m个输入数据与目标值来训练出系数 θ j \theta_j θj以完成 h θ h_\theta hθ函数。
X i X^i Xi \ X j X_j Xj | 面积 X 1 X_1 X1 | 房间数 X 2 X_2 X2 | 楼层数 X 3 X_3 X3 | … | h θ ( X i ) h_\theta(X^i) hθ(Xi) | 售价 y i y^i yi |
---|---|---|---|---|---|---|
房1 X 1 X^1 X1 | ||||||
房2 X 2 X^2 X2 | ||||||
房3 X 3 X^3 X3 | ||||||
… |
线性回归的代价函数(省略向量箭头标志)
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
X
i
)
−
y
i
)
2
J(\theta) = \frac{1}{2m}\sum_{i=1}^m (h_\theta(X^i)-y^i)^2
J(θ)=2m1i=1∑m(hθ(Xi)−yi)2
此为均方差方程,前面出现二分之一是为了后面利用梯度递减算法时可以约去求导系数2。
梯度递减算法
利用梯度递减算法训练
θ
\theta
θ(详细可参照网上其他资料,其中a为learning rate)。
θ
j
=
θ
j
−
a
α
α
θ
j
J
(
θ
)
\theta_j=\theta_j-a\frac{\alpha}{\alpha\theta_j}J(\theta)
θj=θj−aαθjαJ(θ)
将
J
(
θ
)
J(\theta)
J(θ)代入后可得:
θ
j
=
θ
j
−
a
m
∑
i
=
1
m
(
h
θ
(
X
i
)
−
y
i
)
⋅
X
j
i
\theta_j=\theta_j-\frac{a}{m}\sum_{i=1}^m(h_\theta(X^i)-y^i) \cdot X_j^i
θj=θj−mai=1∑m(hθ(Xi)−yi)⋅Xji
按照此公式将训练集迭代完后即可得到一系列较好的
θ
\theta
θ,并得到拟合函数
h
θ
(
X
i
)
h_\theta(X^i)
hθ(Xi)。
逻辑回归(logic regression)
本文中讨论比较基础的{0,1}逻辑。即目标值只有两种情况,是和不是。
输入数据
输入数据表与向量化和线性回归处相同,直接套用。
X i X^i Xi \ X j X_j Xj | X 1 X_1 X1 | X 2 X_2 X2 | X 3 X_3 X3 | X 4 X_4 X4 | X 5 X_5 X5 | … | h θ ( X i ) h_\theta(X^i) hθ(Xi) | y i y^i yi |
---|---|---|---|---|---|---|---|---|
X 1 X^1 X1 | ||||||||
X 2 X^2 X2 | ||||||||
X 3 X^3 X3 | ||||||||
X 4 X^4 X4 | ||||||||
X 5 X^5 X5 | ||||||||
… |
θ j \theta_j θj | θ 1 \theta_1 θ1 | θ 2 \theta_2 θ2 | θ 3 \theta_3 θ3 | θ 4 \theta_4 θ4 | θ 5 \theta_5 θ5 | … |
---|---|---|---|---|---|---|
若同线性回归中一样采用下面的求值方法
h
θ
(
X
i
)
=
X
i
⃗
⋅
θ
⃗
T
h_\theta(X^i) = \vec{X^i} \cdot \vec{\theta}^T
hθ(Xi)=Xi⋅θT
那么
h
θ
(
X
i
)
h_\theta(X^i)
hθ(Xi)就会就会出现大量偏离0,1的情况,所以需要一个activate function来将数据统筹在[0,1]范围内。本例中使用较常使用也比较基础的sigmoid函数。
S
(
x
)
=
1
1
+
e
−
x
S(x)=\frac{1}{1+\rm e^{-x}}
S(x)=1+e−x1
将
X
i
⋅
θ
T
X^i \cdot \theta^T
Xi⋅θT代入上式可得
h θ ( X i ) = 1 1 + e − X i ⋅ θ T h_\theta(X^i)=\frac{1}{1+\rm e^{-X^i \cdot \theta^T}} hθ(Xi)=1+e−Xi⋅θT1
以下是代价函数:
J
(
θ
)
i
=
{
−
l
n
(
h
θ
(
X
i
)
)
,
y
i
=
1
−
l
n
(
1
−
h
θ
(
X
i
)
)
,
y
i
=
0
J(\theta) ^i= \begin{cases} -ln(h_\theta(X^i)), & y^i=1 \\ -ln(1-h_\theta(X^i)), & y^i=0 \end{cases}
J(θ)i={−ln(hθ(Xi)),−ln(1−hθ(Xi)),yi=1yi=0
而代价函数也可以使用其他的,其中理由太过深奥,没有深究。大佬可以继续探索。可以看出若
y
i
=
1
y^i=1
yi=1,
h
θ
(
X
i
)
h_\theta(X^i)
hθ(Xi)接近1时代价函数接近0;接近0时代价函数为无穷大。若
y
i
=
0
y^i=0
yi=0,
h
θ
(
X
i
)
h_\theta(X^i)
hθ(Xi)接近1时代价函数接近无穷大;接近0时代价函数接近0。
但是上式明显不利于求导,可以将两个方程并为一个
J ( θ ) i = − y i ⋅ l n ( h θ ( X i ) ) − ( 1 − y i ) ⋅ l n ( 1 − h θ ( X i ) ) J(\theta) ^i=-y^i \cdot ln(h_\theta(X^i))-(1-y^i) \cdot ln(1-h_\theta(X^i)) J(θ)i=−yi⋅ln(hθ(Xi))−(1−yi)⋅ln(1−hθ(Xi))
总的代价函数为:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
(
y
i
⋅
l
n
(
h
θ
(
X
i
)
)
+
(
1
−
y
i
)
⋅
l
n
(
1
−
h
θ
(
X
i
)
)
)
J(\theta) =\frac{-1}{m}\sum_{i=1}^m \left(y^i \cdot ln(h_\theta(X^i))+(1-y^i) \cdot ln(1-h_\theta(X^i)) \right)
J(θ)=m−1i=1∑m(yi⋅ln(hθ(Xi))+(1−yi)⋅ln(1−hθ(Xi)))
同样利用梯度递减算法(gradient decrease)可得:
θ
j
=
θ
j
−
a
m
∑
i
=
1
m
(
h
θ
(
X
i
)
−
y
i
)
⋅
X
j
i
\theta_j=\theta_j-\frac{a}{m}\sum_{i=1}^m(h_\theta(X^i)-y^i) \cdot X_j^i
θj=θj−mai=1∑m(hθ(Xi)−yi)⋅Xji
竟然和线性回归中的迭代公式一模一样惊不惊喜意不意外,下面列出推导过程。
推导准备工作
h
θ
(
X
i
)
=
S
(
X
i
⋅
θ
T
)
h_\theta(X^i)=S(X^i \cdot \theta^T)
hθ(Xi)=S(Xi⋅θT)
对上式求偏导
α
α
θ
j
h
θ
(
X
i
)
=
S
′
(
X
i
⋅
θ
T
)
⋅
X
j
i
\frac{\alpha}{\alpha\theta_j}h_\theta(X^i)=S^{'}(X^i \cdot \theta^T) \cdot X^i_j
αθjαhθ(Xi)=S′(Xi⋅θT)⋅Xji
使用sigmoid激活函数
S
(
x
)
=
1
1
+
e
−
1
S(x)=\frac{1}{1+\rm e^{-1}}
S(x)=1+e−11
对激活函数求导
S
′
(
x
)
=
S
(
x
)
⋅
(
1
−
S
(
x
)
)
S^{'}(x)=S(x) \cdot (1-S(x))
S′(x)=S(x)⋅(1−S(x))
α α θ j J ( θ ) = − 1 m ∑ i = 1 m ( y i ⋅ h θ ′ ( X i ) h θ ( X i ) + ( 1 − y i ) ⋅ h θ ′ ( X i ) h θ ( X i ) − 1 ) \frac{\alpha}{\alpha\theta_j}J(\theta) =\frac{-1}{m}\sum_{i=1}^m \left(\frac{y^i \cdot h^{'}_\theta(X^i)}{h_\theta(X^i)}+\frac{(1-y^i) \cdot h^{'}_\theta(X^i)}{h_\theta(X^i)-1} \right) αθjαJ(θ)=m−1i=1∑m(hθ(Xi)yi⋅hθ′(Xi)+hθ(Xi)−1(1−yi)⋅hθ′(Xi))
= − 1 m ∑ i = 1 m ( h θ ( X i ) − y i ) ⋅ h θ ′ ( X i ) h θ ( X i ) ⋅ ( h θ ( X i ) − 1 ) =\frac{-1}{m}\sum_{i=1}^m \frac{(h_\theta(X^i)-y^i) \cdot h^{'}_\theta(X^i)}{h_\theta(X^i) \cdot (h_\theta(X^i)-1)} =m−1i=1∑mhθ(Xi)⋅(hθ(Xi)−1)(hθ(Xi)−yi)⋅hθ′(Xi)
= − 1 m ∑ i = 1 m ( h θ ( X i ) − y i ) ⋅ h θ ′ ( X i ) h θ ( X i ) ⋅ ( h θ ( X i ) − 1 ) =\frac{-1}{m}\sum_{i=1}^m \frac{(h_\theta(X^i)-y^i) \cdot h^{'}_\theta(X^i)}{h_\theta(X^i) \cdot (h_\theta(X^i)-1)} =m−1i=1∑mhθ(Xi)⋅(hθ(Xi)−1)(hθ(Xi)−yi)⋅hθ′(Xi)
最后将
h
θ
′
(
X
i
)
=
S
(
X
i
⋅
θ
T
)
⋅
(
1
−
S
(
X
i
⋅
θ
T
)
)
⋅
X
j
i
h^{'}_\theta(X^i)=S(X^i \cdot \theta^T) \cdot (1-S(X^i \cdot \theta^T)) \cdot X^i_j
hθ′(Xi)=S(Xi⋅θT)⋅(1−S(Xi⋅θT))⋅Xji以及
h
θ
(
X
i
)
=
S
(
X
i
⋅
θ
T
)
h_\theta(X^i)=S(X^i \cdot \theta^T)
hθ(Xi)=S(Xi⋅θT)代入上式即可得结果。