文章目录
TP FP TN FN
准确率(Accuracy)
a c c = n u m c o r r e c t n u m a l l acc = \frac{num_{correct}}{num_{all}} acc=numallnumcorrect
既正确的数量除以错误的数量。
准确率这个指标的短板在于训练数据是否偏斜。以二分类为例,当正样本数量占5%,而负样本数量占95%时,即使模型很拉胯,把所有的测试用例都预测为负的,仍然可以得到acc为95%。所以当样本偏斜较大时,只靠ACC单一指标时不准确的。
解决方案:使用平均准确率。计算每个类别下的准确率,再取平均数。
精确率(Precision)、召回率(Recall)、PR曲线。
P r e c i s i o n = 分 类 正 确 的 正 样 本 数 量 机 器 判 定 为 正 的 数 量 = T P T P + F P R e c a l l = 分 类 正 确 的 正 样 本 数 真 正 的 正 样 本 数 = T P T P + F N Precision = \frac{分类正确的正样本数量}{机器判定为正的数量}=\frac{TP}{TP+FP} \\ \\ Recall = \frac{分类正确的正样本数}{真正的正样本数} = \frac{TP}{TP+FN} Precision=机器判定为正的数量分类正确的正样本数量=TP+FPTPRecall=真正的正样本数分类正确的正样本数=TP+FNTP
再信息检索领域,精确率又叫查全率,召回率又叫查准率。
以排序检索为例:假设排序的前N个我们判定为正,即TOP N。
假设有100个搜索结果是相关的,即真正的正样本数=100。假设模型排序时可以把这100的都排到前面。
-
我们以前TOP N = 5为正,Precision = 5/5 = 100%。而Recall = 5/100 = 5%
-
我们要提升Recall,就需要把N = 200时, 即前TOP200认为是正的,那么Precision = 100/200 = 50%。 而Recall = 100/100 = 100%
可见单凭Precision或者Recall是不能正确评估一个排序模型的性能的。需要综合来看。
可以绘制P-R曲线,即精确率-召回率曲线。单凭某个点的Precision Recall值也不能正确描述模型的性能,需要看PR曲线的整体走势。
纵轴为P,横轴为R,N取从高到低分别绘制曲线。
图片来自《百面机器学习》24页。
其他综合指标:F1 score ROC曲线。
F1 Score
F1 score是精确率和召回率的调和平均值:
F
1
=
2
×
P
r
e
c
i
s
i
o
n
×
R
e
c
a
l
l
P
r
e
c
i
s
i
o
n
+
R
e
c
a
l
l
F1 = \frac{2\times Precision \times Recall}{Precision+Recall}
F1=Precision+Recall2×Precision×Recall
一般可以综合的反应一个排序模型的性能。
RMSE
R M S E = ∑ i = 1 n ( y i − y ^ i ) 2 n RMSE = \frac {\sum_{i=1}^n (y_i -\hat y_i )^2}{n} RMSE=n∑i=1n(yi−y^i)2
均方误差的缺陷也很明显,如果有个别的离群点,即使模型拟合的效果很好,RMSE仍然可能居高不下。
解决方法:
-
如果认为这些点是噪声,就除掉这些离群点。
-
如果认为他们不是噪声,就需要提升模型的表达能力。
-
使用更合适的指标,如平均绝对百分比误差(Mean Absolute Percent Error, MAPE),相当于把目标均一化了。
M A P E = ∑ i = 1 n ∣ y i − y ^ i y i ∣ × 100 n MAPE = \sum_{i=1}^n |\frac{y_i-\hat y_i}{y_i }|\times \frac{100}{n} MAPE=i=1∑n∣yiyi−y^i∣×n100
ROC
ROC和PR曲线功能一样,可以综合评定一个模型的效果。
ROC曲线的
-
纵坐标为:真阳性率TPR(True Positive Rate)
-
横坐标为:假阳性率FPR(False Positive Rate)
T P R = T P P F P R = F P N TPR = \frac{TP}{P} \\ FPR= \frac{FP}{N} TPR=PTPFPR=NFP
TPR为:模型判定正确的(真阳)/正样本的数量
FPR为:模型判定为负样本实际是正样本(假阳)/负样本的数量
对于二分类问题,模型一般输出为正样本的概率。那么存在一个阈值,超过这个阈值我们就认为它是正的。再绘制ROC曲线的时候,就通过从高到低调整这个阈值来实现。
图片来源《百面机器学习》P29
阈值较好的点就是真阳性率高且假阳性率低的点。这其实一个很难两全的事。
AUC就是ROC曲线下半部分的面积。越大(曲线越接近左上方)说明模型的分类性能越好。
PR曲线和ROC曲线对比
正负样本的分布发生变化,ROC能基本保持不变,PR曲线形状变化一般比较剧烈。
余弦距离、欧氏距离、KL距离
最常用的距离衡量方法就是欧氏距离,即两点的差平方后求和。
余弦相似度:取值范围是[-1, 1]。相同为1
c
o
s
(
A
,
B
)
=
A
⋅
B
∣
∣
A
∣
∣
2
∣
∣
B
∣
∣
2
cos(A,B) = \frac{A \cdot B}{||A||_2 ||B||_2 }
cos(A,B)=∣∣A∣∣2∣∣B∣∣2A⋅B
∣ ∣ ⋅ ∣ ∣ 2 ||\cdot||_2 ∣∣⋅∣∣2是二阶范数。即平方加和再开方,求的是AB的模长。
余弦距离:取值范围是[0,2],相同为0
1
−
c
o
s
(
A
,
B
)
1-cos(A,B)
1−cos(A,B)
使用区别
如果特征向量的模长是经过归一化的,欧氏距离与余弦距离有着单调的关系。
欧氏距离体现再数据值上的差异,余弦距离体现在角度上的偏差。
例如:对于视频偏好:(0,1) (1,0) 的欧氏距离只有很小,余弦距离很大。我们更关注相对的差异,选择余弦距离。
对于登录次数(10,100)(1,10)用户的余弦距离很近,但是实际上他们的活动频率完全不同。应该选择欧氏距离。
三条距离公理:正定性(不为负)、对称性、三角不等式。余弦距离不满足三角不等式,不能认为是严格的定义。
KL(Kullback-Leibler Divergence),也叫相对熵。可以衡量两个分布之间的差异。再RL的TRPO算法和GAN的推到都有用到。不满足对称性和三角不等式。
Reference
[1]. 诸葛越, 葫芦娃等. 百面机器学习[M]. 人民邮电出版社, 2018