模型评估与选择

经验误差与过拟合

经验误差

“错误率”(error rate)
E = a / m E = a/m E=a/m
“精度”(accruacy)
A c c u r a c y = 1 − a / m Accuracy = 1-a/m Accuracy=1a/m
m : 样 本 数 ; a : 样 本 分 类 错 误 数 m:样本数;a:样本分类错误数 m:a:
更一般的,我们把学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalization error)。

过拟合

过拟合(overfitting)——当学习器学习的过于复杂,把训练集自身的特征当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能的下降。
与过拟合相对应的是欠拟合(underfitting),这是指对训练样本的一般性质尚未学好。
过拟合产生的原因:

  • 学习能力过于强大,把训练样本所包含的不太一般的特性学到了。

过拟合是无法彻底避免的,我们能做的是“缓解”,或者说减小风险。
关于这一点,可大致这样理解:机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获最优解,这就意味着我们构造性的证明了“P=NP”;因此,只要相信“P ≠ \ne ̸=NP”,过拟合就不可避免。

欠拟合产生的原因:

  • 欠拟合通过由于学习能力低下造成的。

评估方法

留出法

“留出法”(hold-out)直接将数据集 D D D划分为两个互斥的集合,其中一个集合作为训练集 S S S,另一个作为测试集 T T T,即 D = S ∪ T , S ∩ T = ∅ D = S \cup T, S \cap T = \varnothing D=ST,ST=。在 S S S上训练处模型后,用 T T T来评估其测试误差,作为对泛化误差的估计。

需要注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似。如果从采样(sampling)的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”(stratified sampling)。例如通过对 D D D进行分层采样而获得含70%样本的训练集 S S S和含30%样本的测试集 T T T,若 D D D包含500个正例、500个反例,则分层采样得到的 S S S应包含350个正例、350个反例,而 T T T则包含150个正例和150个反例;若 S 、 T S、T ST中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差。

单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平局值作为留出法的评估结果。例如进行100次随机划分,每次产生一个训练/测试集用于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的平均。

此外,我们希望评估是用 D D D训练出的模型的性能,但留出法需要划分出训练/测试集,这就会导致一个窘境:若令训练集 S S S包含绝大多数样本,则训练出的模型可能更接近于用 D D D训练出的模型,但由于 T T T比较小,评估结果可能不够稳定准确;若令测试集 T T T多包含一些样本,则训练集 S S S D D D差别更大了,被评估的模型与用 D D D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性(fidelity)。这个问题没有完美的解决方案,常见的做法是将大约2/3~4/5的样本用于训练,剩余的样本用于测试。

交叉验证法

“交叉验证法”(cross validation)先将数据集 D D D划分为 k k k个大小相似的互斥子集,即 D = D 1 ∪ D 2 ∪ … ∪ D k , D i ∩ D j = ∅ ( i ≠ j ) D = D_1 \cup D_2 \cup \ldots \cup D_k, D_i \cap D_j = \varnothing (i \neq j) D=D1D2Dk,DiDj=(i̸=j)。每个子集 D i D_i Di都尽可能保持数据分布的一致性,即从 D D D中通过分层采样得到。然后,每次用 k − 1 k-1 k1个子集的并集作为训练集,余下的那个子集作为测试集;这样就获得 k k k组训练/测试集,从而可以进行 k k k次训练和测试,最终返回的是这 k k k个测试结果的均值。显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k k k的取值,为强调这一点,通常把交叉验证法称为“ k k k折交叉验证”( k − f o l d k-fold kfold cross validation)。 k k k最常用的取值是10,此时称为10折交叉验证;其他常用的 k k k值有5、20等。

查准率与查全率

查准率 P P P
P = T P T P + F P P= \frac{TP}{TP+FP} P=TP+FPTP
查全率 R R R
R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP
注:
T P TP TP:真正例
F P FP FP:假正例
F N FN FN:假反例
T N TN TN:真反例

查准率与查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

F 1 F1 F1度量:
F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F1 = \frac{2 \times P \times R}{P + R} = \frac{2 \times TP}{样例总数+TP-TN} F1=P+R2×P×R=+TPTN2×TP

ROC和AUC

ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”。ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False Positive Rate,简称FPR),两者分别定义为
T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP
F P R = F P T N + F P FPR = \frac{FP}{TN+FP} FPR=TN+FPFP
AUC(Area Under ROC Curve),表示ROC曲线下各部分的面积。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值