机器学习:使用梯度下降实现逻辑回归求解多元分类问题的原理
线性回归拟合出的连续函数能对连续的值做出预测,但对于分类问题,若把每个种类分别编号 0 , 1 , 2 , ⋯ 0,1,2,\cdots 0,1,2,⋯,则输出为离散的,对于这种问题,我们采用逻辑回归构建模型。
让我们先考虑二元问题。
逻辑函数
逻辑函数(Logistc Function/Sigmoid Function)定义为
g
(
x
)
=
1
1
+
e
−
x
g(x)=\frac{1}{1+e^{-x}}
g(x)=1+e−x1
其图像如下:
对于逻辑函数,当
x
→
−
∞
x\rightarrow -\infin
x→−∞时,
g
(
x
)
→
0
g(x)\rightarrow0
g(x)→0;当
x
→
+
∞
x\rightarrow +\infin
x→+∞时,
g
(
x
)
→
1
g(x)\rightarrow1
g(x)→1,这样的性质就可以拿来作为分类函数。
逻辑回归的假设函数
对于线性回归,假设函数
h
θ
(
x
⃗
)
=
θ
⃗
T
x
⃗
h_\theta(\vec{x})=\vec{\theta}^T\vec{x}
hθ(x)=θTx,而在逻辑回归中,就是在此基础之上运用逻辑函数,令
h
θ
(
x
⃗
)
=
g
(
θ
⃗
T
x
⃗
)
=
1
1
+
e
−
θ
⃗
T
x
⃗
h_\theta(\vec{x})=g(\vec{\theta}^T\vec{x})=\frac{1}{1+e^{-\vec{\theta}^T\vec{x}}}
hθ(x)=g(θTx)=1+e−θTx1
同时,我们认为假设函数的值即为预测对象被分类为
1
1
1的概率,即
Pr
(
y
=
1
∣
x
⃗
,
θ
⃗
)
=
h
θ
(
x
⃗
)
\Pr(y=1|\vec{x},\vec{\theta})=h_\theta(\vec{x})
Pr(y=1∣x,θ)=hθ(x)
所以,当
h
θ
(
x
⃗
)
≥
0.5
h_\theta(\vec{x})\ge0.5
hθ(x)≥0.5,即
θ
⃗
T
x
⃗
≥
0
\vec{\theta}^T\vec{x}\ge0
θTx≥0时,我们认为
x
⃗
\vec{x}
x应该被分到1类。在多维空间中,
θ
⃗
T
x
⃗
=
0
\vec{\theta}^T\vec{x}=0
θTx=0将整个空间划分为1类和0类两个部分,我们称之为决策边界(Decision Boundary)。
代价函数
如果接着用线性回归使用的平方代价函数,整个代价曲线就不再是凸的了,求解很容易陷入局部最优解。因此,考虑使用新的代价函数
J
(
θ
⃗
)
=
1
m
∑
i
=
1
m
Cost
(
h
θ
(
x
⃗
)
,
y
)
J(\vec{\theta})=\frac{1}{m}\sum_{i=1}^m\text{Cost}(h_\theta(\vec{x}),y)
J(θ)=m1i=1∑mCost(hθ(x),y)
其中
Cost
(
h
θ
(
x
⃗
)
,
y
)
=
{
−
log
(
h
θ
(
x
⃗
)
)
y
=
1
−
log
(
1
−
h
θ
(
x
⃗
)
)
y
=
0
\text{Cost}(h_\theta(\vec{x}),y)=\left\{\begin{aligned} -\log(h_\theta(\vec{x}))&&y=1\\ -\log(1-h_\theta(\vec{x}))&&y=0 \end{aligned}\right.
Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x))y=1y=0
上面的
Cost
\text{Cost}
Cost函数具有很好的性质,使得当
y
=
1
y=1
y=1时,若
h
θ
(
x
⃗
)
=
1
h_\theta(\vec{x})=1
hθ(x)=1,
Cost
=
0
\text{Cost}=0
Cost=0;若
h
θ
(
x
⃗
)
=
0
h_\theta(\vec{x})=0
hθ(x)=0,
Cost
→
∞
\text{Cost}\rightarrow\infin
Cost→∞且满足单调。当
y
=
0
y=0
y=0时也具有类似的性质。
同时,为了使这个分段函数能放到一个表达式里,我们一般将
Cost
\text{Cost}
Cost写为
Cost
(
h
θ
(
x
⃗
)
,
y
)
=
−
y
log
(
h
θ
(
x
⃗
)
)
−
(
1
−
y
)
log
(
1
−
h
θ
(
x
⃗
)
)
\text{Cost}(h_\theta(\vec{x}),y)=-y\log(h_\theta(\vec{x}))-(1-y)\log(1-h_\theta(\vec{x}))
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
所以最终
J
(
θ
)
J(\theta)
J(θ)可以写为
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
log
(
h
θ
(
x
⃗
)
)
+
(
1
−
y
)
log
(
1
−
h
θ
(
x
⃗
)
)
]
J(\theta)=-\frac{1}{m}\sum_{i=1}^m\left[y\log(h_\theta(\vec{x}))+(1-y)\log(1-h_\theta(\vec{x}))\right]
J(θ)=−m1i=1∑m[ylog(hθ(x))+(1−y)log(1−hθ(x))]
梯度下降
对代价函数求导,代入梯度下降公式,发现其形式竟然和线性回归的梯度下降是一样的:
θ
j
:
=
θ
j
−
α
∑
i
=
1
m
(
h
θ
(
x
(
i
)
⃗
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j-\alpha\sum_{i=1}^m(h_\theta(\vec{x^{(i)}})-y^{(i)})x_j^{(i)}
θj:=θj−αi=1∑m(hθ(x(i))−y(i))xj(i)
不过需要注意,虽然该形式与线性回归一致,但两种回归的假设函数
h
θ
h_\theta
hθ是不同的。
向量化以后就可以得到一种比较快捷的梯度下降实现,令
X
=
[
x
0
(
1
)
x
1
(
1
)
⋯
x
n
(
1
)
x
0
(
2
)
x
1
(
2
)
⋯
x
n
(
2
)
⋮
⋮
⋱
⋮
x
0
(
m
)
x
1
(
m
)
⋯
x
n
(
m
)
]
,
Θ
=
[
θ
0
θ
1
⋮
θ
n
]
,
Y
=
[
y
1
y
2
⋮
y
m
]
X= \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] ,\Theta=\left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right], Y=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right]
X=⎣⎢⎢⎢⎢⎡x0(1)x0(2)⋮x0(m)x1(1)x1(2)⋮x1(m)⋯⋯⋱⋯xn(1)xn(2)⋮xn(m)⎦⎥⎥⎥⎥⎤,Θ=⎣⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎤,Y=⎣⎢⎢⎢⎡y1y2⋮ym⎦⎥⎥⎥⎤
则在每次迭代有
Θ
:
=
Θ
−
α
m
X
T
(
g
(
X
Θ
)
−
Y
)
\Theta:=\Theta-\frac{\alpha}{m}X^T(g(X\Theta)-Y)
Θ:=Θ−mαXT(g(XΘ)−Y)
多元分类问题
对于多元分类问题,我们可以将一个多元分类问题拆解成多个二元分类问题。比如对于 y = 1 , 2 , 3 y=1,2,3 y=1,2,3这样的三元分类问题,其实可以看做三个二元分类问题,分别是区分1和其他、区分2和其他、区分3和其他。
具体来讲,对于第
i
i
i类的分类问题,我们训练一个假设函数
h
θ
(
i
)
(
x
⃗
)
h_\theta^{(i)}(\vec{x})
hθ(i)(x),该函数的值就是
x
⃗
\vec{x}
x属于第
i
i
i类的概率,即
h
θ
(
i
)
(
x
⃗
)
=
Pr
(
y
=
i
∣
x
⃗
,
θ
⃗
)
h_\theta^{(i)}(\vec{x})=\Pr(y=i|\vec{x},\vec{\theta})
hθ(i)(x)=Pr(y=i∣x,θ)
当我们对每一个种类都做一次逻辑回归后,就可以得到
k
k
k个假设函数,那么函数值最大的那个类别就是我们认为
x
⃗
\vec{x}
x应该属于的类别。这种方法称之为一对多(One-vs-all)方法。
相关文章
- 未来无人工厂会成熟吗?用一个手机就可以观察机器自动生产?
- 机器学习(二):线性回归之梯度下降法
- 机器学习:逻辑回归模型算法原理(附案例实战)
- Andrew Ng机器学习课程7
- 机器学习-有监督学习-分类算法:逻辑回归/Logistic回归(二分类模型)【值域符合二项分布律 ==似然函数最大化==> 交叉熵/对数损失函数】、Softmax回归(多分类模型)【交叉熵损失函数】
- 机器学习-算法-半监督学习:半监督学习(Semi-supervised Learning)算法
- 人工智能:为什么很多机器学习和深度学习的论文复现不了?
- 机器学习算法实践:朴素贝叶斯 (Naive Bayes)
- 机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)
- 机器学习之四大件
- 机器学习之逻辑回归(Logistics Regression)算法
- 【《机器学习》第3章线性模型】对数几率回归/逻辑回归+多分类学习
- A.机器学习算法入门教程(一): 基于逻辑回归的分类预测
- 机器学习笔记之矩阵分解 SVD奇异值分解
- 机器学习笔记之逻辑回归(Logistic Regression)
- 机器学习之代价函数(cost function)
- 机器学习实战决策树之眼镜男买眼镜
- 机器学习:逻辑回归预测癌症数据
- 【机器学习】逻辑回归(Logistic Regression)
- 中国人工智能学会通讯——机器学习在商务智能中的创新应用
- 机器学习:使用matlab的fminunc+正则化实现二元逻辑回归