机器学习:分类、多分类、回归模型的评估

http://blog.csdn.net/pipisorry/article/details/52574156

衡量分类器的好坏

        对于二类分类器/分类算法,评价指标主要有accuracy, [precision,recall,F-score,pr曲线],ROC-AUC曲线,gini系数。

        对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均,F-score]。

        对于回归分析,主要有mse和r2/拟合优度。

二分类模型的评估

机器学习系统设计系统评估标准

  1. Error Metrics for Skewed Classes有偏类的错误度量精确度召回率
    1. PrecisionRecall精确度召回率
  2. Trading Off Precision and Recall权衡精度和召回率F1值
    1. A way to choose this threshold automatically How do we decide which of these algorithms is best
  3. Data For Machine Learning数据影响机器学习算法的表现

[Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准  ]

准确率/召回率/精度/F1值

混淆矩阵

混淆矩阵赋予一个分类器性能表现更全面的认识,同时它通过计算各种分类度量,指导你进行模型选择。

对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:

真正例(True Positive,TP):真实类别为正例,预测类别为正例。

假正例(False Positive,FP):真实类别为负例,预测类别为正例。

假负例(False Negative,FN):真实类别为正例,预测类别为负例。

真负例(True Negative,TN):真实类别为负例,预测类别为负例。

然后可以构建混淆矩阵(Confusion Matrix)如下表所示。

真实类别

预测类别

正例

负例

正例

TP

FN

负例

FP

TN

准确率、识别率(Classification Accuracy)

分类器正确分类的比例

(TP+TN) /(TP+TN+FN+FP)

错误率、误分类率(Classification Error):分类器误分类的比例

(FP+FN) /(TP+TN+FN+FP)

考虑类不平衡问题,其中感兴趣的主类是稀少的。即数据集的分布反映负类显著地占多数,而正类占少数。故面对这种问题,需要其他的度量,评估分类器正确地识别正例数据的情况和正确地识别负例数据的情况。

精度(Precision)

看做精确性的度量,即标记为正类的数据实际为正例的百分比

TP /(TP+FP)

准确率,又称查准率(Precision,P):

    

召回率(Recall)

也称为真正例识别率、灵敏性(Sensitivity)、查全率:正确识别的正例数据在实际正例数据中的百分比

TP /(TP+FN)

召回通道的评级指标——recall@k

[召回:效果评估_-柚子皮-的博客-CSDN博客]

特效性(Specificity),也称为真负例率:正确识别的负例数据在实际负例数据中的百分比

print TN / float(TN+FP)

假阳率(False Positive Rate):实际值是负例数据,预测错误的百分比

FP /(TN+FP)

specificity = TN / float(TN+FP)

print 1 - specificity

F1值/F度量

(又称为F1分数或F分数)是使用精度和召回率的方法组合到一个度量上。

F=2∗precision∗recall/(precision+recall)


F1的一般形式:Fβ=(1+β^2)∗precision∗recall/(β^2∗precision+recall)

F度量是精度和召回率的调和均值,它赋予精度和召回率相等的权重。

Fβ度量是精度和召回率的加权度量,它赋予召回率权重是赋予精度的β倍。

(2*precision*recall) / (precision+recall)

G-Mean指标,也能评价不平衡数据的模型表现。

示例

pred label: 001001000001

true  label: 101010010110

计算的precision=1/3, recall=1/6

如果将pred label和true label的0和1互换,得到的precision=4/9, recall=4/6,recall变大很多,原因是true  label是1:1的,而pred label是1:3的。

[Scikit-learn:模型评估Model evaluation]

[机器学习系统设计(Week 6)系统评估标准]

模型训练完后在测试集上的查全率recall=1,但是查准率precision很低,怎么调整?

调整阈值:您可以尝试调整预测结果的阈值,以便更严格地筛选出正样本。这可能会导致查准率提高,但查全率可能会降低。
数据清洗:检查数据集中是否存在噪声或异常值,并将其清除。这可以提高模型的鲁棒性和准确性。
特征选择:通过选择更相关的特征来训练模型,可以提高模型的性能和准确性。
样本平衡:如果数据集中正样本和负样本比例不平衡,可以使用一些方法来平衡数据集,如欠采样、过采样等。[不平衡数据的机器学习_-柚子皮]

[monica]

ROC-AUC曲线和PRC曲线

衡量排序能力:AUC、G-AUC[分类模型评估之ROC-AUC曲线和PRC曲线]

logloss、ECE、PCOC

衡量校准能力:logloss、ECE (the expected calibration error)、PCOC (the predicted CTR over the true CTR)

  • 衡量校准能力:logloss、ECE (the expected calibration error)、PCOC (the predicted CTR over the true CTR)。
    具体计算过程如下:

logloss就是交叉熵损失;

ECE中,会将[0, 1)分为𝐵𝑘桶,对某个样本的pctr p̂ i 看落在哪个桶内,对每个桶内的样本计算预估偏差的绝对值和,再取平均;

PCOC是预估值的和除以label的和。

上述3种校准刻画指标提供了不同level的评估。其中,logloss是sample-level校准评估,越小越好、ECE是subset-level的校准评估,越小越好、PCOC是dataset-level的校准评估,越接近1越好。

[KDD'23 | 阿里, 排序和校准联合建模: 让listwise模型也能用于CTR预估 - 知乎]

KS曲线

    柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同。ROC曲线是评判一个模型好坏的标准,但是最好的阈值是不能通过这个图知道的,要通过KS曲线得出。

    KS值越大,表示模型能够将正、负客户区分开的程度越大。 通常来讲,KS>0.2即表示模型有较好的预测准确性。

  绘制方式与ROC曲线略有相同,都要计算TPR和FPR。但是TPR和FPR都要做纵轴,横轴为把样本分成多少份。 KS曲线的纵轴是表示TPR和FPR的值,就是这两个值可以同时在一个纵轴上体现,横轴就是阈值,然后在两条曲线分隔最开的地方,对应的就是最好的阈值。

下图中,一条曲线是FPR,一条是TPR

吉尼系数Gini coefficient

在用SAS或者其他一些统计分析软件,用来评测分类器分类效果时,常常会看到gini coefficient,gini系数通常被用来判断收入分配公平程度,具体请参阅wikipedia-基尼系数

在ID3算法中我们常使用信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。


  图6.洛伦茨曲线与基尼系数

Gini coefficient 是指绝对公平线(line of equality)和洛伦茨曲线(Lorenz Curve)围成的面积与绝对公平线以下面积的比例,即gini coefficient = A面积 / (A面积+B面积) 。

用在评判分类模型的预测效力时,是指ROC曲线曲线和中线围成的面积与中线之上面积的比例。


  图7.Gini coefficient与AUC

因此Gini coefficient与AUC可以互相转换:

gini = A / (A + B) = (AUC - C) / (A + B) = (AUC -0.5) / 0.5 = 2*AUC - 1

Note: 特别值得注意的一点是,这里的AUC并不是roc_auc(y是二值的)计算里面的那个roc曲线面积,而是指x,y横纵坐标计算出来的面积(y不是二值而是连续值)。

Gini系数的计算

def giniCoefficient(x, y):
    '''
    gini系数计算
      :param x: 推测值(人口)
      :param y: 实际值(财富)
    '''
    x = np.asarray(x)
    y = np.asarray(y)
    x.__add__(0)
    y.__add__(0)

    x = np.cumsum(x)
    if x[-1] != 0:
        x = x / x[-1]

    y = np.cumsum(y)
    if y[-1] != 0:
        y = y / y[-1]

    area = metrics.auc(x, y, reorder=True)
    gini_cof = 1 - 2 * area

    return gini_cof if math.fabs(gini_cof) > pow(math.e, -6) else 0

皮皮blog

多分类模型的评估

accuracy

         在多类分类的背景下,accuracy = (分类正确的样本个数) / (分类的所有样本个数)。

         这样做其实看上去也挺不错的,不过可能会出现一个很严重的问题:例如某一个不透明的袋子里面装了1000台手机,其中有600台iphone6, 300台galaxy s6, 50台华为mate7,50台mx4(当然,这些信息分类器是不知道的。。。)。如果分类器只是简单的把所有的手机都预测为iphone6, 那么通过上面的公式计算的准确率accuracy为0.6,看起来还不错;可是三星,华为和小米的全部预测错了。如果再给一个袋子,里面装着600台galaxy s6, 300台mx4, 50台华为mate7,50台iphone,那这个分类器立马就爆炸了

宏平均(macro-average)、微平均(micro-average)和Weight F1

         如果只有一个二分类混淆矩阵,那么用以上的指标就可以进行评价,没有什么争议,但是当我们在n个二分类混淆矩阵上要综合考察评价指标的时候就会用到宏平均和微平均。宏平均(macro-average)和微平均(micro-average)是衡量文本分类器的指标。根据Coping with the News: the machine learning way: When dealing with multiple classes there are two possible ways of averaging these measures(i.e. recall, precision, F1-measure) , namely, macro-average and micro-average. The macro-average weights equally all the classes, regardless of how many documents belong to it. The micro-average weights equally all the documents, thus favouring the performance on common classes. Different classifiers will perform different in common and rare categories. Learning algorithms are trained more often on more populated classes thus risking local over-fitting.

宏平均(Macro-averaging)

是先对每一个类统计指标值,然后在对所有类求算术平均值。宏平均指标相对微平均指标而言受小类别的影响更大。即将n分类的评价拆成n个二分类的评价,计算每个二分类的score,n个 score的平均值即为Macro score。

             (5)

           (6)

宏F值:

方法一: 求取每一类的F值之后求平均值

           (7)

方法二: 还有一种说法是先分别计算查准率和查全率,再进行平均,使用平均的查准率查全率计算宏F值。

        (8)     

关于宏F1两种计算方法最终结果是不一样的。两种方式的使用争议一直存在。在Scikit-learn(以前称为scikits.learn,也称为sklearn)的包中,使用的是第一种方式。

不过在“Training algorithms for linear text classifiers”中,作者指出,macro-F1是所有类中F1-score的平均值,即第一种方式才是macro-F1的计算方式。论文Macro F1 and Macro F12对两种macro的方法进行简单分析,第二种方式对错误的分布不太敏感,这一点有点像micro-F1,论文作者也推荐方法一。

微平均(Micro-averaging)

是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加,计算评价准确率和召回率,由这2个准确率和召回率计算的F1 score即为Micro F1。

[多类分类性能评价之宏平均(macro-average)与微平均(micro-average)]

          (9)

          (10)         

       (11)  

从上面的公式我们可以看到微平均并没有什么疑问,但是在Micro P / Micro R / Micro F1 计算下来都等于 Accuracy, 除非pred中存在而true中不存在的标签 或者 存在[0 0 0]这种非onehot的错误标签 或者 multilabel时(pred中存在而true中不存在的情况更多),而前两种情况一般是不存在的,都是人为构造数据的问题),所以不需要关注 Micro,所以现在 sklearn 的 classification report 里面已经完全剔除了 Micro,换成了 Accuracy。

[微平均(Micro-averaging)]

[谈谈评价指标中的宏平均和微平均]

Weight F1

Weighted F值 是Macro 算法的改良版,顾名思义就是加权版本的F值计算。是为了解决Macro中没有考虑样本不均衡的问题。

既然是Macro F值计算的改良版,那肯定也是有两种计算方法:

方法一:将各类别的F值乘以该类在总样本中的占比进行加权计算。

方法二:在计算查准率和查全率的时候,各个类别的查准率和查全率要乘以该类在总样本中的占比进行加权计算。

[Weight F1]

对比

         在测试数据集上,度量分类器对大类判别的有效性应该选择微平均,而度量分类器对小类判别的有效性则应该选择宏平均。

        一般来讲,Macro F1、Micro F1高的分类效果好。Macro F1受样本数量少的类别影响大。

        如果你的类别比较均衡,则随便;如果你认为大样本的类别应该占据更重要的位置, 使用Micro;如果你认为小样本也应该占据重要的位置,则使用 Macro;如果 Micro << Macro , 则意味着在大样本类别中出现了严重的分类错误;如果 Macro << Micro , 则意味着小样本类别中出现了严重的分类错误。

        类别极度不均衡肯定用 weighted 最合理,用 Macro 一般情况会拉低(因为小数量的类别一般情况下预测不好,但最后又是 mean)。

示例

多类分类指标计算

具有 A、B、C 类的混淆矩阵

计算 A B C类的各种指标

Accuracy = 正确分类的总数 / 实际分类的总数 = (15 + 15+ 45)/100 = 0.75

Precision (A) = 正确预测 / 总预测 = 15/24 = 0.625
Precision (B) = 正确预测 / 总预测 = 15/20 = 0.75
Precision (C) = 正确预测 / 总预测 = 45/56 = 0.804

Recall (A)= 正确分类 / 总实际值 = 15/20 = 0.75
Recall (B)= 正确分类 / 总实际值 = 15/30 = 0.5
Recall (C)= 正确分类 / 总实际值 = 45/50 = 0.9
F1_score(A) = 0.625*0.75*2/(0.625+0.75) = 0.682
F1_score(B) = 0.6
F1_score(C) = 0.849

Micro_Precision = Micro_Recall = Micro_F1 = (15 + 15+ 45)/100 = 0.75
Macro_Precision = (0.625 + 0.75 + 0.804)/3 = 0.726

# 按真实label的占比加权(在sklearn里面实现的)
Weighted_Precision = 20/100 * 15/24 + 30/100 * 15/20 + 50/100 * 45/56 = 0.752
# 按预估label的占比加权
Weighted_Precision = 24/100 * 15/24 + 20/100 * 15/20 + 56/100 * 45/56 = 15/100+15/100+45/100 = 0.75  = Micro_Precision
Note: 按预估label的占比加权的Weighted_Precision = Micro_Precision。 模型预估准确的话,一般“按真实label的占比加权”和“按预估label的占比加权”差异不大(除非模型预估太不准了),而“按预估label的占比加权”和micro_*等价的。

import numpy as np
from sklearn import metrics

np.set_printoptions(precision=3)

y_true = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a',
          'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b',
          'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c',
          'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c',
          'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c']

y_pred = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c',
          'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'a', 'a', 'a', 'a', 'a',
          'a', 'a', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c',
          'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c',
          'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'a', 'a', 'b', 'b', 'b']

confusion = metrics.confusion_matrix(y_true, y_pred)
print("confusion:\n{}".format(confusion))

accuracy = metrics.accuracy_score(y_true, y_pred)
print("accuracy:{:.3}".format(accuracy))

none_p = metrics.precision_score(y_true, y_pred, average=None)
none_r = metrics.recall_score(y_true, y_pred, average=None)
none_f1 = metrics.f1_score(y_true, y_pred, average=None)
print("none_p:{}, none_r:{}, none_f1:{}".format(none_p, none_r, none_f1))

micro_p = metrics.precision_score(y_true, y_pred, average='micro')
micro_r = metrics.recall_score(y_true, y_pred, average='micro')
micro_f1 = metrics.f1_score(y_true, y_pred, average='micro')
print("micro_p:{:.3}, micro_r:{:.3}, micro_f1:{:.3}".format(micro_p, micro_r, micro_f1))

macro_p = metrics.precision_score(y_true, y_pred, average='macro')
macro_r = metrics.recall_score(y_true, y_pred, average='macro')
macro_f1 = metrics.f1_score(y_true, y_pred, average='macro')
print("macro_p:{:.3}, macro_r:{:.3}, macro_f1:{:.3}".format(macro_p, macro_r, macro_f1))

weight_p = metrics.precision_score(y_true, y_pred, average='weighted')
weight_r = metrics.recall_score(y_true, y_pred, average='weighted')
weight_f1 = metrics.f1_score(y_true, y_pred, average='weighted')
print("weight_p:{:.3}, weight_r:{:.3}, weight_f1:{:.3}".format(weight_p, weight_r, weight_f1))

confusion:
[[15  2  3]
 [ 7 15  8]
 [ 2  3 45]]
accuracy:0.75
none_p:[0.625 0.75  0.804], none_r:[0.75 0.5  0.9 ], none_f1:[0.682 0.6   0.849]
micro_p:0.75, micro_r:0.75, micro_f1:0.75
macro_p:0.726, macro_r:0.717, macro_f1:0.71
weight_p:0.752, weight_r:0.75, weight_f1:0.741

[sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')][Scikit-learn:分类模型评估示例]

[多分类任务的混淆矩阵 - 知乎]

Kappa一致性系数

        交叉表(混淆矩阵)虽然比较粗糙,却是描述栅格数据随时间的变化以及变化方向的很好的方法。但是交叉表却不能从统计意义上描述变化的程度,需要一种能够测度名义变量变化的统计方法即KAPPA指数——KIA。 kappa系数是一种衡量分类精度的指标。KIA主要应用于比较分析两幅地图或图像的差异性是“偶然”因素还是“必然”因素所引起的,还经常用于检查卫星影像分类对于真实地物判断的正确性程度。KIA是能够计算整体一致性和分类一致性的指数。

Note: Kappa scores 可以计算 binary or multiclass (二分或者多分类)问题,但不能用于 multilabel problems (多标签问题)(除了手动计算 per-label score (每个标签分数)),而不是两个以上的 annotators (注释器)。[3.3. 模型评估: 量化预测的质量 - sklearn]

KIA的计算式的一般性表示为: 
  这里写图片描述 
总体KAPPA指数的计算式为:
这里写图片描述

  式中, 
这里写图片描述 
  式中的p0和pc都有着明确的含义:p0被称为观测精确性或一致性单元的比例;pc被称为偶然性一致或期望的偶然一致的单元的比例。kappa计算结果为-1~1,但通常kappa是落在 0~1 间,可分为五组来表示不同级别的一致性:0.0~0.20极低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~0.60 中等的一致性(moderate)、0.61~0.80 高度的一致性(substantial)和0.81~1几乎完全一致(almost perfect)。 

kappa指数计算的一个示例:

混淆矩阵

kappa在sklearn上的实现[sklearn.metrics.cohen_kappa_score]

多分类roc曲线

[多分类的ROC曲线]

皮皮blog

回归模型的评估

平均均方误差mse

R^2 (coefficient of determination)(推荐)

regression score function.评估模型拟合的好坏。训练集估计和学到的模型产生的新数据集评估的偏离度。sklearn中Regressor默认的score方法。

拟合优度(Goodness of Fit)是指回归直线对观测值的拟合程度。度量拟合优度的统计量是可决系数(亦称确定系数)R^2。R^2最大值为1。R^2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R^2的值越小,说明回归直线对观测值的拟合程度越差。

在用线性模型拟合完数据之后,我们需要评估模型拟合的好坏情况。当然,这种评估取决于我们想要用这个模型来做什么。一种评估模型的办法是计算模型的预测能力。

在一个预测模型中,我们要预测的值称为因变量(dependent variable),而用于预测的值称为解释变量或自变量(explanatory variable或independent variable)。

通过计算模型的确定系数(coefficient of determination),也即通常所说的R^2,来评价模型的预测能力:

即1 - 预测模型的mse/数据本身的mse (数据本身的mse就是直接将数据label均值作为预测的mse)

​​解释R2意义例子

假设你试图去猜测一群人的体重是多少,你知道这群人的平均体重是\bar{y}​。如果除此之外你对这些人一点儿都不了解,那么你最佳的策略是选择猜测他们所有人的体重都是\bar{y}​。这时,估计的均方误差就是这个群体的方差var(Y):

接下来,假如我告诉你这群人的身高信息,那么你就可以猜测体重大约为​,在这种情况下,估计的均方误差就为Var(ε):

所以,Var(ε)/Var(Y)表示的是有解释变量情况下的均方误差与没有解释变量情况下的均方误差的比值,也即不能被模型解释的均方误差占总的均方误差的比例。这样R2表示的就是能被模型解释的变异性的比例。

假如一个模型的R^2=0.64,那么我们就可以说这个模型解释了64%的变异性,或者可以更精确地说,这个模型使你预测的均方误差降低了64%。

在线性最小二乘模型中,我们可以证明确定系数和两个变量的皮尔逊相关系数存在一个非常简单的关系,即:R2=ρ2。

[拟合优度 ]

拟合优度Goodness of fit

预测评价指标RMSE、MSE、MAE、MAPE、SMAPE

MAE

平均绝对误差(Mean Absolute Error)

范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

MAPE

平均绝对百分比误差(Mean Absolute Percentage Error)

范围[0,+∞),MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型。

可以看到,MAPE跟MAE很像,就是多了个分母。

注意点:当真实值有数据等于0时,存在分母0除问题,该公式不可用!

[预测评价指标RMSE、MSE、MAE、MAPE、SMAPE_手撕机的博客-CSDN博客_mape rmse]

皮皮blog

其它

学习目标

{评价学习模型的不同方法}

不同的模型通过表达了不同的折中方案。近似模型根据一种性能度量可能表现很好,但根据其它度量又可能很差。为了引导学习算法的发展,必须定义学习任务的目标,并且定义能够评价不同结果 相应的度量方法。

密度估计

评价指标及方法

期望的对数似然

由于生成分布p*是固定的,评价指标——相对熵可以转换成最大期望的对数似然。直观上就是,M~对从真实分布中采样的点赋予的概率越大,越能反映它是该分布。

数据的似然

专栏:16.A 用于设计和评价机器学习过程的基本实验性条款

评价泛化性能

抵抗测试holdout-testing

Dtrain: 目标函数;Dtest: 损失函数。

k-折交叉验证

讨论及及算法

选择学习过程

使用抵抗测试或交叉验证来选择学习过程。更好的是使用训练集,用来学习模型;验证集,用来评价学习过程的不同变体并从中做出选择;分离的测试集,用来在其上评价最终的性能(会使分割数据的问题更加恶化)。也可以发展一种嵌套的交叉验证方案。

专栏:16.B 用来尝试并回答有关模型类合适复杂性问题的基本理论框架:PAC界

[《Probabilistic Graphical Models:Principles and Techniques》(简称PGM)]

from: 机器学习模型的评价指标和方法_-柚子皮-的博客-CSDN博客

ref: [Scikit-learn:模型评估Model evaluation ]

[Scikit-learn:模型评估Model evaluation 之绘图 ]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值