1、常用的评估指标有哪些?
回答:评估分类算法的性能用精度accuracy;评估回归算法的性能用R方(R的平方)。
2、精度accuracy指标对评估二分类模型的不足?
回答:实际应用场景中,单一的精度accuracy指标不能满足要求,甚至是不合适的,需要寻找其他衡量指标。①错误类型。二分类算法在实践中是最常用的机器学习应用,由于模型不是完美的,它会误判,误判包括假正例(错误的阳性预测)、假反例(错误的阴性预测)。有时候,误判是不容忽视。②数据集不平衡。如果数据集中反类占比99%,正类占比1%,当预测精度accuracy为99%时,即便如此,我们不能断定模型性能是好的。
3、混淆矩阵confusion matrix是什么?
回答:混淆矩阵是二分类算法中实际标签和预测标签的矩阵表达。行代表实际标签,列代表预测标签。图示如下:
4、由混淆矩阵引申的一些常用指标?
回答:包括accuracy、precision、recall、f-score等。
精度accuracy=(TP+TN)/(TP+TN+FP+FN);
准确率precision=TP/(TP+FP),也称为阳性预测值(positive predictive value,PPV);
召回率recall=TP/(TP+FN),也称为灵敏度(sensitivity)、命中率(hit rate)、真正例率(true positive rate,TPR);
f-分数f-score=2*(precision*recall)/(precision+recall),是准确率和召回率的调和平均;
假正例率FPR=FP/(FP+TN);
在优化召回率与优化准确率直接通常需要折中(注:通常两者负相关)。
5、如何评估预测的不确定性?
回答:大多数分类器都提供了一个decision_function或predict_proba方法来评估预测的不确定度。预测可以被看作是以某个固定点作为decision_function或predict_proba输出的阈值——在二分类问题中,我们使用0作为决策函数的阈值,0.5作为predict_proba的阈值。
如SVC分类器有.decision_function方法,随机森林分类器有.predict_proba方法。
6、准确率-召回率曲线precision_recall_curve是什么?
回答:改变模型中用于做分类决策的阈值,是一种调节给定分类器的准确率和召回率之间折中的方法。曲线中,横轴是准确率,纵轴是召回率。曲线越靠近右上角,则分类器越好,说明准确率与召回率都很高。
7、ROC曲线roc_curve是什么?
回答:同上,分析不同阈值下,显示假正例率与真正例率的曲线图。曲线中,横轴是假正例率(公式:FP/(TN+FP)),纵轴是真正例率(召回率)。曲线越靠近左上角,则分类器越好,说明召回率高且假正例率低。
注:假正例率=1-真假例率(0的召回率)
8、二分类评估指标的常用sklearn库?
from sklearn.metrics import confusion_matrix
from sklearn.metrics import f1_score
from sklearn.metrics import classification_report #查看precision 、recall 、f1-score 、support值
from sklearn.metrics import classification
from sklearn.metrics import precision_recall_curve #准确率-召回率曲线
from sklearn.metrics import average_precision_score #平均准确率,即准确率-召回率曲线下面积
from sklearn.metrics import precision_recall_fscore_support
from sklearn.metrics import precision_score
from sklearn.metrics import roc_curve #ROC曲线(假正率-真正率曲线)
from sklearn.metrics import roc_auc_score #AUC,即ROC曲线下面积
9、精度accuracy指标对评估多分类模型的不足?
回答:如果标签类别是不平衡的,精度accuracy就不是很好的评估度量。
10、如何有效评估多分类模型?
回答:对于不平衡数据集的多分类,常用的评估工具有混淆矩阵和分类报告,常用的评估指标是多分类版本的f-分数。多分类f-分数背后的想法是,对每个类别计算一个二分类f-分数,其中该类别是正类,其他所有类别是反类。然后使用以下三种策略之一计算平均f-分数。
第一种:宏macro平均。计算未加权的按类别f-分数。它对所有类别给出相同的权重,无论类别中的样本量大小。
第二种:加权weighted平均。以每个类别的支持作为权重来计算按类别f-分数的平均值。分类报告中给出的就是这个值。
第三种:微micro平均。计算所有类别中假正例、假反例和真正例的总数,然后利用这些计数计算准确率、召回率,进一步计算f-分数。
11、多分类评估指标的常用sklearn库?
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report #查看precision 、recall 、f1-score 、support值
12、回归的评估指标有哪些?
回答:除了R方(R的平方)外,有时候也会用均方误差MSE或平均绝对误差MAE。
R-squared = SSR/SST=1-SSE/SST
(SST=SSR+SSE,SST(total sum of squares)为总平方和,SSR(regression sum of squares)为回归平方和,SSE(error sum of squares) 为残差平方和)
13、如何在python实现设置评估指标?
回答:可通过修改参数scoring为其他评估指标。如,cross_val_score中参数scoring=‘roc_auc’,GridSearchCV中参数scoring=‘roc_auc’
注:有些书本accuracy翻译为精度、precision翻译为准确率;有些书本刚好相反,accuracy翻译为准确率、precision翻译为精确度。为了不引起误解,我直接用英文。在分类算法中,评估模型的score是指标accuracy。
以上总结,参考《Python机器学习基础教程》,感谢!