统计学习方法栏目是对李航老师写的统计学习方法第二版的学习记录,里面有一些自己的感悟,写出来供大家参考。
MAP与MLE区别
最大后验概率(MAP)
对应贝叶斯学派,主要认为事物的本质(模型参数)是不确定的,人们往往有一个先验猜测,然后再通过数据对事物的本质(模型参数)不断修正,最后得到可信的结果,这样得到的参数往往是分布式的,依据主要是贝叶斯公式:
P
(
θ
∣
X
)
=
P
(
X
∣
θ
)
∙
P
(
θ
)
P
(
X
)
P(\theta|X)=\frac{P(X|\theta)\bullet P(\theta)}{P(X)}
P(θ∣X)=P(X)P(X∣θ)∙P(θ)
计算方法为:
θ M A P = a r g m a x ( P ( θ ∣ X ) ) = a r g m a x ( P ( X ∣ θ ) ∙ P ( θ ) P ( X ) ) = a r g m a x ( l n P ( X ∣ θ ) + l n P ( θ ) − l n ( P ( X ) ) = a r g m a x ( l n P ( X ∣ θ ) + l n P ( θ ) ) \begin{aligned} \theta _{MAP}&=argmax(P(\theta|X)) \\&=argmax \bigg (\frac{P(X|\theta)\bullet P(\theta)}{P(X)}\bigg) \\&=argmax\big (\mathrm{ln}P(X|\theta)+\mathrm{ln}P(\theta)-\mathrm{ln}(P(X)\big) \\&=argmax\big(\mathrm{ln}P(X|\theta)+\mathrm{ln}P(\theta)\big) \end{aligned} θMAP=argmax(P(θ∣X))=argmax(P(X)P(X∣θ)∙P(θ))=argmax(lnP(X∣θ)+lnP(θ)−ln(P(X))=argmax(lnP(X∣θ)+lnP(θ))
最大似然估计(MLE)
对应频率学派,主要认为事物的本质就是确定的,只需要通过数据求得能产生这个数据最可能的本质就是真实的参数,得到的结果往往是一个数。
θ
M
L
E
=
a
r
g
m
a
x
(
P
(
X
∣
θ
)
)
=
a
r
g
m
a
x
(
l
n
P
(
X
∣
θ
)
)
\begin{aligned} \theta _{MLE}&=argmax(P(X|\theta)) \\&=argmax\big (\mathrm{ln}P(X|\theta)) \end{aligned}
θMLE=argmax(P(X∣θ))=argmax(lnP(X∣θ))
结论:从上面可以看出,MAP和MLE之间区别仅仅在于一个有无先验分布。如果还没有理解的同学,可以参考大佬的文章,说的十分详细。
经验风险最小化和结构风险最小化
先介绍一下期望风险最小,感性的解释就是,在模型空间里存在一个给定的模型,可以准确描述输入空间到输出空间的映射,只要期望风险控制地足够小,我们就可以学习到这个模型,期望风险最小描述了该问题基于已有数据的本质的“正确”的模型。
学习的目标实际上是期望风险最小
当数据量趋于无穷大的时候,经验风险就会无限接近期望风险,因此当数据量很大的时候,就可以直接用经验风险来代替期望风险。极大似然估计MLE实际就是经验风险最小化,用经验风险来代替期望风险。
但是当数据量较少时,经验风险最小化,过于依赖少量数据的结构,会造成过拟合的现象,因此就有了结构风险最小化,也就是在经验风险最小化的基础上加上惩罚项,用以对模型的复杂度进行惩罚,防止学习到的数据结构过于复杂,减少对少量数据的过分拟合,最大后验概率MAP实际就是结构风险最小化,不光考虑现有数据对模型的影响,也会考虑先验的影响(这时候先验就是模型的复杂度)的影响。
模型选择
一般来说,在现有数据不变的情况下,正如上面所说,当模型的复杂度不受控制的时候,随着模型复杂度越来越大,训练误差会越来越小,而测试误差则会先减小,再增加,这说明已经产生了过拟合,我们希望找到泛化能力较强,也就是测试误差也较小的模型对应的复杂度。
正则化
最自然的想法就是利用正则化,也就是:
a
r
g
m
i
n
w
L
(
w
)
=
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
+
λ
J
(
f
)
\underset{w}{\mathrm{argmin}} L(w)=\frac{1}{N} \sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)
wargminL(w)=N1i=1∑NL(yi,f(xi))+λJ(f)
其中的
J
(
f
)
J(f)
J(f)描述的就是模型
f
f
f的复杂度,
λ
≥
0
\lambda\ge0
λ≥0,表示在经验风险最小化和模型复杂度之间的权衡,常用的正则化项一般取参数向量的L1范数或者L2范数。
正则化符合奥卡姆剃刀原理,如无必要,勿增实体。也就是在可以很好解释已有数据时,模型越简单越好。再回过头去看MAP,也就是说,较为复杂的模型有较小的先验,而较为简单的模型有更大的先验。
交叉验证
第二种就是进行交叉验证,可以有多种方式,这里举例最常用的几种:
- 简单交叉验证:在训练集上使用不同参数对模型进行训练,然后再对测试集进行验证,选择测试机误差最小的模型;
- S折交叉验证:将数据分为大小不重叠,各自独立的S份。用S-1份作为训练集,一份作为测试集,然后选取S次,每次不同的选择,最后选出平均误差最小的模型;
- 留一交叉验证:在数据极度匮乏的情况下才会使用,每个数据都是S折里面的一折。
评价指标
评价指标用来评价一个分类器的性能好坏,常用的有以下几种:
开始之前先来看一下混淆矩阵:
- 准确率: A c c u r a c y = T P + T N T P + F P + F N + T N Accuracy=\frac{TP+TN}{TP+FP+FN+TN} Accuracy=TP+FP+FN+TNTP+TN
- 精确率: P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
- 召回率: R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
- F 1 F_1 F1,实际就是精确率和召回率的调和平均数: 1 F 1 = 1 2 ( 1 P r e c i s o n + 1 R e c a l l ) \frac{1}{F_1}=\frac{1}{2}\big(\frac{1}{Precison}+\frac{1}{Recall}\big) F11=21(Precison1+Recall1)
- AUC:即ROC曲线的下方围成的面积,ROC曲线横坐标是真阳率: T P T P + F N \frac{TP}{TP+FN} TP+FNTP,也就是召回率,纵坐标是假阳率: F P F P + T N \frac{FP}{FP+TN} FP+TNFP,所有真实值为0的样本中预测为1的比率。
简单感性理解AUC,就是划分0/1类别不同的阈值会造成判断的变化,例如:是将大于0.5的都划分为1,还是大于0.7的划分为1.而综合考虑所有的阈值标准所绘制成的图形就是ROC,先来思考一下最坏两种情况,阈值为0,则所有值都划分为1,则真阳率为1,假阳率也为1(因为所有的0都被预测为1了);阈值为1,所有值都分为0,则真阳率为0,假阳率也为0(因为没有0被预测为1)。再考虑随着这个阈值从1逐渐变为0,也就是预测的1逐渐变多,0逐渐变少,但是由于分类器总是有分向正确的类别的趋势,预测的1逐渐变多时,真正为1预测为1的变多的要比真正为0的预测为1的变多的快,因此也就真阳率比假阳率增加地快(如果增加地一样快,说明这个分类器是个废物,我们的分类和随机效果一样),AUC的面积往往是大于0.5的。AUC的好处是可以对正负样本数量差距很大的时候也能很好地反映。知乎大佬从另一个角度讲了AUC,感兴趣可以看看。
课后习题解答
1.统计学习方法三要素:模型+算法+策略
n次伯努利实验,k次为1,计算结果为1的概率:
MLE:
θ
M
L
E
=
a
r
g
m
a
x
(
P
(
X
∣
θ
)
)
=
a
r
g
m
a
x
(
l
n
P
(
X
∣
θ
)
)
=
a
r
g
m
a
x
(
l
n
θ
k
+
l
n
θ
n
−
k
)
\begin{aligned} \theta _{MLE}&=argmax(P(X|\theta)) \\&=argmax\big (\mathrm{ln}P(X|\theta)) \\&=argmax(\mathrm{ln}\theta^k+\mathrm{ln}\theta^{n-k}) \end{aligned}
θMLE=argmax(P(X∣θ))=argmax(lnP(X∣θ))=argmax(lnθk+lnθn−k)
求导等于0即可
MAP:
θ
M
A
P
=
a
r
g
m
a
x
(
P
(
θ
∣
X
)
)
=
a
r
g
m
a
x
(
l
n
P
(
X
∣
θ
)
+
l
n
P
(
θ
)
)
\begin{aligned} \theta _{MAP}&=argmax(P(\theta|X)) \\&=argmax\big(\mathrm{ln}P(X|\theta)+\mathrm{ln}P(\theta)\big) \end{aligned}
θMAP=argmax(P(θ∣X))=argmax(lnP(X∣θ)+lnP(θ))
其中
P
(
θ
)
P(\theta)
P(θ)为先验分布,代入求导等于0即可
2.证明:模型是条件概率分布,当损失函数是对数损失时,经验风险最小化等价于极大似然估计。
经验风险最小化:
a
r
g
m
i
n
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
)
)
=
a
r
g
m
i
n
1
N
∑
i
=
1
N
−
l
n
P
θ
(
y
i
∣
x
i
)
=
a
r
g
m
a
x
∑
i
=
1
N
l
n
P
θ
(
y
i
∣
x
i
)
=
a
r
g
m
a
x
∑
i
=
1
N
l
n
P
θ
(
y
i
∣
x
i
)
=
a
r
g
m
a
x
(
l
n
P
(
X
∣
θ
)
)
\begin{aligned} \mathrm{argmin}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))&=\mathrm{argmin}\frac{1}{N}\sum_{i=1}^N-\mathrm{ln}P_\theta(y_i|x_i) \\&=\mathrm{argmax}\sum_{i=1}^N\mathrm{ln}P_\theta(y_i|x_i) \\&=\mathrm{argmax}\sum_{i=1}^N\mathrm{ln}P_\theta(y_i|x_i) \\&=\mathrm{argmax}\big (\mathrm{ln}P(X|\theta)) \end{aligned}
argminN1i=1∑NL(yi,f(xi))=argminN1i=1∑N−lnPθ(yi∣xi)=argmaxi=1∑NlnPθ(yi∣xi)=argmaxi=1∑NlnPθ(yi∣xi)=argmax(lnP(X∣θ))
证毕