西瓜书阅读笔记(机器学习周志华)D2 交叉验证法和自助法

交叉验证法通过将数据集分为k个子集进行k次训练和测试,得到平均结果作为评估。留一法是其特例,适用于小数据集但计算成本高。自助法通过有放回抽样生成新的数据集,用于测试,适合数据集小且需要多次评估的场景。然而,自助法改变了原始分布,可能导致估计偏差。在大数据集情况下,留出法和交叉验证法更为常见,尤其在现代数据爆炸的背景下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

交叉验证法

交叉验证法先把数据集 D D D划分成 k k k个大小相似的互斥子集 D = D 1 ∪ D 2 ∪ . . . . ∪ D k D=D_1\cup D_2\cup ....\cup D_k D=D1D2....Dk每个子集 D i D_i Di都尽量保证数据分布的一致性,所以我们从 D D D中进行分层采样,这样可以尽量保证所有自己数据分布一致。在使用的过程中,我们每次选择 k k k个子集中的 k − 1 k-1 k1个子集作为训练集,剩下的那个作为测试集。每个子集轮流当测试集,这样经过 k k k次训练,就能得到 k k k个结果。然后我们对这 k k k个结果取均值,就得到了最终的模型评估结果。
交叉验证法的效果由于非常依赖 k k k值的选取,所以我们又把交叉验证法叫做 k k k折交叉验证( k k k-fold cross validation),来强调 k k k的重要性。
当然,所有的评估方法都希望减少因样本划分不同而引起的差别,所以, k k k折交叉验证一般会随机划分 p p p次,然后用这几次的均值来作为交叉验证法的结果。

交叉验证法的特例——留一法

当交叉验证集的子集个数 k k k等于样本个数的时候,大家可以发现,此时每一个子集只有一个样本。那么很明显,每个子集一个样本,根本不受随机样本划分的影响。但所以我们认为留一法的评估结果是比较准确的。但是样本量较大的时候,留一法的开销就不够经济了。

自助法

由于留出法和交叉验证法只用了一部分样本用于测试,所以必然会因为样本规模不同而导致估计偏差。但是留一法的计算开销太大了,所以学者提出了“自助法”,一个一自主采样法(bootstrap sampling)为基础的方法。
给定包含 m m m个样本的数据集 D D D,我们对他进行采样生成数据集 D ′ D' D“每次速记从 D D D中选一个样本,将其放入 D ′ D' D,然后再把这个样本放回 D D D中,这样的话这个样本可能会被重复选择。这就是自助采样。所以我们做一个简单的估算,样本在 m m m次采样中一次都不被选中的概率是 ( 1 − 1 m ) m \left(1-\frac{1}{m}\right)^m (1m1)m,当 m m m趋近于 ∞ \infin 的时候,概率就趋近于 1 e \frac{1}{e} e1。所以,自助采样的时候,大约有36.8%的样本不会被采样到,所以这些剩下的样本我们将他们当作测试集。
这样有一个特点,就是测试集和训练集的样本数量是一样的,但是有接近1/3的样本不一样。我们把这样的测试结果称为“外包估计”。(out-of-bag estimate)
自助法在数据集较小,难以有效划分训练集和测试集的时候非常好用。而且自助法能产生多个不同的训练集,这对集成学习等方法很友好。但是自助法改变了原始数据集的分布,使得估计有偏差。
可见,没有免费的午餐定理在模型评估方法中依然适用

总结

评估方法总结:在数据集非常小的时候,留一法是最有效的。当数据量比较大的时候,留一法算法复杂度太高的时候,自助法很好用。当数据量非常庞大的时候,自助法改变了原有数据的分布,留一法开销不可承受,此时留出法和交叉验证法就派上用场了。但是以当今数据爆炸的情况来看,留出法和交叉验证法更加常用。

### 关于周志华机器学习》(西瓜)第二章的学习笔记 #### 模型评估与选择概述 模型评估与选择是机器学习领域的重要组成部分,旨在通过合理的方评价不同模型的表现并挑选最优者。这一过程不仅涉及如何衡量单个模型的好坏,还包括怎样对比多个候选方案以做出最佳决策。 #### 偏差、方差噪声的概念解析 偏差度量了学习算的期望预测与实际结果之间的差距,反映了算自身的拟合精度;方差描述的是相同规模训练集变化引起的学习效果波动情况,体现了数据扰动带来的影响;而噪声则设定了给定任务下所有可能采用的学习方能达到的最佳预期泛化误差界限,揭示了问题本身固有的复杂性挑战性[^2]。 #### 性能度量指标——P-R图及其应用 为了更直观地展示各类分类器的工作特性,通常会绘制精确率-召回率(Precision-Recall, P-R)曲线来辅助分析。当面对多组实验结果时,可以通过观察这些图形相互间的位置关系来进行优劣评判:如果某条曲线始终位于另一条之上,则表明前者具有更好的整体表现;而对于那些存在交点的情况,则需进一步计算各自下方区域面积大小作为判断依据之一。此外,“平衡点”作为一种特殊的性能测度,在特定条件下也能提供有价值的参考信息[^3]。 #### 偏差-方差分解理论简介 该理论为理解学习算的一般化能力提供了框架性的指导思路,通过对平均测试错误率实施拆分操作,可以深入剖析导致过拟合现象背后的原因所在,并据此探索改进措施的方向。具体而言,总误差由三部分构成——不可约减误差点(即噪声)、平方形式表达出来的偏差项以及线性累加而成的方差成分[^4]。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import precision_recall_curve, auc def evaluate_model_performance(model, X, y): """ 计算并返回PR曲线下面积(AUC),用于量化模型的整体性能。 参数: model (object): 已经训练好的分类模型实例。 X (array-like of shape (n_samples, n_features)): 测试特征矩阵。 y (array-like of shape (n_samples,)): 对应的真实标签向量。 返回: float: PR AUC得分。 """ # 划分训练集/验证集 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) # 使用训练集拟合模型 model.fit(X_train, y_train) # 获取验证集中各观测对应的概率估计值 probas_pred = model.predict_proba(X_val)[:, 1] # 绘制PR曲线并求得AUC分数 precisions, recalls, _ = precision_recall_curve(y_val, probas_pred) pr_auc_score = auc(recalls, precisions) return pr_auc_score ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值