机器学习或者是日常生活中,遇见的往往是二分类问题比较多,二分类模型的模型评价准则很多,Auc_score,F1_score,accuracy等等都是比较常用的。而针对多分类问题来说,有些二分类的评价准则就相对而言不怎么适用了。虽然可以将多分类问题转化为多个2vs2问题进行讨论,步骤繁杂的同时效果也得不到保障。目前在进行多模态的一个分类研究,在模型评价时也废了不少脑筋,所以在这里将看到的比较常用的多分类评价准则进行整理,便于日后学习。
高偏差(high bias)与方差(high variance)
-
偏差,可以理解为样本与模型预测结果的差距,可以使用平方差计算
-
方差是样本y值与模型期望的差的平方和。
模型对实验数据欠拟合(underfitting) 是会出现搞偏差,而过拟合(overfitting)会造成高方差
解决方法:直接的方法是将实验数据一分为二:训练集和测试集。模型在训练集和测试集上都达到高正确率才说明偏差和方差都可以接受。
增加体征的数量可以降低偏差;减少特征数量可以降低方差
二分类和回归评估指标
image.png image.png多分类指标:
评价准则1:Kappa系数
Kappa系数是基于混淆矩阵的计算得到的模型评价参数。计算公式如下:
系数的值在-1到1之间,系数小于0的话实际上就相当于随机了。
python实现为:
from sklearn.metrics import cohen_kappa_score
kappa = cohen_kappa_score(y_true,y_pred,label=None) #(label除非是你想计算其中的分类子集的kappa系数,否则不需要设置)
2.海明距离
海明距离也适用于多分类的问题,简单来说就是衡量预测标签与真实标签之间的距离,取值在0~1之间。距离为0说明预测结果与真实结果完全相同,距离为1就说明模型与我们想要的结果完全就是背道而驰。公式就不贴了(0*0 原谅我太懒),直接来python实例。
from sklearn.metrics import hamming_loss
ham_distance = hamming_loss(y_true,y_pred)
3.杰卡德相似系数
它与海明距离的不同之处在于分母。当预测结果与实际情况完全相符时,系数为1;当预测结果与实际情况完全不符时,系数为0;当预测结果是实际情况的真子集或真超集时,距离介于0到1之间。
我们可以通过对所有样本的预测情况求平均得到算法在测试集上的总体表现情况。
from sklearn.metrics import jaccard_similarity_score
jaccrd_score = jaccrd_similarity_score(y_true,y_pred,normalize = default)
#normalize默认为true,这是计算的是多个类别的相似系数的平均值,normalize = false时分别计算各个类别的相似系数
4.铰链损失
铰链损失(Hinge loss)一般用来使“边缘最大化”(maximal margin)。损失取值在0~1之间,当取值为0,表示多分类模型分类完全准确,取值为1表明完全不起作用。
from sklearn.metrics import hinge_loss
hinger = hinger_loss(y_true,y_pred)
网友评论