机器学习——评估方法

留出法

将数据集 D 拆分为 训练集 S 和测试集 T

正常来说会保留 70% 用作训练,30% 用作测试。采样时采用分层采样(stratified sampling)的方法,即根据样本标签将数据进行分类之后按照对应比例抽取样本

一般来说会重复上述抽取训练测试的步骤 n 次,取最后的平均值当作模型的结果

缺点:取样随机性导致评估结果与模型最终的结果偏差可能会很大

交叉验证法

将数据集 D 拆分成 k 个相似并且互斥的子集,每个子集均通过分层采样得到。称之为 k 折交叉验证

保留其中一份作为测试集,剩余作为训练集。最后返回 k 次的平均值

一般会重复上述操作 n 次,称之为 n 次 k 折交叉验证。最后取这 n 次的均值作为模型的结果

特殊的交叉验证方法:留一法(Leave-One-Out, LOO)

假设数据集 D 中包含一共包含 n 个样本,留一法指的就是将 D 拆成 n 个子集,并继续进行交叉验证的剩余步骤。

优点:评估结果与最终的模型训练结果相似,较准确。

缺点:数据集大时,计算量大

自助法(Bootstrapping)

对有 n 个样本的数据集 D 进行有放回的抽取 n 次,得到新的数据集 D‘

得到的 D’ 中有重复数据,且 D 中不仅包含 D‘ 中所有数据,还存在未出现的数据。可以计算一个样本在 n 次采样过程中不被选取的概率为:, 可以看到有大约36%的数据是不会被选入的。

此时将 D’ 作为训练集进行训练,D\D' 作为测试集(“\” 表示集合减法)。得到的测试结果称为包外估计(out-of-bag estimate)

该方法产生的数据集改变了原始数据集的分布,可能造成估计偏差。此方法适合于数据集较小、难以划分训练集和测试集时,例如应用于集成学习。在数据量充足的时候,应该选用留出法和交叉验证法。

你可能感兴趣的:(机器学习——评估方法)