Questions tagged «cross-validation»

在模型拟合期间反复保留数据的子集,以便量化保留的数据子集上的模型性能。

5
您可以通过使用CV / Bootstrap训练机器学习算法来过度拟合吗?
这个问题很可能是开放性的,无法得出明确的答案,但希望不会。 机器学习算法(例如SVM,GBM,Random Forest等)通常具有一些免费参数,除了一些经验法则之外,还需要针对每个数据集进行调整。通常使用某种重新采样技术(引导程序,CV等)来完成此过程,以适应给出最佳泛化误差的参数集。 我的问题是,你可以在这里走得太远吗?人们都在谈论进行网格搜索,但是为什么不简单地将其视为优化问题并向下钻取最佳参数集呢?我在这个问题中询问了一些有关此问题的机制,但是并没有引起太多关注。也许这个问题被问得很严峻,但也许问题本身代表了人们通常不会采取的一种不好的做法? 困扰我的是缺乏正规化。通过重新采样,我可能会发现,对于该数据集,GBM中生长的最佳树木数量为647,交互深度为4,但是我如何确定新数据确实如此(假设新种群)与训练集相同)?由于没有合理的“缩水”价值(或者如果您愿意,也没有提供任何先验信息),重新采样似乎是我们可以做的最好的事情。我只是没有听到任何有关此事的消息,所以让我想知道是否缺少某些东西。 显然,要进行多次迭代以将模型的最后预测能力压缩出去,会产生大量的计算成本,因此,如果您有足够的时间/精力来进行优化和每一位操作,那么显然这是您要执行的操作性能改善是很有价值的。


1
交叉验证滥用(报告性能以获得最佳超参数值)
最近,我遇到了一篇论文,提出在特定数据集上使用k-NN分类器。作者使用所有可用的数据样本对不同的k值执行k倍交叉验证,并报告最佳超参数配置的交叉验证结果。 据我所知,这个结果是有偏差的,他们应该保留一个单独的测试集,以获取未用于执行超参数优化的样本的准确性估计。 我对吗?您能否提供一些参考(最好是研究论文)来描述交叉验证的这种滥用?

2
为什么要使用分层交叉验证?为什么这不损害与差异相关的利益?
有人告诉我使用分层交叉验证是有益的,尤其是在响应类不平衡时。如果交叉验证的一个目的是帮助解释我们原始训练数据样本的随机性,那么除非您确定原始训练集具有代表性的阶级分布,否则确保使每一折具有相同的类别分布将不利于此。 我的逻辑有缺陷吗? 编辑 我对这种方法是否会损害简历的价值很感兴趣。我可以理解为什么如果您的样本量很小/类别非常不平衡/两者都有,那么为了避免没有一个代表次要类别的代表,为什么有必要这样做。 本文苹果对苹果在交叉验证研究:陷阱在分类绩效考核提出了分层的情况很好,但所有的论据似乎量“分层提供了保障和更多的一致性”,但没有安全保障就需要给予足够的数据。 答案仅仅是“由于缺乏足够的数据,我们出于必要而使用它”。?

1
交叉验证泊松模型的误差度量
我正在交叉验证试图预测计数的模型。如果这是二进制分类问题,那么我将计算出不匹配的AUC,如果这是回归问题,则将计算出不匹配的RMSE或MAE。 对于Poisson模型,我可以使用哪些误差度量来评估样本外预测的“准确性”?是否存在AUC的Poisson扩展,可以查看预测对实际值的排序程度? 似乎很多Kaggle竞赛都在使用根均方根平方误差或RMLSE来进行计数(例如,一次yelp审查将获得的有用票数或患者在医院花费的天数)。 /编辑:我一直在做的一件事是计算预测值的十分之一,然后查看实际计数,并按分位数进行分组。如果十分位数1低,十分位数10高且两者之间的十分位数都在增加,则我一直将该模型称为“好”,但是我一直难以量化此过程,并且我相信会有更好的方法方法。 /编辑2:我正在寻找一个公式,该公式采用预测值和实际值并返回一些“错误”或“准确性”指标。我的计划是在交叉验证过程中根据折叠数据计算此函数,然后将其用于比较各种模型(例如,泊松回归,随机森林和GBM)。 例如,一个这样的函数是RMSE = sqrt(mean((predicted-actual)^2))。另一个这样的功能是AUC。这两个函数似乎都不适合泊松数据。

3
K折vs.蒙特卡洛交叉验证
我正在尝试学习各种交叉验证方法,主要是打算将其应用于监督的多元分析技术。我遇到的两个是K折和蒙特卡洛交叉验证技术。我读过K折是Monte Carlo的一种变体,但我不确定我是否完全理解组成Monte Carlo的定义。有人可以解释这两种方法之间的区别吗?

1
从lmer模型计算效果的可重复性
我刚刚碰到了这篇论文,该论文描述了如何通过混合效应建模来计算测量的可重复性(又称可靠性,又称类内相关性)。R代码为: #fit the model fit = lmer(dv~(1|unit),data=my_data) #obtain the variance estimates vc = VarCorr(fit) residual_var = attr(vc,'sc')^2 intercept_var = attr(vc$id,'stddev')[1]^2 #compute the unadjusted repeatability R = intercept_var/(intercept_var+residual_var) #compute n0, the repeatability adjustment n = as.data.frame(table(my_data$unit)) k = nrow(n) N = sum(n$Freq) n0 = (N-(sum(n$Freq^2)/N))/(k-1) #compute the adjusted repeatability Rn = …
28 mixed-model  reliability  intraclass-correlation  repeatability  spss  factor-analysis  survey  modeling  cross-validation  error  curve-fitting  mediation  correlation  clustering  sampling  machine-learning  probability  classification  metric  r  project-management  optimization  svm  python  dataset  quality-control  checking  clustering  distributions  anova  factor-analysis  exponential  poisson-distribution  generalized-linear-model  deviance  machine-learning  k-nearest-neighbour  r  hypothesis-testing  t-test  r  variance  levenes-test  bayesian  software  bayesian-network  regression  repeated-measures  least-squares  change-scores  variance  chi-squared  variance  nonlinear-regression  regression-coefficients  multiple-comparisons  p-value  r  statistical-significance  excel  sampling  sample  r  distributions  interpretation  goodness-of-fit  normality-assumption  probability  self-study  distributions  references  theory  time-series  clustering  econometrics  binomial  hypothesis-testing  variance  t-test  paired-comparisons  statistical-significance  ab-test  r  references  hypothesis-testing  t-test  normality-assumption  wilcoxon-mann-whitney  central-limit-theorem  t-test  data-visualization  interactive-visualization  goodness-of-fit 

3
交叉验证,包括培训,验证和测试。为什么我们需要三个子集?
我有一个关于交叉验证过程的问题。我正在学习Cursera上的机器学习课程。主题之一是关于交叉验证。我发现很难遵循。我确实知道为什么需要CV,因为我们希望我们的模型能够很好地处理未来(未知)数据,并且CV可以防止过拟合。但是,该过程本身令人困惑。 我所了解的是,我将数据分为3个子集:训练,验证和测试。训练和验证是为了找到模型的最佳复杂性。我不明白的是第三个子集。我了解我为模型采用了许多功能,对其进行训练并在Validation子集上对其进行验证,并在更改结构时寻找最小的Cost Function。找到它后,我会在“测试”子集上测试模型。如果我已经在验证子集中找到了最小成本函数,为什么还要在测试子集中再次对其进行测试? 有人可以帮我澄清一下吗? 谢谢

1
自由度可以是非整数吗?
当我使用GAM时,它给了我剩余的DF为(代码的最后一行)。这意味着什么?超越GAM示例,通常,自由度可以是非整数吗?26.626.626.6 > library(gam) > summary(gam(mpg~lo(wt),data=mtcars)) Call: gam(formula = mpg ~ lo(wt), data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -4.1470 -1.6217 -0.8971 1.2445 6.0516 (Dispersion Parameter for gaussian family taken to be 6.6717) Null Deviance: 1126.047 on 31 degrees of freedom Residual Deviance: 177.4662 on 26.6 degrees of …
27 r  degrees-of-freedom  gam  machine-learning  pca  lasso  probability  self-study  bootstrap  expected-value  regression  machine-learning  linear-model  probability  simulation  random-generation  machine-learning  distributions  svm  libsvm  classification  pca  multivariate-analysis  feature-selection  archaeology  r  regression  dataset  simulation  r  regression  time-series  forecasting  predictive-models  r  mean  sem  lavaan  machine-learning  regularization  regression  conv-neural-network  convolution  classification  deep-learning  conv-neural-network  regression  categorical-data  econometrics  r  confirmatory-factor  scale-invariance  self-study  unbiased-estimator  mse  regression  residuals  sampling  random-variable  sample  probability  random-variable  convergence  r  survival  weibull  references  autocorrelation  hypothesis-testing  distributions  correlation  regression  statistical-significance  regression-coefficients  univariate  categorical-data  chi-squared  regression  machine-learning  multiple-regression  categorical-data  linear-model  pca  factor-analysis  factor-rotation  classification  scikit-learn  logistic  p-value  regression  panel-data  multilevel-analysis  variance  bootstrap  bias  probability  r  distributions  interquartile  time-series  hypothesis-testing  normal-distribution  normality-assumption  kurtosis  arima  panel-data  stata  clustered-standard-errors  machine-learning  optimization  lasso  multivariate-analysis  ancova  machine-learning  cross-validation 

1
交叉验证是否可以替代验证集?
在文本分类中,我有一个约800个样本的训练集和一个约150个样本的测试集。测试仪从未使用过,一直等到最后使用。 我正在使用整个800个样本训练集,并在调整和调整分类器和功能时进行10倍交叉验证。这意味着我没有单独的验证集,但是每次用完10折后,都会自动选择一个验证集。 当我对所有事情都感到满意并想要进入评估的最后阶段之后,我将对全部800个样本进行分类训练。并在150个样本测试仪上进行测试。 我理解交叉验证在文本分类中的这种用法正确吗?这种做法有效吗? 交叉验证的另一个问题是: 而不是10倍,我还尝试将其作为性能的一般指标。因为对于遗忘一事,不可能获得有关f1 /精确度/召回率的信息,所以我想知道遗忘一事的准确性与10倍的度量之间的关系是什么? 任何见解将不胜感激。 编辑: 这是对交叉验证的很好介绍。它还参考了其他研究论文。

4
为什么训练步骤和评估步骤之间不对称?
众所周知,尤其是在自然语言处理中,机器学习应分两个步骤进行,即训练步骤和评估步骤,并且它们应使用不同的数据。为什么是这样?从直觉上讲,此过程有助于避免数据过拟合,但是我看不到这种情况(信息理论上的原因)。 与此相关的是,我已经看到了一些数字,用于训练的数据集有多少,评估的数据有多少,分别为2/3和1/3。选择特定分布是否有任何理论依据?

2
k倍交叉验证中的方差估计
K折交叉验证可用于估计给定分类器的泛化能力。我是否可以(也应该)从所有验证运行中计算出汇总的方差,以便更好地估计其方差? 如果没有,为什么? 我发现了在交叉验证运行中确实使用汇总标准差的论文。我还发现有论文明确指出,对于验证方差没有统一的估计。但是,我也发现了一些论文,这些论文显示了一些泛化误差的方差估计量(我仍在阅读并尝试理解这一点)。人们在实践中实际上做什么(或举报)? 编辑:当使用CV来衡量粗略的分类错误(即,一个样本已正确标记或未标记;例如,真或假)时,谈论合并方差可能没有任何意义。但是,我所说的是我们估计的统计量确实定义了方差的情况。因此,对于给定的倍数,我们最终可以得到统计值和方差估计值。丢弃此信息并仅考虑平均统计数据似乎是不正确的。虽然我知道我可以使用自举方法构建方差估计,但是(如果我不是很错的话)这样做仍然会忽略倍数方差,仅考虑统计估计(并且需要更多的计算能力)。

1
如何在R中凭经验证明AIC和BIC等效于哪种交叉验证方法?
在该站点上其他地方的问题中,有几个答案提到AIC等同于留一法(LOO)交叉验证,而BIC等同于K倍交叉验证。有没有一种方法可以在R中以经验方式证明这一点,从而弄清楚LOO和K折中涉及的技术并证明它们与AIC和BIC值等效?注释良好的代码将在这方面有所帮助。另外,在演示BIC时,请使用lme4软件包。请参阅下面的示例数据集... library(lme4) #for the BIC function generate.data <- function(seed) { set.seed(seed) #Set a seed so the results are consistent (I hope) a <- rnorm(60) #predictor b <- rnorm(60) #predictor c <- rnorm(60) #predictor y <- rnorm(60)*3.5+a+b #the outcome is really a function of predictor a and b but not predictor …
26 r  aic  cross-validation  bic 

4
内部与外部交叉验证和模型选择
我的理解是,通过交叉验证和模型选择,我们尝试解决两件事: P1。用我们的样本进行训练时估计人口的预期损失 P2。测量并报告我们对该估计的不确定性(方差,置信区间,偏差等) 标准做法似乎是进行反复交叉验证,因为这会减少我们估算器的差异。 但是,在报告和分析方面,我的理解是内部验证比外部验证要好,因为: 最好报告: 我们的估算器的统计数据,例如,对整个样本(在本例中为CV样本)的置信区间,方差,均值等。 比报告: 由于以下原因,我们在原始样本的保留子集上的估计量损失: (i)这将是一次测量(即使我们使用CV选择估算器) (ii)由于我们必须为保留集留出空间,因此我们将使用比原始样本小的集(例如CV集)来训练我们用于此单一测量的估计量。这导致P1中的估计更加偏颇(悲观)。 它是否正确?如果不是为什么? 背景: 很容易找到建议将样本分为两组的教科书: 该CV集,随后,反复分为训练和验证集。 在保持退出(测试)集,只在最后用来报告估计性能 我的问题是试图了解这种教科书方法的优点和优势,因为我们的目标是在本文开头真正解决问题P1和P2。在我看来,报告保留测试集是一种不好的做法,因为对CV样本的分析会提供更多信息。 嵌套K折与重复K折: 原则上,可以将保留与常规K折相结合以获得 嵌套K折。这将使我们能够评估估计量的变异性,但在我看来,对于相同数量的总训练模型(总折数),重复K折将产生比嵌套K-误差更小,更准确的估计量折。要看到这个: 对于相同的K,重复的K折使用的总样本量要比嵌套K折的样本大(即,导致较低的偏差) 100次迭代只会以嵌套K折(K = 10)给出估计值的10次测量,但是以K折为100次测量(更多的测量会导致P2的方差更低) 这个推理怎么了?

4
交叉验证后如何使用“测试”数据集?
在我见过的一些讲座和教程中,他们建议将您的数据分为三个部分:培训,验证和测试。但是尚不清楚应如何使用测试数据集,也不清楚这种方法比整个数据集的交叉验证如何更好。 假设我们已经将20%的数据保存为测试集。然后,我们将其余部分分解为k折,然后使用交叉验证,找到可以对该数据集中的未知数据做出最佳预测的模型。假设我们发现的最佳模型可为我们提供75%的准确性。 各种问答网站上的各种教程和许多问题都表明,现在我们可以在保存的(测试)数据集中验证模型。但是我仍然不知道它是如何完成的,也没有意义。 假设我们在测试数据集上的准确性为70%。 那么我们下一步该怎么做?我们是否会尝试另一个模型,然后再尝试另一个模型,直到我们在测试数据集上获得高分?但是在这种情况下,实际上看起来我们只会找到适合我们有限的(仅20%)测试集的模型。这并不意味着我们会找到总体上最好的模型。 此外,如果仅根据有限的数据集计算该分数,我们如何将其视为模型的一般评估?如果该分数很低,则可能是我们很不幸并选择了“不良”测试数据。 另一方面,如果我们使用所拥有的所有数据,然后使用k倍交叉验证来选择模型,我们将找到对来自我们所拥有的整个数据集的未知数据进行最佳预测的模型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.