交叉验证对于数据科学家来说是一个非常宝贵的工具。
这有助于建立更精确的模型机器学习模型和评估它们在独立测试数据集上的工作情况。
交叉验证易于理解和实施,是比较不同模型的预测能力(或技能)并选择最佳模型的一种常用方法。当可用数据量有限时,这是一种很好的方法,可以检查预测模型在实践中的工作情况。
交叉验证用于保护模型免受过度拟合,特别是在可用数据量有限的情况下。它也被称为旋转估计或样本外测试,主要用于模型的目标是预测的设置。
你知道吗?如果它在培训数据模拟培训数据中,模型被视为“超收性”,因此它对新数据的性能产生负面影响。
这种重新采样过程也被用来比较不同的机器学习模型,并确定它们在解决特定问题时的工作效果。换句话说,交叉验证是一种用来评估机器学习模型技能的方法。
简单地说,在交叉验证过程中,原始数据样本被随机划分为若干子集。机器学习模型在所有子集上训练,只有一个子集除外。训练后,通过对剩余子集进行预测来测试模型。
在许多情况下,使用不同的子集进行多轮交叉验证,并对结果进行平均,以确定哪个模型是好的预测器。
在可用数据量有限的情况下,交叉验证至关重要。
假设你需要预测自行车轮胎被扎破的可能性。为此,你已经收集了现有轮胎的数据:轮胎的年龄,行驶的里程,车手的体重,以及之前是否被扎破。
要创建一个预测模型,您将使用这个(历史)数据。你需要对这些数据做两件事火车该算法和测试模型。
你知道吗?在机器学习中,算法和模型是不同的。模型是通过机器学习算法学习的。
由于您只有有限数量的数据,因此使用训练算法的所有数据将是天真的。如果您这样做,您将没有剩余的任何数据来测试或评估模型。
重用训练集作为测试集并不是一个好主意,因为我们需要评估模型在没有训练过的数据上的准确性。这是因为培训背后的主要目标是让模型能够处理真实世界的数据。你的训练数据集不可能包含模型可能遇到的所有数据点。
更好的方法是使用数据的前75%(三个块)作为训练数据集最后25%(一个街区)作为测试数据集. 这将允许您比较不同算法对测试数据进行分类的程度。
但是,当然,如何知道使用前75%的数据作为训练集,其余25%作为测试集是最好的方法呢?
相反,您可以使用前25%的数据进行测试;或者,您可以使用数据的第三块作为测试数据集,其余的作为训练数据集。
提示:使用机器学习软件自动执行任务并进行准确的预测。
因此,一种类型的交叉验证被称为k-fold交叉验证使用数据集的所有(四)部分作为测试数据,一次一个,然后总结结果。
例如,交叉验证将使用数据的前三个块来训练算法,并使用最后一个块来测试模型。然后记录模型使用测试数据的表现。
在记录性能或准确性后,它将使用数据的第1、2和4块进行训练,第3块进行测试。该过程将继续进行,直到所有块都作为测试数据使用一次。计算所有结果的平均值来评价模型的性能。
在上面的示例中,数据被划分为四个块。因此,这种交叉验证被称为4倍交叉验证. 如果把它分为十个街区,它将是10倍交叉验证.
简言之,交叉验证对于模型选择非常有用,并且可以轻松地检查模型对新数据的概括程度。
换句话说,它有助于确定模型的预测误差。它也被用来比较不同的机器学习方法的性能或准确性,比如支持向量机(SVM),再(资讯),线性回归或逻辑回归。
以下是数据科学家喜欢交叉验证的更多原因:
交叉验证还用于调优普遍存在通过一种技术的机器学习模型随机网格搜索交叉验证.
交叉验证方法大致可分为两类:详尽的和不完方法。
顾名思义,详尽的交叉验证方法努力测试所有可能的方法,将原始数据样本划分为培训和测试集。另一方面,非详尽的方法不会将原始数据分区的所有方式进行培训和评估集。
以下是五种常见的交叉验证类型。
的坚持的方法是一种基本的交叉验证方法,该方法将原始数据集分为训练数据和测试数据两部分。这是一种非详尽的方法,正如预期的那样,模型在训练数据集上训练,并在测试数据集上评估。
在大多数情况下,训练数据集的大小是测试数据集的两倍,这意味着原始数据集以80:20或70:30的比例分割。此外,在将数据划分为训练集和验证集之前,数据会被随机打乱。
然而,这种交叉验证方法也有一些缺点。由于模型是在不同的数据点组合上训练的,所以每次训练它都会显示不同的结果。此外,我们永远不能完全确定所选择的训练数据集代表整个数据集。
如果原始数据样本不是太大,那么也有可能测试数据包含一些关键信息,而模型将无法识别这些信息,因为训练数据中没有包含这些信息。
然而,如果您急于训练和测试模型,并且拥有大量数据集,那么坚持交叉验证技术是理想的。
的k-fold交叉验证方法是保持方法的改进版本。它使模型的得分更加一致,因为它不取决于我们如何选择训练和测试数据集。
它是一种非详尽的交叉验证方法,顾名思义,数据集被分成k次的分割,而holdout方法执行了k次。
例如,如果k的值等于2,则将有两个大小相同的子集。在第一次迭代中,模型在一个子样本上进行训练,并在另一个子样本上进行验证。在第二次迭代中,模型在上一次迭代中用于验证的子集上进行训练,并在另一个子集上进行测试。这种方法被称为2倍交叉验证.
类似地,如果k的值等于5,则该方法称为5倍交叉验证方法,包括五个子集和五个迭代。k的值也是任意的。一般情况下,k的值为10。如果您对选择值感到困惑,建议您使用同样的方法。
k-折叠交叉验证程序首先将原始数据集随机拆分为k个折叠或子集。在每次迭代中,模型在整个数据集的k-1子集上进行训练。然后,在第k个子集上对模型进行测试,以检查其性能。
这个过程重复进行,直到所有的k层都作为评价集。每次迭代的结果被取平均值,它被称为交叉验证的准确性. 交叉验证精度用作性能指标,用于比较不同模型的效率。
K折叠交叉验证技术通常会产生较少的偏置模型,因为从原始数据集中的每个数据点都将出现在训练和测试集中。如果您具有有限的数据,则此方法是最佳的。
然而,正如预期的那样,这个过程可能会很耗时,因为算法必须从头开始重新运行k次。这也意味着它需要比坚持方法多k-1倍的计算量。
由于我们在k-fold交叉验证中随机变换数据并将其拆分为多个折叠,因此我们有可能最终得到不平衡的子集。这可能会导致训练有偏差,从而导致模型不准确。
例如,考虑一个二进制分类问题,其中两种类型的类标签各包含50%的原始数据。这意味着这两个类在原始样本中以相同的比例存在。为了简单起见,我们将这两个类命名为A和B。
虽然洗牌数据分割成褶皱,很有机会,我们最终得到一个折叠的多数数据点从类和只有几类b这样的一个子集被视为一个不平衡的子集,并可能导致创建一个不准确的分类器。
为了避免这种情况,折叠使用一个称为分层.在分层中,数据被重新排列,以确保每个子集都是整个数据集的良好代表。
在上面的二元分类示例中,这意味着最好将原始样本进行分割,使折页中的数据点有一半来自a类,其余来自B类。
遗漏交叉验证(LpOCV)是一种穷举方法,其中从由n表示的数据样本总数中提取p个数据点。
模型在n-p个数据点上训练,然后在p个数据点上测试。对来自原始样本的所有可能的p组合重复同样的过程。最后,对每次迭代的结果进行平均,以获得交叉验证的精度。
遗漏一交叉验证(LOOCV)方法是LPOCV的简化版本。在这种交叉验证技术中,P的值被设置为一个。因此,这种方法很少详尽无遗。然而,该方法的执行昂贵且耗时,因为该模型必须装配n次。
还有其他交叉验证技术,包括重复随机子抽样验证、嵌套交叉验证和时间序列交叉验证。
交叉验证的主要应用是评估机器学习模型的性能。这有助于比较机器学习方法,并确定哪种方法最适合解决特定问题。
例如,假设您正在考虑K-最近邻居(knn)或主成分分析(PCA)进行光学字符识别。在这种情况下,您可以使用交叉验证根据每个方法错误分类的字符数来比较这两种方法。
交叉验证也可以用在特征选择选择对预测输出贡献最大的特征。
交叉验证的主要挑战是需要过多的计算资源,特别是在k-fold CV等方法中。由于该算法必须从头开始重新运行k次,因此需要进行k次计算才能进行评估。
另一个限制是围绕说明数据的限制。在交叉验证中,测试数据集是用于评估模型性能的未申报数据集。从理论上讲,这是一种解决模型在用于现实世界应用程序时如何工作的好方法。
但是,在实践中永远不可能有一整套看不见的数据,也永远不可能预测模型在未来可能遇到的数据类型。
假设建立了一个模型来预测个人感染某种特定传染病的风险。如果模型是根据一项只涉及特定人群的研究(例如,25岁左右的女性)的数据进行训练的,当它应用于一般人群时,与交叉验证的准确性相比,预测性能可能会有很大的不同。
此外,只有在原始样本集中控制了人类的偏差,交叉验证才会产生有意义的结果。
交叉验证模型构建是创建具有更高精度或性能的机器学习应用程序的一种优秀方法。交叉验证技术,如k折交叉验证,可以在不牺牲测试分裂的情况下估计模型的性能。
他们还消除了不平衡数据分裂原因的问题;简而言之,他们可以使数据科学家们依靠运气更少,并且更多地依赖于迭代。
有一部分机器学习试图模仿人脑的功能。它叫深度学习和人工一般智能,如果可能的话,将需要它的决策能力。
不要错过任何一个邮件。
订阅吧,让你的手指随时掌握科技脉搏。