如题所述
评价指标是机器学习任务中非常重要的一环。不同的机器学习任务有着不同的评价指标,同时同一种机器学习任务也有着不同的评价指标,每个指标的着重点不一样。如分类(classification)、回归(regression)、排序(ranking)、聚类(clustering)、热门主题模型(topic modeling)、推荐(recommendation)等。并且很多指标可以对多种不同的机器学习模型进行评价,如精确率-召回率(precision-recall),可以用在分类、推荐、排序等中。像分类、回归、排序都是监督式机器学习,本文的重点便是监督式机器学习的一些评价指标。
分类是指对给定的数据记录预测该记录所属的类别。并且类别空间已知。它包括二分类与多分类,二分类便是指只有两种类别,如垃圾邮件分类中便是二分类问题,因为类别空间只有垃圾邮件和非垃圾邮件这两种,可以称为“负”(negative)与正(positive)两种类别,一般在实际计算中,将其映射到“0”-“1” class中;而多分类则指类别数超过两种。下面主要根据二分类的评价指标进行讲解,不过同时它们也可扩展到多分类任务中。下面对分类中一些常用的评价指标进行介绍。
准确率是指在分类中,使用测试集对模型进行分类,分类正确的记录个数占总记录个数的比例:
准确率看起来非常简单。然而,准确率评价指标没有对不同类别进行区分,即其平等对待每个类别。但是这种评价有时是不够的,比如有时要看类别0与类别1下分类错误的各自个数,因为不同类别下分类错误的代价不同,即对不同类别的偏向不同,比如有句话为“宁可错杀一万,不可放过一千“就是这个道理,例如在病患诊断中,诊断患有癌症实际上却未患癌症(False Positive)与诊断未患有癌症的实际上却患有癌症(False Negative)的这两种情况的重要性不一样。。另一个原因是,可能数据分布不平衡,即有的类别下的样本过多,有的类别下的样本个数过少,两类个数相差较大。这样,样本占大部分的类别主导了准确率的计算,为了解决这个问题,对准确率进行改进,得到平均准确率。
为了应对每个类别下样本的个数不一样的情况,对准确率进行变种,计算每个类别下的准确率,然后再计算它们的平均值。举例,类别0的准确率为80%,类别1下的准确率为97.5%,那么平均准确率为(80%+97.5%)/2=88.75%。因为每个类别下类别的样本个数不一样,即计算每个类别的准确率时,分母不一样,则平均准确率不等于准确率,如果每个类别下的样本个数一样,则平均准确率与准确率相等。
平均准确率也有自己的缺点,比如,如果存在某个类别,类别的样本个数很少,那么使用测试集进行测试时(如k-fold cross validation),可能造成该类别准确率的方差过大,意味着该类别的准确率可靠性不强。
混淆矩阵是对分类的结果进行详细描述的一个表,无论是分类正确还是错误,并且对不同的类别进行了区分,对于二分类则是一个2*2的矩阵,对于n分类则是n*n的矩阵。对于二分类,第一行是真实类别为“Positive”的记录个数(样本个数),第二行则是真实类别为“Negative”的记录个数,第一列是预测值为“Positive”的记录个数,第二列则是预测值为“Negative”的记录个数。如下表所示:
如上表,可以将结果分为四类:
* 真正(True Positive, TP):被模型分类正确的正样本;
* 假负(False Negative, FN):被模型分类错误的正样本;
* 假正(False Positive, FP):被模型分类的负样本;
* 真负(True Negative, TN):被模型分类正确的负样本;
精确率-召回率其实是两个评价指标。但是它们一般都是同时使用。精确率是指分类器分类正确的正样本的个数占该分类器所有分类为正样本个数的比例。召回率是指分类器分类正确的正样本个数占所有的正样本个数的比例。
F1-score为精确率与召回率的调和平均值,它的值更接近于Precision与Recall中较小的值。即:
Hold-out Validation较简单,它假设数据集中的每个数据点都是独立同分布的(i.i.d,independently and identically distributed)。因此我们只需要简单得将原数据集随机划分成两个部分,较大的部分作为训练集,用来训练数据,较小的部分作为验证集,用来对模型进行验证。
从计算的角度来说,Hold-out Validation是简单的并运行时间快的。缺点便是它是强假设的,缺乏有效的统计特征,并且验证数据集较小,那么其验证的结果则可靠性较低,同时也很难在单个数据集上计算方差信息与置信区间。因此如果需要使用 hold-out validation方法,则需要足够的数据以确保验证集数据足够而确保可靠的统计估计。
Cross-Validation是另一种模型训练集与验证集的产生方法,即将数据集划分成多个小部分集合,如划分成k个部分,那么就变为了k-fold cross validation。依次使用其中的k-1个数据集对模型进行训练(每次使用k-1个不同的数据集),然后使用剩下的一个数据集对模型进行评价,计算评价指标值。接着重复前面的步骤,重复k次,得到k个评价指标值。最后计算这k个评价指标的平均值。其中k是一个超参数,我们可以尝试多个k,选择最好的平均评价指标值所对应的k为最终的k值。
另一个Cross-Validation的变种便是leave-one-out。该方法与k-fold cross validation方法类似,只是k等于数据集中样本的总数目,即每次使用n-1个数据点对模型进行训练,使用最好一个数据点对模型进行训练。重复n次,计算每次的评价指标值,最后得到平均评价指标值。该方法又称为n-fold cross validation。
当数据集较小时以致hold-out validation效果较差的时候,cross validation是一种非常有效的训练集-验证集产生方法。
如何设置baseline呢?随机生成。如果是两个class的话那应该accuracy就是50%。那么model 的结果应该大于50%
把所有class设置为可能性最高的那个
One Rule,顾名思义也就是一条规则的意思。也就是说我们最终仅仅根据训练集中的一个特征就能够实现对数据的分类。如果只是使用一条规则的话,很显然这个分类的准确度不会很高,但是在某些特定的数据集中这个简单的算法也能够得到比较好的表现。
一般通过建立decision stump的方式,找error rate最小的那个
分类是指对给定的数据记录预测该记录所属的类别。并且类别空间已知。它包括二分类与多分类,二分类便是指只有两种类别,如垃圾邮件分类中便是二分类问题,因为类别空间只有垃圾邮件和非垃圾邮件这两种,可以称为“负”(negative)与正(positive)两种类别,一般在实际计算中,将其映射到“0”-“1” class中;而多分类则指类别数超过两种。下面主要根据二分类的评价指标进行讲解,不过同时它们也可扩展到多分类任务中。下面对分类中一些常用的评价指标进行介绍。
准确率是指在分类中,使用测试集对模型进行分类,分类正确的记录个数占总记录个数的比例:
准确率看起来非常简单。然而,准确率评价指标没有对不同类别进行区分,即其平等对待每个类别。但是这种评价有时是不够的,比如有时要看类别0与类别1下分类错误的各自个数,因为不同类别下分类错误的代价不同,即对不同类别的偏向不同,比如有句话为“宁可错杀一万,不可放过一千“就是这个道理,例如在病患诊断中,诊断患有癌症实际上却未患癌症(False Positive)与诊断未患有癌症的实际上却患有癌症(False Negative)的这两种情况的重要性不一样。。另一个原因是,可能数据分布不平衡,即有的类别下的样本过多,有的类别下的样本个数过少,两类个数相差较大。这样,样本占大部分的类别主导了准确率的计算,为了解决这个问题,对准确率进行改进,得到平均准确率。
为了应对每个类别下样本的个数不一样的情况,对准确率进行变种,计算每个类别下的准确率,然后再计算它们的平均值。举例,类别0的准确率为80%,类别1下的准确率为97.5%,那么平均准确率为(80%+97.5%)/2=88.75%。因为每个类别下类别的样本个数不一样,即计算每个类别的准确率时,分母不一样,则平均准确率不等于准确率,如果每个类别下的样本个数一样,则平均准确率与准确率相等。
平均准确率也有自己的缺点,比如,如果存在某个类别,类别的样本个数很少,那么使用测试集进行测试时(如k-fold cross validation),可能造成该类别准确率的方差过大,意味着该类别的准确率可靠性不强。
混淆矩阵是对分类的结果进行详细描述的一个表,无论是分类正确还是错误,并且对不同的类别进行了区分,对于二分类则是一个2*2的矩阵,对于n分类则是n*n的矩阵。对于二分类,第一行是真实类别为“Positive”的记录个数(样本个数),第二行则是真实类别为“Negative”的记录个数,第一列是预测值为“Positive”的记录个数,第二列则是预测值为“Negative”的记录个数。如下表所示:
如上表,可以将结果分为四类:
* 真正(True Positive, TP):被模型分类正确的正样本;
* 假负(False Negative, FN):被模型分类错误的正样本;
* 假正(False Positive, FP):被模型分类的负样本;
* 真负(True Negative, TN):被模型分类正确的负样本;
精确率-召回率其实是两个评价指标。但是它们一般都是同时使用。精确率是指分类器分类正确的正样本的个数占该分类器所有分类为正样本个数的比例。召回率是指分类器分类正确的正样本个数占所有的正样本个数的比例。
F1-score为精确率与召回率的调和平均值,它的值更接近于Precision与Recall中较小的值。即:
Hold-out Validation较简单,它假设数据集中的每个数据点都是独立同分布的(i.i.d,independently and identically distributed)。因此我们只需要简单得将原数据集随机划分成两个部分,较大的部分作为训练集,用来训练数据,较小的部分作为验证集,用来对模型进行验证。
从计算的角度来说,Hold-out Validation是简单的并运行时间快的。缺点便是它是强假设的,缺乏有效的统计特征,并且验证数据集较小,那么其验证的结果则可靠性较低,同时也很难在单个数据集上计算方差信息与置信区间。因此如果需要使用 hold-out validation方法,则需要足够的数据以确保验证集数据足够而确保可靠的统计估计。
Cross-Validation是另一种模型训练集与验证集的产生方法,即将数据集划分成多个小部分集合,如划分成k个部分,那么就变为了k-fold cross validation。依次使用其中的k-1个数据集对模型进行训练(每次使用k-1个不同的数据集),然后使用剩下的一个数据集对模型进行评价,计算评价指标值。接着重复前面的步骤,重复k次,得到k个评价指标值。最后计算这k个评价指标的平均值。其中k是一个超参数,我们可以尝试多个k,选择最好的平均评价指标值所对应的k为最终的k值。
另一个Cross-Validation的变种便是leave-one-out。该方法与k-fold cross validation方法类似,只是k等于数据集中样本的总数目,即每次使用n-1个数据点对模型进行训练,使用最好一个数据点对模型进行训练。重复n次,计算每次的评价指标值,最后得到平均评价指标值。该方法又称为n-fold cross validation。
当数据集较小时以致hold-out validation效果较差的时候,cross validation是一种非常有效的训练集-验证集产生方法。
如何设置baseline呢?随机生成。如果是两个class的话那应该accuracy就是50%。那么model 的结果应该大于50%
把所有class设置为可能性最高的那个
One Rule,顾名思义也就是一条规则的意思。也就是说我们最终仅仅根据训练集中的一个特征就能够实现对数据的分类。如果只是使用一条规则的话,很显然这个分类的准确度不会很高,但是在某些特定的数据集中这个简单的算法也能够得到比较好的表现。
一般通过建立decision stump的方式,找error rate最小的那个
温馨提示:答案为网友推荐,仅供参考