二、模型评估和选择
错误率:分类错误的样本数占样本总数的比例 E=a/m;相应的1-a/m称为精度
误差:学习器的实际预测输出与样本的真实输出之间的差异。在训练集上的误差称为“训练误差”,在新样本上的是“泛化误差”
过拟合:把训练样本上某些自身的特点也当作了所有潜在样本的一般性质。相反,成为“欠拟合”。这是无法避免的,只能缓解。
评估方法:
测试集:也是从样本真实分布中独立同分布采样而得的,测试集应尽量与训练集互斥
假设只有训练集D = {(x1,y1),(x2,y2),...(xm,ym)},有以下方法处理D生成训练集S和测试集T
1.留出法(hold-out)
直接将D划分为两个互斥的集合。
import random
sampling = [(1,2),(4,3),(2,3)]
def hold_out(sampling):
"""
留出法
"""
S = random.sample(sampling, 1)
T = random.sample(sampling, 1)
return S, T
这个要尽量保持数据的一致性,避免划分过程中引入额外的偏差。
一般要采用若干次随机划分,重复进行实验评估取平均值做留出法的评估结果
2.交叉验证法(cross validation)
将训练集划分为k个大小相似的互斥子集,每个子集尽量保持数据分布的一致性,每次取k-1个子集的并集做训练集,余下的那个做测试集,进行k次训练,返回这k次结果的均值,
3.自助法(bootstrapping)
给定m个样本的数据集D,对其采样产生数据集D':每次随机从D中选取一个样本,将其拷贝放入D',然后再将其样本放回初始数据集D中,使得该样本在下次去数据还能够
取得到。重复m次后,就得到包含m个样本的数据集D'。
这个适用于数据集较少,难以划分训练/测试集时有效。
性能度量
均方误差:
学习器的预测结果f(x),和真实标记y
E(f;D) = 1\m((f(x1)-y)^2 + (f(x2)-y)^2 + ... + (f(xm)-y)^2)
错误率和精度
查准率和查全率
真实情况 预测结果
正例 反例
正例 TP FN
反例 FP TN
查准率P = TP/(TP + FP)
查全率R = TP/(TP + FN)
这是一组矛盾的度量
P-R图
查准率 = 查全率的一点,平衡点
F1度量 = (2 *P*R)/(P+R)
研究学习器在不同任务下的“期望泛化性能”的好坏
ROC图的,纵轴是“真正例率”,横轴是“假正例率”
真正例率 TPR = TP/(TP + FN)
假正例率 FPR = FP/(TN + FP)
判断ROC曲线下面的面积的是AUC图
为衡量不同类型错误造成的不同损失,赋予了“非均等代价”
也就是说,不能将错误一视同仁
偏差与方差
泛化误差可分为偏差,方差与噪声之和
偏差:学习算法的期望预测与真实结果的偏离程度,即算法的拟合能力
方差:同样大小的训练集的变动所导致学习性能的变化,即数据扰动所造成的影响
噪声:在当前任务下,任何算法所能达到的期望方差的下届,即学习问题本身的难度。