1. 逻辑回归
在分类问题中,我们要预测的变量 y 是离散的值,使用前面的线性回归似乎无法实现了,这时,就需要使用逻辑回归算法了,其实 logistic 就是基于线性回归的分类算法,是一种经典常用的分类算法。
对于二元分类问题,因变量的可能属于的两个类别分别称为负向类和正向类,因变量的取值只能在 0 和 1 之间,通常 0 表示负类,1表示正类。
想要分类器的输出值在 0 和1之间,因此希望找到一个假设函数,要求它的预测值在 0 和 1 之间。这便是逻辑回归模型的假设:
h
θ
(
x
)
=
g
(
θ
T
X
)
h_{\theta}(x)=g\left(\theta^{T} X\right)
hθ(x)=g(θTX)
其中,𝑋 代表特征向量,𝑔 代表逻辑函数,通常是 sigmoid 函数,该函数的公式为:
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
hθ(x)作用是对于给定的输入变量,根据选择的参数计算输出变量等于1的可能性,即:hθ(x)=P(y=1|x=θ)。
2. 决策边界
在逻辑回归中,我们预测有:
-
当ℎ𝜃 (𝑥) >= 0.5时,预测 𝑦 = 1。
-
当ℎ𝜃 (𝑥) < 0.5时,预测 𝑦 = 0 。
而根据 sigmoid 函数 g(z),有如下性质:
{
g
(
z
)
>
0.5
z
>
0
g
(
z
)
=
0.5
z
=
0
g
(
z
)
<
0.5
z
<
0
\left\{\begin{array}{ll} g(z)>0.5 & z>0 \\ g(z)=0.5 & z=0 \\ g(z)<0.5 & z<0 \end{array}\right.
⎩
⎨
⎧g(z)>0.5g(z)=0.5g(z)<0.5z>0z=0z<0
观察上面两点,我们可以发现其实根据 z 也就是θ^T x 的正负性,就可以判断出最终类别。而原本的 z 函数在笛卡尔坐标系上关于0的分界线,也就是所谓的决策边界。在二维平面,逻辑回归算法的决策边界是一条直线。
当数据分布较为错乱时,我们的决策边界曲线也随之变得更加复杂,与之对应的就是回归模型愈加复杂。已经无法使用简单的线性模型来实现了,跳出了逻辑回归的范畴。
3. 代价函数
在线性回归中,代价函数的定义时所有模型误差的平方和,也就是均方误差。理论上来说,逻辑回归模型本质上也可以使用这个定义,但是得到的代价函数是一个非凸函数,这导致函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。
因此,一般选择使用交叉熵误差作为分类问题的损失函数。
Cost
(
h
θ
(
x
)
,
y
)
=
{
−
log
(
h
θ
(
x
)
)
if
y
=
1
−
log
(
1
−
h
θ
(
x
)
)
if
y
=
0
\operatorname{Cost}\left(h_{\theta}(x), y\right)=\left\{\begin{aligned} -\log \left(h_{\theta}(x)\right) & \quad \text { if } y=1 \\ -\log \left(1-h_{\theta}(x)\right) & \quad \text { if } y=0 \end{aligned}\right.
Cost(hθ(x),y)={−log(hθ(x))−log(1−hθ(x)) if y=1 if y=0
在得到这样一个代价函数以后,我们便可以使用梯度下降算法来球的使损失函数最小的参数。
R
e
p
e
a
t
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
(
s
i
m
u
l
t
a
n
e
o
u
s
l
y
u
p
d
a
t
e
a
l
l
θ
j
)
}
Repeat \left\{\theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta)\right. \\ (simultaneously \ update \ all \ \theta_{j} ) \}
Repeat{θj:=θj−α∂θj∂J(θ)(simultaneously update all θj)}
4. 高级优化
对于损失函数最小值的参数寻优,梯度下降并不是我们可以使用的唯一算法,而且我们需要意识到梯度下降易限于局部最优点的缺陷。还有一些其它算法,更高级、更复杂:
相比于梯度下降,这些算法的主要特点在于:
- 不需要手动选择学习率,这些算法存在一个智能的内部循环,称为线性搜素算法,它可以自动尝试不同学习率,并选择一个较好的结果,甚至在每次迭代时变化学习率。
- 算法更加复杂,但往往收敛得更快。
5. 多分类问题
逻辑回归算法在二维平面的决策边界曲线是一条直线,无法直接实现多分类算法。
为了能实现这样的转变,我们将多个类中的一个类标记为正向类(𝑦 = 1),然后将其他所有类都标记为负向类,得到一个模型。接着,类似地第我们选择另一个类标记为正向类(𝑦 = 2),再将其它类都标记为负向类,再得到一个模型,依此类推。多个模型对应的决策边界曲线分割的不同区域,便对应多种分类结果。
当然,我们也可以使用更加高级的分类方法,如神经网络,通过 softmax 激活函数进行最终转化,可以实现一次性多分类。不过,那时,我们的决策边界曲线也是更加复杂的了。
6. 正则化
正则化,也叫做岭回归(Ridge Regression)
正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。
如果是多项式拟合,x的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。对于过拟合,常见的解决方法是:
- 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA。
- 正则化。保留所有的特征,但是减少参数的大小magnitude。
在多项式回归中,主要是高次项产生的过拟合问题,为了减少高次项的影响,在损失函数中加入正则项,这个正则项我们可以理解为对高次项的一种惩罚机制。对于线性回归,修改后的代价函数如下所示:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J(\theta)=\frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2}\right]
J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
而对于逻辑回归,修改后的代价函数如下:
J
(
θ
)
=
1
m
∑
i
=
1
m
[
−
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
i
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J(\theta)=\frac{1}{m} \sum_{i=1}^{m}\left[-y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)-\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{i}\right)\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} \theta_{j}^{2}
J(θ)=m1i=1∑m[−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(xi))]+2mλj=1∑nθj2
其中𝜆又称为正则化参数,一般地,不对θ0进行惩罚;加上正则化参数实际上是对参数θ进行惩罚。
如果令 𝜆 的值很大的话,为了使 Cost Function 尽可能的小,所有的 𝜃 的值 (不包括𝜃0)都会在一定程度上减小。但若 λ 的值太大了,那么𝜃(不包括𝜃0)都会趋近于 0,这样我们所得到的只能是一条平行于𝑥轴的直线。