问题标签 [cross-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
393 浏览

scikit-learn - advanced feature extraction for cross-validation using sklearn

Given a sample dataset with 1000 samples of data, suppose I would like to preprocess the data in order to obtain 10000 rows of data, so each original row of data leads to 10 new samples. In addition, when training my model I would like to be able to perform cross validation as well. The scoring function I have uses the original data to compute the score so I would like cross validation scoring to work on the original data as well rather than the generated one. Since I am feeding the generated data to the trainer (I am using a RandomForestClassifier), I cannot rely on cross-validation to correctly split the data according to the original samples.

What I thought about doing:

  • Create a custom feature extractor to extract features to feed to the classifier.
  • add the feature extractor to a pipeline and feed it to, say, GridSearchCv for example
  • implement a custom scorer which operates on the original data to score the model given a set of selected parameters.

Is there a better method for what I am trying to accomplish?

I am asking this in connection to a competition going on right now on Kaggle

0 投票
2 回答
862 浏览

r - In k-fold-cross validation, do we train algorithm on (k-1) subsets one by one or on combined (k-1) subsets at once?

I mean to say, lets say I have 10 subsets (set1, set2,.....set10) of a training set. To perform 10 fold CV, according to me I should train my algorithm on rbind(set2,set3.....set9,set10) and test it on set1. Then I will train it on rbind( set1,set3,set4,....set10) and test it on set2 and so on. Am I correct ?

I have a feeling that we train algorithm on set2, set3....set10 one by one and test it on set1. This way we have 9 sets of predictions on set1 and then we can average it out. Which one is the correct way?

Any help would be greatly appreciated.

Thank you.

0 投票
1 回答
941 浏览

r - cv.glm R 中缺少因子的问题

我正在使用 R 中引导库的 cv.glm 交叉验证过程测试逻辑回归的性能。

我的一些预测变量是因素。

当我运行它时,我收到以下错误消息:

我想我理解这个问题。可能是我在不存在某些水平的因子变量的观察子集上训练回归模型。如果这个模型后来被用于新的观察,包括预测变量的看不见的水平,那么它不知道如何表现。

由于这在我看来像是一个基本的 CV 问题,我很惊讶我没有在库文档中找到任何提及。

我将不胜感激任何指针。

0 投票
0 回答
184 浏览

matrix - 使用“crossvalind”对矩阵的列向量进行索引

我有一个 3x50 矩阵。我想获得 50 个 3x1 列向量并使用上面看到的 crossvalind 命令为它们分配索引

所以假设我有一个名为“输入”的 3x3 矩阵:

如何使用 crossvalind 为我的“输入”矩阵的向量列生成索引?

**我想这样做的原因是我可以在应用交叉验证后将这些列向量作为训练/测试集

0 投票
1 回答
1262 浏览

r - R交叉验证

我正在做交叉验证。所以我想把数据分成10折。有人发布了以下代码。

但是我真的不明白在lapply做什么。有人可以向新手解释一下吗?欣赏它。

0 投票
0 回答
887 浏览

machine-learning - 交叉验证 - 一类分类

我正在尝试执行一类分类,这样我在训练期间只有正数据,而负数据仅在测试时可用。如果我使用一类 SVM 或任何其他一类方法,使用交叉验证方法估计参数存在一个常见问题,因为在训练阶段我们没有负数据。我认为通过仅使用正数据估计参数可能会出现一个问题,即在训练期间“过度拟合”,或者换句话说,如果我们只关心给我们提供最低假阴性率的参数,我们最终可能会得到参数(s ) 在测试过程中假阴性率为零,但假阳性率很高。

我的问题是,您能否建议我使用 CV 的参数估计方法或参考任何处理这种情况的论文。大多数谷歌搜索和文献评论都没有解决我的问题。为了简化这个问题,许多研究人员假设了一些异常值(或人为生成它们),但就我而言,我不能说任何关于负面概念的内容,因为我只知道正面数据是什么样的。您的反馈将不胜感激。

0 投票
0 回答
2979 浏览

r - r中GAM的k折交叉验证

有没有办法在 R 中对 GAM 进行 k 折交叉验证?

我使用该mgcv软件包制作了一个 GAM。

我使用了包gamclass来使用CVgam,它给了我输出:

据我所知,这对于 10 倍交叉验证来说不是有用的输出吗?或者是吗?

谢谢

0 投票
2 回答
529 浏览

r - sapply 在交叉验证中的使用

我有一个关于sapplyR 的问题。在我的示例中,我将其用于留一交叉验证

我的问题sapply如下:

  1. 我可以使用多个参数和函数吗,即sapply(X1,FUN1,X2,FUN2,..)X1分别是函数和X2函数的函数参数。FUN1FUN2
  2. 在上面的代码中,我应用1:n到了函数loo.reg.value。但是,这个函数有多个参数,实际上是 3 个:整数i、回归数据reg.data和回归函数reg.fcn。如果 sapply 中的函数有多个参数,并且我X只涵盖一个参数,那么 sapply 是否将其用作“第一个参数”?所以它会和sapply(c(1:n,reg.data,reg.fcn),loo.reg.value, reg.data, reg.fcn)?

感谢您的帮助

0 投票
2 回答
5676 浏览

r - 如何将验证保留集指定为插入符号

我真的很喜欢至少在建模的早期阶段使用插入符号,特别是因为它非常容易使用重采样方法。但是,我正在研究一个模型,其中训练集通过半监督自我训练添加了相当多的案例,因此我的交叉验证结果确实存在偏差。我对此的解决方案是使用验证集来衡量模型性能,但我看不到直接在插入符号中使用验证集的方法 - 我是否遗漏了某些东西或者这只是不受支持?我知道我可以编写自己的包装器来完成插入符号通常会为 m 做的事情,但是如果有一种解决方法而不必这样做,那就太好了。

这是我正在经历的一个简单的例子:

summaryFunction()我最初认为我可以通过为对象创建自定义来做到这一点,trainControl()但我看不到如何引用我的模型对象以从验证集中获取预测(文档 - http://caret.r-forge.r-project.org /training.html - 仅列出“data”、“lev”和“model”作为可能的参数)。例如,这显然行不通:

编辑:为了想出一个真正丑陋的修复,我一直在寻找是否可以从另一个函数的范围访问模型对象,但我什至没有看到它们模型存储在任何地方。希望有一些优雅的解决方案,我什至没有接近看到......

0 投票
1 回答
4112 浏览

weka - Weka 中的 10 折交叉验证

我对 Weka 中可用的 10 折交叉验证和传统的 10 折交叉验证之间的区别有点困惑。我理解 K 折交叉验证的概念,但从我读过的 10 折交叉- Weka 中的验证有点不同。

在 Weka FIRST 中,模型建立在所有数据之上。只有这样才能进行 10 折交叉验证。在传统的 10 折交叉验证中,没有预先构建模型,而是构建了 10 个模型:每次迭代一个(如果我错了,请纠正我!)。但如果是这样的话,Weka 在 10 折交叉验证期间到底做了什么?它是否再次为十次迭代中的每一次创建一个模型,或者它是否使用先前组装的模型。谢谢!