机器学习中的一些COST函数的说明

来源:互联网 发布:project是什么软件 编辑:程序博客网 时间:2024/05/24 01:41

一般这些函数都能在 sklearn.metrics 中找到

Regression问题

以下Cost主要针对Regression问题

RMSLE (Root Mean Squared Logarithmic Error )

sklearn.metrics.mean_squared_log_error,没有root,问题不大。
标准公式如下:
1ni=1n((log(pi+1)log(ai+1))2

pi是prediction,对应着RMSE的yiai是actual,对应着RMSE的ŷ i

RMSLE measures the ratio between actual and predicted. 可以写成 logpi+1ai+1

It can be used when you don’t want to penalize huge differences when both the values are huge numbers.
Also, this can be used when you want to penalize under estimates more than over estimates.

就是说,它关注的是比例而不是绝对值(Only the percentual differences matter! ),同时,如果预测值比实际值低时,它的惩罚更高。

RMSE (Root Mean Squared Error)

公式如下:
1ni=1n(yiŷ i)2

关注的是绝对值。对于预测值与实际值差距的惩罚,只关注差值,而不关心是偏高还是偏低。这个用的比较多。
相比较下面的MAE,对于大的出错,因为有个平方,所以它的相对惩罚值比较大,可以比较好的抑制大的Variance误差。和MAE的惩罚相比,对于离散误差(Variance Error)惩罚更为显著。

RMSE does not necessarily increase with the variance of the errors. RMSE increases with the variance of the frequency distribution of error magnitudes.

MAE (Mean Absolute Error)

公式如下:
1nj=1nyiŷ i

定义的就是平均误差,它只关注偏移误差(Bias Error),对于Variance Error抑制不够,用的还是少了点。

Classification问题

以下Cost主要对于 classification 的问题

Confusion_matrix

A confusion matrix, also known as an error matrix, is a specific table layout that allows visualization of the performance of an algorithm, typically a supervised learning one.
在 sklearn.metrics.confusion_matrix,主要判断分类(classification)的准确性。返回的是一个Matrix,可以自己根据Matrix里面的值评估效果。

以二元(True/False)分类为例,这张表有Predicted和Actual的区别,有以下4种情况:

  • true positives (TP): Predicted为True,实际也是True
  • true negatives (TN): Predicted为False,实际也是False
  • false positives (FP): Predicted为True,实际为False
  • false negatives (FN): Predicted为False,实际为True

这里写图片描述

以上图为例,可以引出如下的评估指标

  • ==Accuracy==: 大体上,分类器的准确率
    • TP+TNtotal=100+50165=0.91
    • sklearn.metrics.accuracy_score
  • Misclassification Rate: 大体上,分类器的错误率
    • FP+FNtotal=10+5165=0.09
    • 等于 1 - Accuracy
    • 别名是 Error Rate
  • ==True Positive Rate==(Recall): 如果实际是True,它有多大概率预测为True
    • TPFN+TP=1005+100=0.95
    • 别名是 Sensitivity 或者 Recall
    • sklearn.metrics.recall_score
  • False Positive Rate: 如果实际是False,它有多大概率预测为True
    • FPFP+TN=1010+50=0.17
  • Specificity: 如果实际是False,它有多大概率预测为False
    • TNFP+TN=5010+50=0.83
    • 等于 1 - False Positive Rate
  • ==Precision==:如果预测是True,它的预测准确率
    • TPTP+FP=100100+10=0.91
    • sklearn.metrics.precision_score
  • Prevalence:真实环境下,True的概率是多少
    • TP+FNTP+FN+TN+FP=100+5100+5+50+10=0.64
    • 这个用来判断分类的平衡情况(balance)
  • Positive Predictive Value(PPV): 衡量统计中Positive结果都被正确预测的比例。与NPV对应。
    • Sensitivity×PrevalenceSensitivity×Prevalence+(1Specificity)×(1Prevalence)=0.95×0.640.95×0.64+(10.83)×(10.64)=0.91
    • 当分类是完全平衡的情况下,Prevalence是0.5,则这个值等于Precision
  • Negative Predictive Value(NPV):衡量统计中Negative结果都被正确预测的比例。与PPV对应。
    • Specificity×(1Prevalence)(1Sensitivity)×Prevalence+Specificity×(1Prevalence)=0.83×(10.64)(10.83)×0.64+0.83×(10.64)=0.73
  • Null Error Rate: 取概率最大那个,如True的概率比较大,那么分类器永远返回True的话,它的出错概率
    • FP+TNFP+TN+FN+TP=10+5010+50+5+100=0.36
    • 这个可以用来作为采用的分离器的基准。如果它的 Misclassification Rate(Error Rate)大于这个值,就是有问题的。特殊情况,参见Accuracy paradox
  • ==Cohen’s Kappa==
    • sklearn.metrics.cohen_kappa_score
  • ==F1 score==: 对于二分的问题,F1可以用来测试准确性,它综合考虑了Precision与Recall。
    • 2×11Recall+1Precision=2×Recall×PrecisionRecall+Precision
    • sklearn.metrics.f1_score
  • ==ROC Curve==: 通过不同的阈值,分类器的 True Positive Rate 与 False Positive Rate 存在变化,分别以它们为 x 轴和 y 轴作图,可以看到分类器在所有阈值下的预测情况。
    • 有关ROC的介绍可以参考在线教程
    • 有效的分类器的ROC曲线,尽量靠图像左上角。对于非常差的分类器,ROC曲线退换成近对角线。
    • ROC引入了AUC(Area Under Curve)的概念,同样,有效分类器这个值接近于1,而非常差的分类器,这个值接近0.5。sklearn.metrics.roc_auc_score
    • sklearn.metrics.roc_curve