原理与预测函数
我们使用sigmod函数作为“广义线性模型”的单调可微函数g(.),得到
y
=
1
1
+
e
−
(
w
T
x
+
b
)
(
1
)
y=\frac {1}{1+e^{-(w^T x+b)}} \qquad (1)
y=1+e−(wTx+b)1(1)
上式可变换为
l
n
y
1
−
y
=
w
T
x
+
b
(
2
)
ln \frac{y}{1-y}=w^Tx+b \qquad (2)
ln1−yy=wTx+b(2)
若将y视为样本x作为正例的可能性,则1-y是其反例的可能性。两者的比值\( \frac{y}{1-y} \)称为几率,反映了x作为正例的相对可能性,对几率去对数得到对数几率
l
n
y
1
−
y
ln \frac {y}{1-y}
ln1−yy
由(2)式可知,实际上是用线性回归模型的预测结果去逼近真实标记的对数几率,其模型称为“对数几率回归”
我们来看如何求w和b,我们把(1)式的y视为类后验概率估计p(y=1|x),在(2)式重写为
l n p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = w T x + b ln \frac {p(y=1|x)}{p(y=0|x)} =w^Tx+b lnp(y=0∣x)p(y=1∣x)=wTx+b
显然有
p
(
y
=
1
∣
x
)
=
e
w
T
x
+
b
1
+
e
w
T
x
+
b
p(y=1|x)=\frac{e^{w^T x+b}}{1+e^{w^T x+b}}
p(y=1∣x)=1+ewTx+bewTx+b
p
(
y
=
0
∣
x
)
=
1
1
+
e
w
T
x
+
b
p(y=0|x)=\frac{1}{1+e^{w^T x+b}}
p(y=0∣x)=1+ewTx+b1
预测函数,拿我们讨论的最标准的二分类来说,分别计算p(y=1|x),p(y=0|x)哪个条件概率大就分到哪一类
损失函数推导
对于给定的数据集 \( {(x_i,y_i)}^N_{i=1},y \in {0,1} \),
设P(Y=1|x)=g(x),P(Y=0|x)=1-g(x)
即 p ( y ∣ x ) = { g ( x ) , if y is 1 1 − g ( x ) , if y is 0 p(y|x)= \begin{cases} g(x), & \text {if $y$ is 1} \\ 1-g(x), & \text{if $y$ is 0} \end{cases} p(y∣x)={g(x),1−g(x),if y is 1if y is 0
可以合在一起写为
p
(
y
∣
x
)
=
[
g
(
x
i
)
]
y
i
[
1
−
g
(
x
i
)
]
1
−
y
i
p(y|x)= [g(x_i)]^{y_i} [1-g(x_i)]^{1-y_i}
p(y∣x)=[g(xi)]yi[1−g(xi)]1−yi
两边取对数为
l
o
g
p
(
y
∣
x
)
=
y
i
l
o
g
g
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
x
i
)
)
log\ p(y|x) = y_i log\ g(x_i)+(1-y_i)log\ (1- g(x_i))
log p(y∣x)=yilog g(xi)+(1−yi)log (1−g(xi))
p(y|x)的值需要最大化,但是我们损失函数需要最小化,所以前面加一个负号,就变成
L
(
w
,
b
)
=
−
{
y
i
l
o
g
g
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
x
i
)
)
}
L(w,b)=-\{ y_i log\ g(x_i)+(1-y_i)log\ (1- g(x_i))\}
L(w,b)=−{yilog g(xi)+(1−yi)log (1−g(xi))}
就是交叉熵损失函数,其基本形式为
H
(
p
,
q
)
=
−
∑
x
p
(
x
)
l
n
(
q
(
x
)
H(p,q)=-\sum_x p(x)ln(q(x)
H(p,q)=−x∑p(x)ln(q(x)
反映了两个概率分布之间的差异信息,其中p表示真实分布,q表示非真实分布,即反应我们推测的分布和真实分布的差异大小信息。
损失函数求解
似然函数为
∏
i
=
1
N
[
g
(
x
i
)
]
i
y
[
1
−
g
(
x
i
)
]
1
−
y
i
\prod^N_{i=1} [g(x_i)]^y_i [1-g(x_i)]^{1-y_i}
i=1∏N[g(xi)]iy[1−g(xi)]1−yi
对数似然函数为
L
(
w
)
=
Σ
i
=
1
N
[
y
i
l
o
g
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
g
(
x
i
)
)
]
L(w)=\Sigma ^N_{i=1} [y_ilog(x_i)+(1-y_i)log(1-g(x_i))]
L(w)=Σi=1N[yilog(xi)+(1−yi)log(1−g(xi))]
=
Σ
i
=
1
N
[
y
i
l
o
g
g
(
x
i
)
1
−
g
(
x
i
)
+
l
o
g
(
1
−
g
(
x
i
)
)
]
=\Sigma^N_{i=1}[y_ilog \frac {g(x_i)}{1-g(x_i)} + log(1-g(x_i))]
=Σi=1N[yilog1−g(xi)g(xi)+log(1−g(xi))]
=
Σ
i
=
1
N
[
y
i
(
w
∗
x
i
)
−
l
o
g
(
1
+
exp
(
w
∗
x
i
)
)
]
=\Sigma^N_{i=1}[y_i (w \ast x_i)-log(1+\exp(w \ast x_i))]
=Σi=1N[yi(w∗xi)−log(1+exp(w∗xi))]
对L(w)求最大值,得到w的估计值,常用梯度下降和牛顿法解决
如果采用梯度下降,更新公式为
正则化
模型评估
错误率和精度
错误率和精度,这是分类任务中最常用的两种性能度量, 既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样 本总数的比例,精度则是分类正确的样本数占样本总数的比例.
查准率,查全率
错误率和精度虽常用,但并不能满足所有任务需求.以西瓜问题为例,假定 瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡 量了有多少比例的瓜被判别错误.但是若我们关心的是"挑出的西瓜中有多少 比例是好瓜",或者"所有好瓜中有多少比例被挑了出来 那么错误率就不够用了’这时需要使用其他的性能度量.
类似的需求在信息检索、 Web搜索等应用中经常出现?例如在信息检索 中,我们经常会关心"检索出的信息中有多少比例是用户感兴趣的" 用 户感兴趣的信息中有多少被检索出来了 查准率和查全率是更为适用于此类需求的性能度量.
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划 分为真正例(true positive)、假正例(false positive)、真反例(true negative)、 假反例(false negative)四种情形,令 TP、 FP、 TN、 FN 分别表示其对应的 样例数,则显然有 TP+FP+TN+FN=样例总数.分类结果的"混淆矩 阵" (confusion matrix)如下图所示

P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP
类别不平衡问题
问题定义
类别数据不均衡是分类任务中一个典型的存在的问题。简而言之,即数据集中,每个类别下的样本数目相差很大。例如,在一个二分类问题中,共有100个样本(100行数据,每一行数据为一个样本的表征),其中80个样本属于class 1,其余的20个样本属于class 2,class 1:class2=80:20=4:1,这便属于类别不均衡。当然,类别不均衡问同样会发生在多分类任务中。
解决方法
- 扩增数据集
- 尝试其他评价指标,如查全率或查准率
- 对数据重采样,小分类样本过采样,大分类样本欠采样
- 产生人工数据样本,SMOTE采样