10.模型评估

1. 数据集切割

  • 训练数据(Training Dataset),80%,可以做任何分析

  • 测试数据(Test Dataset),20%,不可做任何分析(当做未看过的数据)

分层抽样,一般测试数据集不用来做分析,假设是未知数据来对待,注:竞赛 != 数据分析。

1.1. 数据分割方式

  1. 随机从数据集中选取对应比例作训练数据(Yes/No的分布无法维持和母体数据集的比例)

  2. 更好的方式」从Yes中选取对应比例的训练数据,然后从No中选取对应比例的训练数据,合并到一起(比例依旧遵循母体比例)

最好采用分层随机抽样。

    训练集用来训练模型M,测试集用来测试M的效能,有些机器学习为了防止过拟合,会分离验证集,修正模型。Training: Test: Validation可选择比例:6:2:2——如决策树中CART算法必须要验证集。

1.2. 交叉验证

    Cross-Validation(CV),N折交叉,没有争议的验证方式,Fold(折)越多,评估越好,比较耗时。

    Leave-One-Out-Cross-Validation,最复杂的版本,最耗时。建立模型最好创建一个基模型,以作为比较的基准:

  • 分类问题:众数建模

  • 回归问题:均值或中位数建模

2. 分类模型评估

2.1. 混淆矩阵Confusion Matrix

  • 正确率——在所有样本中预测正确的样本比例,真的预测为真,假的预测为假。

  • 精确率(查准)——实际为真,分母为预测结果的总数,等价于:真实/预测(预测真总数)。

  • 召回率(查全)——实际为真,分母为实际结果的总数,等价于:真实/实际(实际真总数)。

    二者合并得到F1F_1的指标:

F1=2×Precision×RecallPrecision+RecallF_1 = 2 \times \frac{Precision \times Recall}{Precision + Recall}

    拓展,F-meansure

Fβ=(1+β2)×Precision×Recall(β2×Precision)+RecallF_{\beta} = (1 + \beta^2) \times \frac{Precision \times Recall}{(\beta^2 \times Precision) + Recall}

    β=1\beta=1表示F1F_1,如果β>1\beta > 1,您重视Recall,如果β<1\beta < 1,您重视Precision。

2.2. 多分类评估

  • Macro F1:将多个类的F1相加算平均(每个类同等重要)

  • Weighted F1:在Macro基础上加权(按每种类型的比例加权计算)

  • Micro F1:计算所有混淆矩阵

    计算:

3. 整体评估

    不要结果,而是要结果的概率值,且计算的是累积结果

  • 门槛值0.5

  • 门槛值0.375

注意混淆矩阵中数值的变化,门槛值对F1也会有影响。

3.1. K-S Statistics

    KS(Kolmogorov-Smirnov)值的计算:

(Cumulative1Cumulative0)×100(Cumulative_1 - Cumulative_0) \times 100

    最佳值会到100分,最差会是0分,KS参考值:

KS值
含义

小于20

模型无鉴别能力

20 ~ 40

模型勉强接受

41 ~ 50

模型有好的区别能力

51 ~ 60

模型有很好的区别能力

61 ~ 75

(罕见)模型有非常好的区别能力

大于75

模型异常,可能有问题

Profit的计算(略)

3.2. ROC图

    ROC图如下(蓝色线就是ROC):

  • X轴:累积0的百分比

  • Y轴:累积1的百分比

ROC图围出来的面积 > 0.5,面积越大模型越稳健。

    AUC(Area Under the Curve)值([0.5, 1]):

  • 0.5 < AUC < 0.6:弱模型

  • 0.7 < AUC:更稳健模型

3.3. Gini Coefficient

    Gini的做法刚好和ROC颠倒:

  • X轴:累积1的百分比

  • Y轴:累积0的百分比

    相互计算公式如下:

  • ROC Index = AUC

  • ROC Index = A + 0.5

  • Gini Coefficient = A / (A + B) = 2A = 2 * (ROC Index - 0.5)

  • Gini = 2 * AUC - 1

3.4. 评分标准

Gini系数
K-S值
AUC值
模型优劣程度

0

<20%

=50%

无区别能力

0 ~ 40%

20% ~ 30%

50% ~ 70%

模型区别能力极差

40% ~ 60%

30% ~ 50%

70% ~ 80%

可接受的区别能力

60% ~ 80%

50% ~ 75%

80% ~ 90%

非常好的区别能力

80% ~ 100%

> 75%

90% ~ 100%

可能模型适配过度

3.5. Response Chart

  • x轴是人数百分比

  • y轴是1的Precision的累积

3.6. Gain Chart

  • x轴是人数百分比

  • y轴是1的Recall的累积

3.7. Lift Chart

    比较次要的一个图

计算方法是使用:Cumulative for 1 / Random,模型比随机乱猜的倍数处理。

4. 回归模型评估

  • MAE, Mean Absolute Error(无区间)

    MAE=1ni=1nyiyi^MAE = \frac{1}{n}\sum_{i=1}^n|y_i - \hat{y_i}|

  • MSE, Mean Squared Error(无区间,惩罚误差比较大的模型)

    MSE=1ni=1n(yiyi^)2MSE = \frac{1}{n}\sum_{i=1}^n(y_i - \hat{y_i})^2

  • RMSE, Root Mean Squared Error

    RMSE=MSERMSE = \sqrt{MSE}

  • R2R^2, Adjusted R2R^2(范围一定是[0,1],越靠近1越好)

前三个是IT的人会常用的三个指标,通常做数据分析用R2R^2更多。

4.1. R Squared计算

  1. SST:目标字段的总变异,Total Sum of Squares

    SST=i=1n(yiyˉ)2SST = \sum_{i=1}^n(y_i - \bar{y})^2

  2. SSR:目标字段的可解释变异,Sum of Squares due to Regression

    SSR=i=1n(yi^yˉ)2SSR = \sum_{i=1}^n(\hat{y_i} - \bar{y})^2

  3. SSE:目标字段的不可解释变异,Sum of Squares due to Error

    SSE=i=1n(yiyi^)2SSE = \sum_{i=1}^n(y_i - \hat{y_i})^2

  4. SST = SSR + SSE

  5. R2=SSRSST=1SSESST,0r21R^2 = \frac{SSR}{SST} = 1 - \frac{SSE}{SST}, 0 \le r^2 \le 1

    AdjustedR2Adjusted R^2

  • 调整的R2R^2越大越好

    • 由于增加新的输入字段后,R2R^2会变大,会有高估模型效能的倾向,因此调整后的R2R^2作为评估方式更加理想。

    • AdjustedR2=1((1R2)×N1NP1)Adjusted R^2 = 1 - ((1 - R^2) \times \frac{N - 1}{N - P - 1})

      • N:样本数

      • P:输入字段个数

  • AIC(Akaike Information Criterion):越小越好

  • BIC(Bayesian Information Criterion):越小越好

最后更新于

这有帮助吗?