Statistics 交叉验证的目的是什么?

Statistics 交叉验证的目的是什么?,statistics,classification,cross-validation,naivebayes,Statistics,Classification,Cross Validation,Naivebayes,我现在正在读一本关于机器学习的书 在使用NaiveBayesClassifier时,作者非常支持交叉验证方法 他建议将数据分为十个存储桶(文件),并在每次保留不同存储桶时对其中九个进行训练 到目前为止,我所熟悉的唯一方法是以50%/50%的比例将数据分割为训练集和测试集,并简单地一次性训练分类器 有人能解释一下使用交叉验证的可能优势吗?交叉验证是一种解决偏差和差异之间权衡的方法 当您在训练集中获得模型时,您的目标是最小化方差。您可以通过添加更多项、高阶多项式等来实现这一点 但你真正的目标是预测你

我现在正在读一本关于机器学习的书

在使用
NaiveBayesClassifier
时,作者非常支持交叉验证方法

他建议将数据分为十个存储桶(文件),并在每次保留不同存储桶时对其中九个进行训练

到目前为止,我所熟悉的唯一方法是以50%/50%的比例将数据分割为训练集和测试集,并简单地一次性训练分类器


有人能解释一下使用交叉验证的可能优势吗?

交叉验证是一种解决偏差和差异之间权衡的方法

当您在训练集中获得模型时,您的目标是最小化方差。您可以通过添加更多项、高阶多项式等来实现这一点

但你真正的目标是预测你的模型从未见过的点的结果。这就是测试集所模拟的

您将在训练集上创建模型,然后在测试集上进行尝试。你会发现有一个最小的方差和偏差组合,将给你最好的结果。将两者最小化的最简单模型应该是您的选择


我推荐Hastine和Tibshirani的“统计学习入门”或“统计学习要素”了解更多细节。

交叉验证是解决偏差和方差之间权衡的一种方法

当您在训练集中获得模型时,您的目标是最小化方差。您可以通过添加更多项、高阶多项式等来实现这一点

但你真正的目标是预测你的模型从未见过的点的结果。这就是测试集所模拟的

您将在训练集上创建模型,然后在测试集上进行尝试。你会发现有一个最小的方差和偏差组合,将给你最好的结果。将两者最小化的最简单模型应该是您的选择


我推荐Hastine和Tibshirani的“统计学习入门”或“统计学习元素”,以了解更多细节。

机器学习的总体目标是,训练数据越多,效果越好。在我开始回答问题之前,这一点很重要

交叉验证有助于我们避免模型的过度拟合,也有助于提高泛化精度,即模型在未知未来点的精度。现在,当您将数据集划分为dtrain和dtest时,有一个问题是,如果一旦您训练了模型,就要确定的函数需要训练和测试数据,那么您不能说您在未来不可见点上的精度与您在测试数据上获得的精度相同。可以以k-nn为例说明上述论点,其中最近邻是通过训练数据确定的,而k的值是通过测试数据确定的

但是如果你使用CV,那么k可以由CV数据确定,你的测试数据可以被认为是看不见的数据点

现在假设您将数据集分为3部分:Dtrain(60%)、Dcv(20%)和Dtest(20%)。现在您只有60%的数据可供训练。现在假设您想使用所有80%的数据进行训练,那么您可以借助m-fold交叉验证来完成这项工作。在m-fold CV中,您将数据分为两部分Dtrain和Dtest(假设为80和20)。 假设m的值为4,那么您可以将训练数据随机分成4个相等的部分(d1、d2、d3、d4)。现在开始训练模型,将d1、d2、d3作为dtrain,将d4作为cv,并计算精度。下一步,将d2、d3、d4作为dtrain,将d1作为cv,同样对m=1采取所有可能的措施,然后对m=2继续同样的程序。这样,您就可以使用全部80%的数据集,而您的数据测试可以被视为未来看不见的数据集

这样做的好处是更好地和更多地使用数据训练数据,减少过度拟合,并有助于确保泛化精度。 但不利的一面是时间复杂度很高。 在你的例子中,m的值是10


希望这能有所帮助。

机器学习的一般目标是,训练数据越多,效果越好。在我开始回答问题之前,这一点很重要

交叉验证有助于我们避免模型的过度拟合,也有助于提高泛化精度,即模型在未知未来点的精度。现在,当您将数据集划分为dtrain和dtest时,有一个问题是,如果一旦您训练了模型,就要确定的函数需要训练和测试数据,那么您不能说您在未来不可见点上的精度与您在测试数据上获得的精度相同。可以以k-nn为例说明上述论点,其中最近邻是通过训练数据确定的,而k的值是通过测试数据确定的

但是如果你使用CV,那么k可以由CV数据确定,你的测试数据可以被认为是看不见的数据点

现在假设您将数据集分为3部分:Dtrain(60%)、Dcv(20%)和Dtest(20%)。现在您只有60%的数据可供训练。现在假设您想使用所有80%的数据进行训练,那么您可以借助m-fold交叉验证来完成这项工作。在m-fold CV中,您将数据分为两部分Dtrain和Dtest(假设为80和20)。 假设m的值为4,那么您可以将训练数据随机分成4个相等的部分(d1、d2、d3、d4)。现在开始训练模型,将d1、d2、d3作为dtrain,将d4作为cv,并计算精度。下一步,将d2、d3、d4作为dtrain,将d1作为cv,同样对m=1采取所有可能的措施,然后对m=2继续同样的程序。这样,您就可以使用全部80%的dtrain和dtest