sklearn中的metric中共有70+种损失函数,让人目不暇接,其中有不少冷门函数,如brier_score_loss,如何选择合适的评估函数,这里进行梳理。
Positive | Negative | |
---|---|---|
True | TP 真阳性 | TN 真阴性 |
False | FP 假阳性 | FN 假阴性 |
A C C = T P + T N T P + T N + F P + F N ACC= \frac{TP+TN}{TP+TN+FP+FN} ACC=TP+TN+FP+FNTP+TN
分类准确率分数指的是所有分类正确的百分比。
缺点:(1)无法告知响应值的潜在分布,也无法告知分类器错误。
(2) 在数据集不平衡的时候,不太能反映模型优劣。
例如:分类问题的数据集中本来就有97% 示例是属于X,只有另外3%不属于X,所有示例都被分类成X的时候,准确率仍然高达97%,但这没有任何意义。
sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
作用: 预测正向的数据里有多少预测正确。在癌症,广告转换率的时候需要用到。
R e c a l l = T P T P + T N Recall = \frac{TP}{TP+TN} Recall=TP+TNTP
作用:预测正向的数据中,有多少预测正确
精确率和召回率的调和均值。
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*Precision*Recall}{Precision + Recall} F1=Precision+Recall2∗Precision∗Recall
AMI是基于预测簇响亮与真实簇响亮的互信息分数衡量相似度的。AMI越大,相似度越高。AMI接近于0表示簇向量是随机分配的。MI(互信息指数)和NMI(标准化的互信息指数)不符合簇向量随机分配的理论,随着分配簇的个数增加,MI和NMI也会趋于增加,AMI的值会一直接近于0。
A M I ( U , V ) = [ M I ( U , V ) − E ( M I ( U , V ) ) ] / [ a v g ( H ( U ) , H ( V ) ) − E ( M I ( U , V ) ) ] AMI(U, V) = [MI(U, V) - E(MI(U, V))] / [avg(H(U), H(V)) - E(MI(U, V))] AMI(U,V)=[MI(U,V)−E(MI(U,V))]/[avg(H(U),H(V))−E(MI(U,V))]
平均绝对误差MAE(Mean Absolute Error)又被称为 范数损失(l1-norm loss)。
M S E = 1 m ∑ i = 1 m ∣ y i − y ^ ∣ MSE = \frac{1}{m}\sum_{i=1}^m |y^i - \hat{y}| MSE=m1i=1∑m∣yi−y^∣
平均平方误差 MSE(Mean Squared Error)又被称为 范数损失(l2-norm loss)。
M S E = 1 m ∑ i = 1 m ( y i − y ^ ) 2 MSE = \frac{1}{m}\sum_{i=1}^m (y^i-\hat{y})^2 MSE=m1i=1∑m(yi−y^)2
均方根误差RMSE(Root Mean Squared Error)
R M S E = 1 m ∑ i = 1 m ( y i − y ^ ) 2 RMSE = \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y^i - \hat{y})^2} RMSE=m1i=1∑m(yi−y^)2
缺点:加大了预测不准的评估项的惩罚。
~~'accuracy_score',~~
~~'adjusted_mutual_info_score',~~
'adjusted_rand_score',
'auc',
'average_precision_score',
'balanced_accuracy_score',
'calinski_harabasz_score',
'check_scoring',
'classification_report',
'cluster',
'cohen_kappa_score',
'completeness_score',
'ConfusionMatrixDisplay',
'confusion_matrix',
'consensus_score',
'coverage_error',
'dcg_score',
'davies_bouldin_score',
'DetCurveDisplay',
'det_curve',
'euclidean_distances',
'explained_variance_score',
'f1_score',
'fbeta_score',
'fowlkes_mallows_score',
'get_scorer',
'hamming_loss',
'hinge_loss',
'homogeneity_completeness_v_measure',
'homogeneity_score',
'jaccard_score',
'label_ranking_average_precision_score',
'label_ranking_loss',
'log_loss',
'make_scorer',
'nan_euclidean_distances',
'matthews_corrcoef',
'max_error',
~~'mean_absolute_error',~~
'mean_squared_error',
'mean_squared_log_error',
'mean_poisson_deviance',
'mean_gamma_deviance',
'mean_tweedie_deviance',
'median_absolute_error',
'mean_absolute_percentage_error',
'multilabel_confusion_matrix',
'mutual_info_score',
'ndcg_score',
'normalized_mutual_info_score',
'pair_confusion_matrix',
'pairwise_distances',
'pairwise_distances_argmin',
'pairwise_distances_argmin_min',
'pairwise_distances_chunked',
'pairwise_kernels',
'plot_confusion_matrix',
'plot_det_curve',
'plot_precision_recall_curve',
'plot_roc_curve',
'PrecisionRecallDisplay',
'precision_recall_curve',
'precision_recall_fscore_support',
~~'precision_score',~~
'r2_score',
'rand_score',
~~'recall_score',~~
'RocCurveDisplay',
'roc_auc_score',
'roc_curve',
'SCORERS',
'silhouette_samples',
'silhouette_score',
'top_k_accuracy_score',
'v_measure_score',
'zero_one_loss',
'brier_score_loss',