一、算法原理
上一节是将线性模型应用于回归问题,这一节想解决分类问题。更通用的方法是使用广义线性模型:使用一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来
二分类的情况,将线性回归的预测值(值域为
R
\mathbb{R}
R)转化为0/1值。理想情况是使用“单位阶跃函数”(unit-step function)
但是单位阶跃函数并不连续,因此希望能找到其“替代函数”(surrogate function),要求其拥有单调可微的性质。对数几率函数(logistic function)就是一个常用的替代函数:
y
=
1
1
+
e
−
z
y = \frac{1}{1+e^{-z}}
y=1+e−z1。
对数几率函数是一种“Sigmoid函数”,将z值转化为一个接近0或者1的y值,并且输出值y在z=0的附近变化很陡。将对数几率函数作为广义线性模型的“联系函数”(link function),可以得到
y
=
1
1
+
e
−
(
ω
T
x
+
b
)
y = \frac{1}{1+e^{-(\omega^Tx+b)}}
y=1+e−(ωTx+b)1,实际上是在用线性回归模型的预测结果去逼近真是标记的对数几率,所以其对应的模型成为“对数几率回归”(logistic regression,也叫 logit regression),进一步可以变化为
l
n
(
y
1
−
y
)
=
ω
T
x
+
b
ln(\frac{y}{1-y}) = \omega^Tx+b
ln(1−yy)=ωTx+b.
y
y
y和
1
−
y
1-y
1−y视为样本x作为正例和反例的可能,二者比值成为“几率” (odds),取对数得到“对数几率”(log odds,也称logit)
l
n
(
y
1
−
y
)
ln(\frac{y}{1-y})
ln(1−yy)
优点:
- 直接对分类可能性建模,无需事先假设数据分布,避免假设分布不准确所带来的问题
- 不仅仅预测出“类别”,而是得到近似概率预测
- 对数函数是任意阶可导的凸函数,有很好的数学性质,可以用许多数值优化算法求取最优解
二、参数估计
第一步:确定概率密度函数
2.1 损失函数的极大似然估计推导
第二步:写出似然函数
L
(
β
)
=
∏
i
=
1
m
p
(
y
i
∣
x
^
i
;
β
)
L(\beta) = \prod \limits_{i=1}^mp(y_i | \hat x_i; \beta)
L(β)=i=1∏mp(yi∣x^i;β)
对数似然函数为
l
(
β
)
=
l
n
L
(
β
)
=
∑
i
=
1
m
l
n
p
(
y
i
∣
x
^
i
;
β
)
\mathcal{l}(\beta) = ln L(\beta)= \sum \limits_{i=1}^m ln p(y_i | \hat x_i; \beta)
l(β)=lnL(β)=i=1∑mlnp(yi∣x^i;β)
l
(
β
)
=
∑
i
=
1
m
l
n
(
y
i
p
i
(
x
^
i
;
β
)
+
(
1
−
y
i
)
p
0
(
x
^
i
;
β
)
)
\mathcal{l}(\beta) = \sum \limits_{i=1}^m ln (y_i p_i( \hat x_i; \beta) +(1-y_i)p_0(\hat x_i;\beta))
l(β)=i=1∑mln(yipi(x^i;β)+(1−yi)p0(x^i;β))
将
p
1
(
x
^
i
;
β
)
=
e
β
T
x
^
i
1
+
e
β
T
x
^
i
p_1(\hat x_i;\beta) = \frac{e^{\beta^T\hat x_i}}{1+e^{\beta^T\hat x_i}}
p1(x^i;β)=1+eβTx^ieβTx^i,
p
0
(
x
^
i
;
β
)
=
1
1
+
e
β
T
x
^
i
p_0(\hat x_i;\beta) = \frac{1}{1+e^{\beta^T\hat x_i}}
p0(x^i;β)=1+eβTx^i1带入上式可得
l
(
β
)
=
∑
i
=
1
m
l
n
(
y
i
e
β
T
x
^
i
1
+
e
β
T
x
^
i
+
1
−
y
i
1
+
e
β
T
x
^
i
)
=
∑
i
=
1
m
l
n
(
y
i
e
β
T
x
^
i
+
1
−
y
i
1
+
e
β
T
x
^
i
)
=
∑
i
=
1
m
(
l
n
(
y
i
e
β
T
x
^
i
+
1
−
y
i
)
−
l
n
(
1
+
e
β
T
x
^
i
)
)
\mathcal{l}(\beta) = \sum \limits_{i=1}^m ln(\frac{y_ie^{\beta^T\hat x_i}}{1+e^{\beta^T\hat x_i}}+\frac{1-y_i}{1+e^{\beta^T\hat x_i}})=\sum \limits_{i=1}^m ln(\frac{y_ie^{\beta^T\hat x_i}+1-y_i}{1+e^{\beta^T\hat x_i}})=\sum\limits_{i=1}^m(ln(y_ie^{\beta^T\hat x_i}+1-y_i)-ln(1+e^{\beta^T\hat x_i}))
l(β)=i=1∑mln(1+eβTx^iyieβTx^i+1+eβTx^i1−yi)=i=1∑mln(1+eβTx^iyieβTx^i+1−yi)=i=1∑m(ln(yieβTx^i+1−yi)−ln(1+eβTx^i))
通过极大似然估计法得到了损失函数
2.2 损失函数的信息论推导
自信息:
I
(
X
)
=
−
l
o
g
b
p
(
x
)
I(X) = -log_bp(x)
I(X)=−logbp(x)
当
b
=
2
b=2
b=2时单位为bit,当
b
=
e
b=e
b=e时单位为nat
信息熵(自信息的期望): 度量随机变量X的不确定性,信息熵越大越不确定。
eg:
p
1
=
1
,
p
2
=
0
p1=1,p2=0
p1=1,p2=0,可以确定来自p1的类别,则不确定性很小;
p
1
=
p
1
=
0.5
p1=p1=0.5
p1=p1=0.5,则不能分辨类别,不确定性很大,信息熵也越大
以离散型为例:
H
(
X
)
=
E
[
I
(
X
)
]
=
−
∑
x
p
(
x
)
l
o
g
b
p
(
x
)
H(X) =E[I(X)]=-\sum\limits_xp(x)log_bp(x)
H(X)=E[I(X)]=−x∑p(x)logbp(x)
计算信息熵时约定:若
p
(
x
)
=
0
p(x)=0
p(x)=0,则
p
(
x
)
l
o
g
b
p
(
x
)
=
0
p(x)log_bp(x)=0
p(x)logbp(x)=0
相对熵(KL散度): 度量两个分布的差异,其典型使用场景是用来度量理想分布
p
(
x
)
p(x)
p(x)和模拟分布$q(x)之间的差异
D K L ( p ∣ ∣ q ) = ∑ x p ( x ) l o g b ( p ( x ) q ( x ) ) = ∑ x p ( x ) ( l o g b p ( x ) − l o g b q ( x ) ) = ∑ x p ( x ) l o g b p ( x ) − ∑ x p ( x ) l o g b q ( x ) D_{KL}(p||q) = \sum\limits_xp(x)log_b(\frac{p(x)}{q(x)})= \sum\limits_xp(x)(log_bp(x)-log_bq(x))=\sum\limits_xp(x)log_bp(x)-\sum\limits_xp(x)log_bq(x) DKL(p∣∣q)=x∑p(x)logb(q(x)p(x))=x∑p(x)(logbp(x)−logbq(x))=x∑p(x)logbp(x)−x∑p(x)logbq(x)
其中
−
∑
x
p
(
x
)
l
o
g
b
q
(
x
)
-\sum\limits_xp(x)log_bq(x)
−x∑p(x)logbq(x)称为交叉熵
从机器学习三要素中的“策略”来说,可以通过最小化相对熵的策略求出最有分布,也即理想分布最接近的模拟分布。由于理想分布
p
(
x
)
p(x)
p(x)是未知但固定的分布,所以公式的前一项
∑
x
p
(
x
)
l
o
g
b
p
(
x
)
\sum\limits_xp(x)log_bp(x)
x∑p(x)logbp(x)为常量,所以最小化相对熵就等价于最小化后一项交叉熵
−
∑
x
p
(
x
)
l
o
g
b
q
(
x
)
-\sum\limits_xp(x)log_bq(x)
−x∑p(x)logbq(x)
下面来看交叉熵是多少,以对数几率回归为例:
那么单个样本
y
i
y_i
yi的交叉熵为
可以看到和通过极大似然估计法估计出来的损失函数是一样的
总结
对数几率回归算法的机器学习三要素:
- 模型:线性模型,输出值的范围为0,1,近似阶跃的单调可微函数
- 策略:极大似然估计,信息论
- 算法:梯度下降,牛顿法
参考文献
[1] 【吃瓜教程】《机器学习公式详解》(南瓜书)与西瓜书公式推导
[2] 周志华.机器学习[M].清华大学出版社,2016.
[3] 谢文睿 秦州 贾彬彬.机器学习公式详解第2版[M].人民邮电出版社,2023.