恰西瓜 [ 1 ] 模型评估与选择方法

吃西瓜 [ 1 ] 模型评估与选择方法

1.1 经验误差与过拟合

  • 错误率 error rate : 分类错误的样本数 a 占样本总数 m 的比例\(E=\frac{a}{m}\),相应的 “\(精度=1-E\)

学习器的预测输出与样本的真实输出之间的差异称为”误差“,在训练集上的误差称为”训练误差“,而在新样本上的误差称为”泛化误差(generalization error)”,我们实际希望的,是在新样本上能表现得很好的学习器,为了达到这个目的我们需要从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,而当学习能力过强时,很有可能把训练样本自身的一些特点当作所有潜在样本都会具有的一般性质,这样会使泛化性能下降,这种现象称为“过拟合(overfitting)”。

过拟合是机器学习面临的关键障碍,各类算法必然带有一些针对过拟合现象的措施,然而必须意识到,过拟合无法彻底避免,我们只能减小其风险。

模型选择问题的理想解决方案是对候选模型的泛化误差进行评估,选择泛化误差最小的那个模型,那么我们在现实中该如何进行模型评估和选择呢?

1.2 评估方法

通常我们可以通过实验测试,来对学习器的泛化误差进行评估,并进而做出选择,因此我们需要一个“测试集(testing set)“来测试学习器对新样本的判别能力,然后以测试集上的”测试误差{testing error)“作为泛化误差的近似。我们假设测试样本也是从样本真实分布中独立同分布采样而得。

需要注意的是,测试集应尽可能与训练集互斥,即测试样本尽量不在测试集中出现、未在训练过程中使用过。

对于一个包含 m 个样例的数据集\(D={(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)}\),通过对 D 进行适当的处理,从中产生训练集 S 和测试集 T 。下面是几种常见做法

1.2.1 留出法 hold-out

将数据集 D 划分为两个互斥的集合,即\(D=S\bigcup T,S\bigcap T=\empty\),需要注意的是,测试、训练集的划分要尽可能保持数据分布的一致性,避免由于数据划分引入额外的偏差。(训练集一般 2/3 ~ 4/5)。

1.2.2 交叉验证法 cross validation

先将数据集 D 划分为 k 个大小相似的互斥子集,即 \(D=D_1\bigcup D_2\bigcup\dots\bigcup D_k,D_i\bigcap D_j=\empty(i\neq j)\)每个子集\(D_i\)都尽可能保持数据分布的一致性,即从D 中通过分层采样得到,然后每次用 \(k-1\) 个子集的并集作为训练集,余下的那个子集作为测试集。

这种方法可以获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值,显然,交叉验证法评估结果的稳定性和包振兴在很大程度上取决于 k 的取值,故我们通常把这种方法叫做” k折交叉验证“

k最常用的取值为 10,当 k = m 时,被称为 ” 留 1 法(leave-one-out ,LOO)“

1.2.3 自助法 boostrapping

使用留出发和交叉验证法会导致实际评估的模型所使用的训练集比 D 校,这必然会引入一些因训练样本规模不同而导致的估计偏差,而留一法计算成本又太高了,两种方法的优点共存便是自助法。

给定包含 m 个样本的数据集 D ,我们对他进行采样产生数据集 D': 每次随机从 D 中挑选一个样本,将其拷贝到 D' ,然后再将该样本放回初始数据集 D 中,使得样本在下次采样时仍有可能杯采到; 此过程重复 m 次后,我们就得到了包含 m 个样本的数据集 D' 。
\[ 样本在m次采样中始终不被采到的概率的极限为:\\ lim_{m\rarr\infty}(1-\frac{1}{m})^m=\frac{1}{e}\approx0.368 \]
即通过自助采样方法,初始数据集中约有 36.8%的样本从未出现在采样数据集 D' 中,于是将其用作训练集,D\D' 用作测试集,这样实际评估的模型与期望评估的模型都使用 m 个训练样本。

自助法在数据集较小,难以有效划分训练测试集时很有用,然而自助法产生的数据集改变了初始数据集的分布,会引入估计误差,因此,在数据量足够的时候,多用留出发和交叉验证法。

1.3 性能度量 performance measure

什么样的模型是好的,不仅仅取决于算法和数据,还决定与任务需求。

  • 在预测任务中,给定样例集\(D={(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)}\),其中\(y_i\)是示例\(x_i\)的真实标记,要评估学习器 f 的性能,就要把学习器预测结果\(f(x)与真实标记 y\)进行比较;
  • 回归任务中,最常用的性能度量是"均方误差"(mean squared error)

\[ E(f;D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2\tag{3.1} \]

更一般的,对于数据分布 \(D\)和概率密度函数\(p(.)\),均方误差可描述为:
\[ E(f;D)=\int_{x\sim D}(p(x)-y)^2p(x)dx\tag{3.2} \]

1.3.1 错误率与精度

错误率和精度是分类任务重最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务,对样例集 D,分类错误率定义为:
\[ E(f;D)=\frac{1}{m}\sum_{i=1}^{m}I(f(x_i)\neq y_i)\tag{3.3}\\ 若\ f(x_i)\neq y_i,则指示函数 \ I(f(x_i)\neq y_i)=1 \]
精度定义为:
\[ acc(f;D)=\frac{1}{m}\sum_{i=1}^{m}I(f(x_i)=y_i)=1-E(f;D)\tag{3.4} \]

1.3.2 查准率,查全率与 F1

对于二分类问题,可将样例根据其真实类别、与学习器预测类别的组合划分为:真正例,假正例,真反例,假反例,分别对应着\[TP+FP+TN+FN=样例总数\],分类问题的混淆矩阵如下:

真实情况 预测结果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) FN(真反例)

查准率P,与查全率 R 分别定义为:
\[ 查准率 \ P=\frac{TP}{TP+FP}\ 预测正确的结果中实际上有多少正确\\ 查全率\ R=\frac{TP}{TP+FN}\ 所有正例中有多少被成功预测 \]

1.4 比较检验

1.5 偏差与方差

猜你喜欢

转载自www.cnblogs.com/rrrrraulista/p/12242204.html