西瓜书阅读笔记 话不多说 开始吧~
模型评估与选择
评估
留出法(hold out)
将数据集划分为两个互斥集合/分层采样
dilemma:若训练集S包含绝大多数样本,则训练出的模型可能更接近用D训练出的模型,但由于T比较小,评估结果可能不够稳定准确;若T数目过多,则训练出的模型也不可靠。
交叉验证(cross validation)
D=D1∪D2∪……∪Dk Di∩Di=∅
做k次实验,k-1次用于训练 1个用于test,k次取平均。
自助法(bootstrapping)
We have:m个样本
We want:产生train dataset和test dataset
We do:每次从D中随机取一个放入D’(copy,初始为空集),再放回D,重复m次。样本在m次采样中始终不被采到的概率:(1-1/m)m
We get:D’=====>train dataset
D\D’=====> test dataset
这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、没在训练集中出现的样本用于测试。
性能度量
错误率和精度
对样例集D,分类错误率定义为
⨿(⋅) 是指示函数,若·为真则取1,否则取0
精度则定义为
准确率和召回率
分类结果混淆矩阵
准确率 Precision: P=TP/(TP+FP)
召回率 Recall: R=TP/(TP+FN)
正确率 Accuracy:Acc=(TP+TN)/(TP+FN+FP+TN)
很多情况下,我们可根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的是“最不可能”是正例的样本。按此顺序逐个把样本为正例进行预测,则可得一个Precision和Recall。以Precision为纵轴,Recall为横轴,得P-R曲线。P-R曲线被完全包围则学习性能不如别人。
一般不好判断,因为没有完全包围。可以用“平衡点”(Break-Even Point)来比较,它是Precision和Recall相等时候的点。
还可以用F1。为Precision和Recall的调和平均数。
偏置-方差分解(Bias-Variance Decomposition)
试图对学习算法的期望泛化错误率进行拆解
偏置 bias2(x)=(f¯(x)−y)2 度量了学习算法的期望预测与真实偏离程度
方差 var(x)=ED[(f(x;D)−f¯(x))2] 数据扰动带来的变化
噪声 ε
训练程度不高,则偏置大,数据扰动带来的影响小
训练程度高,数据扰动带来影响大, 偏置小