1.前言
这篇文章主要是总结简单机器学习系统的构建,简单的误差分析,特别的,对于不对称性分类的误差评估做了介绍,并对这种情况做了性能指标的规定。
关键词:机器学习系统 不对称性分类 查准率 召回率
目录
2.内容介绍
2.1构建机器学习系统的简单例子
假设我们需要做一个垃圾邮件屏蔽器,要怎么开始做呢?
- 首先快速设计一个简单的算法,并且在交叉验证集上使用和测试它
- 画出学习曲线决定是否需要更多的数据,更多的特征等等
- 误差分析,在交叉验证集分析你的错误,看能否分析出错误的一些趋势。
例子:
m
C
V
m_{CV}
mCV=500个例子在交叉验证集上,算法错误分类了100个例子,检查这100个例子,用这两个标准分类这些错误:
- 这些邮件是什么类型的
- 那些特征你觉得可以让算法更正确的分类它们
错误拼写 | 5 |
---|---|
不寻常的邮件名 | 16 |
不寻常的标点符号 | 32 |
用一个数值评价算法的效果后,我们可以针对错误最多的不寻常的标点符号来改进算法,改进算法的办法上篇博文有提到。
2.2不对称性分类的误差评估
2.2.1不对称性类的介绍
假设有这样一种情况:在交叉验证集上运行算法,发现会有5%的错误概率,可是在样本集中只有3%的错误样本,也就是说,我们设计一个算法:
function y=predict(x)
y=0;
return
运行这样的算法我们也能得到3%的错误概率,可是显而易见的,这并不是一个好的算法。
所谓不对称性类是指在样本中占的比例很小的类。
既然占的比例很小,那么我们会有一个问题:假设我们的预测算法将准确率熊95%提升到了97%,我们的算法是进步了还是退步了呢?因为不知道算法是否是朝着y=0去拟合。鉴于此,针对不对称类,我们提出了一个新的评估方法
2.2.2新的误差评估方法
我们定义查准率(precision)为
p
r
e
c
i
s
i
o
n
=
t
r
u
e
p
o
s
i
t
i
v
e
t
r
u
e
p
o
s
t
i
v
e
+
f
a
l
s
e
p
o
s
i
t
i
v
e
precision=\frac{true\ positive}{true\ postive+false\ positive}
precision=true postive+false positivetrue positive定义召回率(recall)为
r
e
c
a
l
l
=
t
r
u
e
p
o
s
i
t
i
v
e
t
r
u
e
p
o
s
i
t
i
v
e
+
f
a
l
s
e
n
e
g
e
t
i
v
e
recall=\frac{true\ positive}{true\ positive+false\ negetive}
recall=true positive+false negetivetrue positive
2.2.3查准率和召回率的权衡
看一个例子:
对于逻辑回归,假设我们改变门限,即
p
r
e
d
i
c
t
=
{
1
h
(
θ
)
>
=
0.7
0
h
(
θ
)
<
0.7
predict=\begin{cases} 1& h(\theta)>=0.7 \\ 0& h(\theta)<0.7 \end{cases}
predict={10h(θ)>=0.7h(θ)<0.7即只有很高的把握才会预测为1,这样会提高查准率,但是召回率会降低,同样的,如果我们将门限改为0.3,即
p
r
e
d
i
c
t
=
{
1
h
(
θ
)
>
=
0.3
0
h
(
θ
)
<
0.3
predict=\begin{cases} 1& h(\theta)>=0.3 \\ 0& h(\theta)<0.3 \end{cases}
predict={10h(θ)>=0.3h(θ)<0.3很少会预测错的出来,召回率会提高,但是查准率会降低。
2.2.4评价指标
怎么来评价什么系统好呢?是查准率高的系统好,还是召回率高的系统好呢?在这里给出一个评价指标
F
1
=
2
P
R
P
+
R
F_1=\frac{2PR}{P+R}
F1=P+R2PR至于恰好在[0,1].
这样的评价指标对于我们提出的问题有没有解决呢?
给出一个例子:
可以发现若是所有的数都取0,即Recall等于1,我们会发现
F
1
F_1
F1依然很小,用
F
1
F_1
F1可以很好地评价不对称性系统。