机器学习常见指标计算
Precision 、Recall 和F1 Score
精确率(Precision)和召回率(Recall)是机器学习中最常见的评估两个分类模型性能的指标。
预测为正 | 预测为负 | |
---|---|---|
实际为正 | TP(真正例) | FN(假反例) |
实际为负 | FP(假正例) | 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
然而两个这指标是一对矛盾的指标,一般在不同的应用场景会关系不同的指标。F1 Score是基于Precision和Recall的调和平均:
1
F
1
=
1
2
(
1
P
r
e
c
i
s
i
o
n
+
1
R
e
c
a
l
l
)
\frac{1}{F1} = \frac{1}{2}(\frac{1}{Precision}+\frac{1}{Recall})
F11=21(Precision1+Recall1)
AUC 和 ROC
ROC曲线的横轴为假正例率FPR,表示的含义是:所有真实类别为0的样本中,预测类别为1的比例。
纵轴为真正例率TPR,表示的含义是:所有真实类别为1的样本中,预测类别为1的比例。
两者计算方式如下:
F
P
R
=
F
P
T
N
+
F
P
FPR = \frac{FP}{TN+FP}
FPR=TN+FPFP
T
P
R
=
T
P
T
P
+
F
N
TPR = \frac{TP}{TP+FN}
TPR=TP+FNTP
可以看到TPR=Recall,ROC曲线图绘制如下:
首先两个端点的含义:
AUC是ROC曲线下部分的面积。具体含义是任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。或者,任意给定一个负样本,所有正样本的score中有多大比例是大于该负类样本的score。
AUC<0.5则意味着该模型总是将正例分类成负例,负例分类成正例。
AUC=0.5意味着该模型随机猜测样本的类别。
AUC>0.5意味着真实类别为1的样本中,预测类别为1的比例总是大于真实类别为0的样本中,预测类别为1的比例。
理想情况下,AUC=1,也就是说每个正类都被正确分类。
AUC的优点在于:AUC的计算方法同时考虑了分类器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器作出合理的评价。
假设正样本1个,负样本99个,如果使用Precision作为评测指标,那么即使全部预测为负样本的情况下,Precision=0.99;如果选择F1 score 作为评测指标那么,F1 score=0;
推荐系统常见指标计算
HR 和 NDCG
这两个指标常见于Top-n推荐。一般都是计算在前n个推荐物品中的指标值,比如HR@n表示推荐的n个物品中命中的物品除以测试集中对应user的物品数量。
Hit Ratio和Recall是一样计算的,对推荐物品的位置不敏感。
归一化折损累积增益(Normalized Discounted Cumulative Gain)对推荐物品位置敏感,计算方式如下:
N
D
C
G
@
n
=
D
C
G
@
n
I
D
C
G
NDCG@n = \frac{DCG@n}{IDCG}
NDCG@n=IDCGDCG@n
D
C
G
@
n
=
∑
i
=
1
n
2
r
e
l
i
−
1
l
o
g
2
(
i
+
1
)
DCG@n = \sum_{i=1}^{n}\frac{2^{rel_{i}}-1}{log_{2}(i+1)}
DCG@n=i=1∑nlog2(i+1)2reli−1
其中
r
e
l
i
rel_{i}
reli表示是第i个物品的相关性,一般相关的记为1,不相关的记为0。IDCG是所有推荐物品和测试集中物品都相关的条件下的DCG的值,显然是用来做归一化处理的。下面举个例子计算:
假设推荐物品top-5为[3,4,6,9,1],而测试集中的物品为[8,6,4],那么:
DCG@5 =
2
0
−
1
l
o
g
2
(
1
+
1
)
+
2
1
−
1
l
o
g
2
(
2
+
1
)
+
2
1
−
1
l
o
g
2
(
3
+
1
)
+
2
0
−
1
l
o
g
2
(
4
+
1
)
+
2
0
−
1
l
o
g
2
(
5
+
1
)
=
1.13
\frac{2^0-1}{log_{2}(1+1)}+\frac{2^1-1}{log_{2}(2+1)}+\frac{2^1-1}{log_{2}(3+1)}+\frac{2^0-1}{log_{2}(4+1)}+\frac{2^0-1}{log_{2}(5+1)}=1.13
log2(1+1)20−1+log2(2+1)21−1+log2(3+1)21−1+log2(4+1)20−1+log2(5+1)20−1=1.13
IDCG=
2
1
−
1
l
o
g
2
(
1
+
1
)
+
2
1
−
1
l
o
g
2
(
2
+
1
)
+
2
1
−
1
l
o
g
2
(
3
+
1
)
+
2
1
−
1
l
o
g
2
(
4
+
1
)
+
2
1
−
1
l
o
g
2
(
5
+
1
)
=
2.948
\frac{2^1-1}{log_{2}(1+1)}+\frac{2^1-1}{log_{2}(2+1)}+\frac{2^1-1}{log_{2}(3+1)}+\frac{2^1-1}{log_{2}(4+1)}+\frac{2^1-1}{log_{2}(5+1)}=2.948
log2(1+1)21−1+log2(2+1)21−1+log2(3+1)21−1+log2(4+1)21−1+log2(5+1)21−1=2.948
因此NDCG@5=0.383。
可以看出排序位置越靠前NDCG值越大。
MRR
平均倒数排序(Mean Reciprocal Rank)计算的是对用用户i,推荐列表中第一个用户感兴趣的物品的位置的倒数:
M
R
R
=
1
N
∑
1
N
1
r
a
n
k
i
MRR = \frac{1}{N}\sum_{1}^{N}\frac{1}{rank_{i}}
MRR=N11∑Nranki1
其中N代表用户的个数。比如系统只有一个用户,现在给用户推荐了3个物品[movie1,movie2,movie3],用户感兴趣的是movie3,那么
M
R
R
=
1
3
MRR = \frac{1}{3}
MRR=31。
MSE、 RMSE和MAE
这些指标常见于回归预测模型,同时也是推荐系统中评分预测的指标。均方误差(Mean Square Error)是预测值和真实值之差的平方的期望值:
M
S
E
=
1
N
∑
i
=
1
N
(
y
−
y
^
)
2
MSE = \frac{1}{N}\sum_{i=1}^{N}(y-\hat y)^{2}
MSE=N1i=1∑N(y−y^)2
均方根误差(Root Mean Square Error)其实就是MSE的平方根:
R
M
S
E
=
1
N
∑
i
=
1
N
(
y
−
y
^
)
2
RMSE = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y-\hat y)^{2}}
RMSE=N1i=1∑N(y−y^)2
平均绝对误差(Mean Absolute Error )是预测值和真实值之差的绝对值的期望值:
M
A
E
=
1
N
∑
i
=
1
N
∣
y
−
y
^
∣
MAE = \frac{1}{N}\sum_{i=1}^{N}|y-\hat y|
MAE=N1i=1∑N∣y−y^∣