2.评估方法
文章图片
不同的参数配置?不同的模型?选择泛化误差最小、泛化性能最强的模型。
训练集(training set):训练模型
验证集(validation set):选择模型和调参
测试集(test set):评估模型
1)留出法
"留出法"直接将数据集 D 划分为两个互斥的集合?其中一个集合作为训练集 S,另一个作为测试集 T, 即$S \cup T=D $ , S∩T=? S \cap T=\oslashS∩T=?。在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计。
训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。例如,在分类任务中至少要保持样本的类别比例相似。基于该情况考虑的采样方式称为“分层采样”。
留出法的划分问题被称为划分窘境,接下来我们就来谈谈如何减轻划分窘境所产生的负面影响。
【分割规则】:如何分割数据集取决于数据集的规模:通常会将 67% 的数据作为训练集,将 33% 的数据作为评估数据集。
《机器学习》中指出“一般而言,测试集至少应含 30 个样例”。
吴恩达老师的深度学习课程中也提到在传统机器学习中训练集和测试集的划分问题,他认为原始数据集应分为三部分,训练集、验证集和测试集,并按 6:2:2 的比例进行划分。
综上考虑,若数据集规模较小,我们应该要满足测试集至少应含 30 个样例。若数据集规模较大,则 60%~80% 作为训练集都是可以的。
【使用场合】:通常在具有大量数据且数据分布比较平衡,或者对问题的展示比较平均的情况下非常有效。该非常简洁、快速,对某些执行比较慢的算法非常有效。
2)交叉验证法
(1)先将数据集 D 划分为 k 个大小相似的互斥子集, 每个子集 Di 都尽可能保持数据分布的一致性,即从 D 中 通过分层采样得到。
(2)每次用k-1 个子集的并集作为训练集,剩下那个子集作为测试集
这样就可获得 k组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值。
文章图片
黄金准则】:
K 折交叉验证是用来评估机器学习算法的黄金准则。通常会取 K 为 3、5、10 来分离数据,只有在原始数据集和数据量很小时,才会尝试取 2。
当不知道如何选择分离数据集的方法时,请选择 K 折交叉验证来分离数据集;当不知道如何设定 K 值时,请将 K 值设为 10。
3)留一法
留一法(Leave-One-Out,简称 LOO),假定数据集 D 中包含 m 个样本,若令 k = m,则得到交叉验证法的一个特例,即留一法,又被称为“弃一交叉验证”。
【优点】:
不受随机样本划分方式的影响,因为 m 个样本只有唯一的方式划分为 m 个子集——每个子集包含一个样本。
由于留一法使用的训练集与原始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法评估结果往往被认为比较准确。
【缺陷】:
数据集较大时,训练 m 个模型的计算开销太大。
留一法的估计结果也未必永远比其他评估方法准确,没有免费的午餐定理对实验评估方法同样适用。
4)自助法
自助法(bootstraping)直接以自助采样法(bootstrap sampling)为基础。给定包含 m 个样本的数据集 D,对其进行采样产生数据集 D’:
每次随机从 D 中挑选一个样本,将其拷贝放入 D’;
然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到,其实就是有放回地采样;
该过程重复执行 m 次后,就得到包含 m 个样本的数据集 D’。
【特点】:原始数据集 D 中有一部分样本会在 D’ 中多次出现,而另一部分样本不出现。假设,样本在 m 次采样中始终不被采到的概率是
文章图片
即通过自助采样,原始数据集 D 中约有 36.8% 的样本未出现在采样数据集 D’ 中。于是可将 D’ 用作训练集,余下的数据用作测试集。这样,实际评估的模型与期望评估的模型都使用 m 个训练样本,而我们仍有数据总量约 1 / 3 的、没在训练集中出现的样本用于测试。这样的测试结果,亦称“包外估计”(out-of-bag estimate)。
调参(parameter tuning):大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别。
学习算法的很多参数是在实数范围内取值,因此,对每种参数取值都训练出模型来是不可行的。常用的做法是:对每个参数选定一个范围和步长λ,这样使得学习的过程变得可行。
参考文献:
1.周志华《机器学习》
2.李航《统计学习方法》
3.https://blog.csdn.net/dagongsmallguy/article/details/84714227
【机器学习笔记之二(2.2)】4.https://blog.csdn.net/baidu_27643275/article/details/81589692
推荐阅读
- 微软相关|C#的架构、框架、设计模式
- 学习笔记|MySQL-多表查询-联合查询/子查询
- 学习笔记|MySQL-DQL-条件查询/聚合函数/分组查询/排序查询/分页查询
- 学习笔记|MySQL-约束
- 学习笔记|深度学习学习笔记——RNN(LSTM、GRU、双向RNN)
- 学习笔记|机器学习入门-西瓜书总结笔记第七章
- 努力学习人工智能|基于图像识别的跌倒检测
- 学习笔记|这样的商城系统,真招人稀罕!
- 技术文章|早期肺结核检测