交叉验证和网格搜索有什么区别?

Lin*_*nda 43 definition cross-validation difference grid-search

简单来说,交叉验证和网格搜索有什么区别?网格搜索如何工作?我应该首先进行交叉验证然后进行网格搜索吗?

Or *_*man 82

交叉验证是指您保留部分数据用于评估模型.有不同的交叉验证方法.最简单的概念是,只需占用数据的70%(只需在此处编号,不一定是70%)并将其用于培训,然后使用剩余的30%的数据来评估模型的数据性能.您需要不同的数据来训练和评估模型的原因是为了防止过度拟合.当然还有其他(稍微涉及更多)交叉验证技术,如k-fold交叉验证,这在实践中经常使用.

网格搜索是一种执行超参数优化的方法,也就是说,它是一种为给定模型找到超参数的最佳组合(超参数的一个例子是优化器的学习率)的方法(例如CNN)和测试数据集.在这种情况下,您有几个模型,每个模型都有不同的超参数组合.对应于单个模型的这些参数组合中的每一个可以说是位于"网格"的点上.然后,目标是训练每个模型并使用交叉验证对其进行评估.然后选择表现最佳的那个.

举一个具体的例子,如果您使用的是支持向量机,你可以使用不同的价值观gammaC.因此,例如,您可以使用具有以下值的网格(gamma, C):(1, 1), (0.1, 1), (1, 10), (0.1, 10).它是一个网格,因为它就像[1, 0.1]for gamma[1, 10]for 的产品C.网格搜索基本上会为这四对(gamma, C)值中的每一个训练SVM ,然后使用交叉验证对其进行评估,并选择最佳的一个.


And*_*ler 16

交叉验证是一种用于稳健地估计模型的测试集性能(泛化)的方法.网格搜索是一种选择模型族中最佳模型的方法,通过参数网格进行参数化.

在这里,通过"模型",我不是指训练有素的实例,更多的是算法和参数,例如SVC(C=1, kernel='poly').

  • 恩,那就对了.在**网格搜​​索模型选择(使用5倍交叉验证)之后,一半数据被保留用于评估**.原因是他们不仅想要选择最佳模型,而且还要对它的概括程度(它对新数据的执行情况)有一个很好的估计.您不能仅使用网格搜索交叉验证中的分数,因为您选择了得分最高的模型,因此其分数中可能存在某种选择偏差.这就是为什么他们在网格搜索结束后保留​​部分数据进行测试的原因. (9认同)
  • 我明白了.但是在scikit-learn的例子中,首先通过执行`X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.5,random_state = 0`)然后在网格搜索中进行了数据集的拆分. `clf = GridSearchCV(SVC(C = 1),tuned_pa​​rameters,cv = 5,得分=得分)`这样就意味着第一步将例如1000训练集分成500个训练对象和500个测试对象,然后是网格搜索将500的训练集拆分为"cv = 5"5倍交叉验证?那么500个对象可能分为250和250或400和100等等? (2认同)

was*_*abi 12

交叉验证,简单地分离测试和培训数据,并使用测试数据验证培训结果.我知道有两种交叉验证技术.

首先,测试/训练交叉验证.拆分数据作为测试和训练.

其次,k-fold交叉验证将您的数据拆分为k个bin,将每个bin用作测试数据,并将其余数据用作训练数据并验证测试数据.重复该过程k次.并获得平均表现.k-fold交叉验证对小型数据集特别有用,因为它可以最大化测试和训练数据.

网格搜索; 系统地通过参数曲调的多种组合,交叉验证每一个,并确定哪一个给出最佳性能.你可以通过许多组合只稍微改变参数.