Questions tagged «caret»

Caret是一个R软件包,其中包含一组试图简化创建预测模型的过程的函数。

3
R:尽管数据集中没有NaN,随机森林仍在“外部函数调用”错误中抛出NaN / Inf [关闭]
我正在使用插入符号在数据集上运行交叉验证的随机森林。Y变量是一个因素。我的数据集中没有NaN,Inf或NA。但是,当运行随机森林时,我得到 Error in randomForest.default(m, y, ...) : NA/NaN/Inf in foreign function call (arg 1) In addition: There were 28 warnings (use warnings() to see them) Warning messages: 1: In data.matrix(x) : NAs introduced by coercion 2: In data.matrix(x) : NAs introduced by coercion 3: In data.matrix(x) : NAs introduced by …

3
R Caret和NA
我非常喜欢插入符号的参数调整能力和统一的界面,但是我观察到,即使应用的“裸”模型允许使用NA,它始终需要完整的数据集(即没有NA)。这很麻烦,因为应该使用费力的插补方法,而这些方法一开始并不需要。一个人如何逃避归因并仍然使用插入符号优势?

2
在插入符号中,cv和repeated cv之间的真正区别是什么?
这与问题Caret重采样方法相似,尽管它实际上从未以商定的方式回答问题的这一部分。 插入符号的火车功能提供cv和repeatedcv。说的有什么区别: MyTrainControl=trainControl( method = "cv", number=5, repeats=5 ) 与 MyTrainControl=trainControl( method = "repeatedcv", number=5, repeats=5 ) 我知道cv将集合分解为k折(参数number),然后重新启动并运行参数repeats次数。 我能想到的唯一的事情是,也许经常cv与repeats使用相同的确切指标为每次折叠?基本上cv每次都在相同的精确折叠上运行,也许repeatedcv每次都选择新的折叠? 有人可以澄清吗?

5
过度拟合:没有银弹吗?
我的理解是,即使遵循正确的交叉验证和模型选择程序,如果人们对模型的搜索足够困难,就会出现过度拟合的情况,除非对模型的复杂性,期限施加了限制。此外,很多时候人们尝试从数据中学习对模型复杂性的惩罚,这会破坏他们可以提供的保护。 我的问题是:以上陈述有多少真相? 我经常听到ML的实践者说:“ 在我的公司/实验室,我们总是尝试使用每种可用的模型(例如,从caret或scikit-learn之类的库中获得),看看哪种模型最合适。” 我经常争论说,即使他们认真对待交叉验证并以他们想要的任何方式保留保留集,这种方法也很容易过拟合。此外,他们搜索的难度越大,就越容易适应。换句话说,过度优化是一个真正的问题,没有启发式方法可以帮助您系统地与之抗衡。我这样想是不是错了?

3
带插入号的堆叠/组装模型
我经常发现自己使用caretR 训练了几种不同的预测模型。我将使用来在相同的交叉验证折叠上对它们进行训练caret::: createFolds,然后根据交叉验证的误差选择最佳的模型。 但是,在独立测试集上,来自多个模型的中值预测通常要优于最佳单个模型。我正在考虑编写一些用于堆叠/组装插入符模型的函数,这些函数使用相同的交叉验证折叠进行训练,例如,通过对每个折叠上的每个模型进行中位数预测,或通过训练“元模型”。 当然,这可能需要外部交叉验证循环。是否有人知道用于集成插入符号模型的任何现有软件包/开源代码(并可能对这些集成进行交叉验证)?
21 r  caret  ensemble 

2
插入符号重采样方法
我正在使用caretR中的库来测试各种建模过程。 该trainControl对象允许指定一种重采样方法。所述方法在被描述的文档部分2.3,其中包括:boot,boot632,cv,LOOCV,LGOCV,repeatedcv和oob。尽管其中一些方法易于推断,但并非所有这些方法都明确定义。 这些重采样方法对应的程序是什么?
20 r  resampling  caret 

2
插入符号训练对glmnet是否对alpha和lambda交叉验证?
R caret包是否同时针对模型alpha和模型lambda进行交叉验证glmnet?运行此代码, eGrid <- expand.grid(.alpha = (1:10) * 0.1, .lambda = (1:10) * 0.1) Control <- trainControl(method = "repeatedcv",repeats = 3,verboseIter =TRUE) netFit <- train(x =train_features, y = y_train, method = "glmnet", tuneGrid = eGrid, trControl = Control) 培训日志如下所示。 Fold10.Rep3: alpha=1.0, lambda=NA 什么lambda=NA意思

1
插入符号和系数(glmnet)
我对利用插入符号对特定数据集进行推断感兴趣。是否可以执行以下操作: 产生我在插入符号中训练过的glmnet模型的系数。我想使用glmnet是因为固有的功能选择,因为我不相信glm有吗? 除了ROC指标之外,还有其他指标可以用来评估模型的拟合度吗?如调整后的?R2R2R^2 该分析的目的是对特定变量的影响进行推断,而不是进行预测。我只是喜欢插入符号包,因为到目前为止使用矩阵很容易。
19 caret  glmnet 

1
插入符号-重复的K折叠交叉验证与嵌套的K折叠交叉验证,重复n次
该插入符包是构建多机器学习模型辉煌[R库,并有模型构建和评估多种功能。对于参数调整和模型训练,插入符号包提供“ repeatedcv”作为方法之一。 作为一种好的做法,可以使用嵌套的K折交叉验证执行参数调整,其工作方式如下: 将训练集划分为“ K”子集 在每次迭代中,将“ K减1”子集用于模型训练,并保留1个子集(保持集)用于模型测试。 进一步将“ K减1”训练集划分为“ K”个子集,并迭代使用新的“ K减1”子集和“验证集”进行参数调整(网格搜索)。此步骤中确定的最佳参数用于测试步骤2中设置的保持。 另一方面,我假设重复的K折交叉验证可能会重复选择步骤1和2,因为我们选择查找模型方差的次数很多。 但是,仔细阅读插入符号手册中的算法,看起来“ repeatedcv”方法除了重复进行交叉验证外,还可能执行嵌套的K折交叉验证。 我的问题是: 我对插入符号'repeatedcv'方法的低估是正确的吗? 如果没有,您能否举一个使用插入的K折叠交叉验证的示例,并使用带有插入符号的'repeatedcv'方法? 编辑: 在本方法论文章中将解释和比较不同的交叉验证策略。 Krstajic D,Buturovic LJ,Leahy DE和Thomas S:选择和评估回归和分类模型时的交叉验证陷阱。化学信息杂志2014 6(1):10。doi:10.1186 / 1758-2946-6-10 我对使用插入符号包的“算法2:重复分层嵌套的交叉验证”和“算法3:针对变量选择和参数调整的重复网格搜索交叉验证”感兴趣。

2
R中插入符号包中的PCA和k倍交叉验证
我刚刚重新观看了Coursera上机器学习课程的演讲。在教授讨论PCA以便在有监督的学习应用程序中对数据进行预处理的部分中,他说PCA仅应在训练数据上执行,然后使用映射来转换交叉验证和测试集。另请参阅PCA和火车/测试区。 但是,在caretR包中,传递给train()函数的训练数据已经由PCA处理。因此,当算法执行k倍交叉验证时,交叉验证集已经通过PCA preProcess()和进行了处理,predict()并且实际上已用于PCA“拟合”中。 我对情况的理解正确吗?是否表示插入符号与PCA(或实际上使用任何缩放/定中心方法)进行交叉验证的过程是“错误的”,因为数据的预处理是在交叉验证集和训练集上进行的?如果是这样,这将对结果产生多大的影响?

4
梯度提升机的精度随着迭代次数的增加而降低
我正在通过caretR中的程序包尝试使用梯度增强机算法。 使用一个小的大学录取数据集,我运行了以下代码: library(caret) ### Load admissions dataset. ### mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") ### Create yes/no levels for admission. ### mydata$admit_factor[mydata$admit==0] <- "no" mydata$admit_factor[mydata$admit==1] <- "yes" ### Gradient boosting machine algorithm. ### set.seed(123) fitControl <- trainControl(method = 'cv', number = 5, summaryFunction=defaultSummary) grid <- expand.grid(n.trees = seq(5000,1000000,5000), interaction.depth = 2, shrinkage = …
15 machine-learning  caret  boosting  gbm  hypothesis-testing  t-test  panel-data  psychometrics  intraclass-correlation  generalized-linear-model  categorical-data  binomial  model  intercept  causality  cross-correlation  distributions  ranks  p-value  z-test  sign-test  time-series  references  terminology  cross-correlation  definition  probability  distributions  beta-distribution  inverse-gamma  missing-data  paired-comparisons  paired-data  clustered-standard-errors  cluster-sample  time-series  arima  logistic  binary-data  odds-ratio  medicine  hypothesis-testing  wilcoxon-mann-whitney  unsupervised-learning  hierarchical-clustering  neural-networks  train  clustering  k-means  regression  ordinal-data  change-scores  machine-learning  experiment-design  roc  precision-recall  auc  stata  multilevel-analysis  regression  fitting  nonlinear  jmp  r  data-visualization  gam  gamm4  r  lme4-nlme  many-categories  regression  causality  instrumental-variables  endogeneity  controlling-for-a-variable 

3
有没有办法禁用CARET中的参数调整(网格)功能?
在选择最终模型之前,CARET将自动使用预先指定的调整网格来构建各种模型,然后在完整的训练数据上训练最终模型。我可以只用一种参数组合来提供自己的调整网格。但是,即使在这种情况下,CARET也会在调整参数中“选择”最佳模型(即使在这种情况下只有一个),然后将最终模型拟合到所有训练数据。这是我要避免的额外步骤。 如何简单地跳过调整网格中各种变化的模型搜索步骤,并强制CARET建立在所有训练数据上(而不是直接调用基础模型库)?
15 r  caret 

2
通过插入号和基本randomForest包从randomForest获得不同的结果
我有点困惑:经过插入符号训练的模型的结果与原始包装中的模型有什么不同?我阅读了使用带有插入符号包的RandomForest的FinalModel进行预测之前是否需要进行预处理?但我在这里不使用任何预处理。 我通过使用插入符号包并调整了不同的mtry值来训练了不同的随机森林。 > cvCtrl = trainControl(method = "repeatedcv",number = 10, repeats = 3, classProbs = TRUE, summaryFunction = twoClassSummary) > newGrid = expand.grid(mtry = c(2,4,8,15)) > classifierRandomForest = train(case_success ~ ., data = train_data, trControl = cvCtrl, method = "rf", metric="ROC", tuneGrid = newGrid) > curClassifier = classifierRandomForest 我发现mtry = …

1
插入符glmnet与cv.glmnet
在glmnet内部caret使用搜索最佳lambda和cv.glmnet执行相同任务的比较中似乎有很多困惑。 提出了许多问题,例如: 分类模型train.glmnet与cv.glmnet? 在插入符号中使用glmnet的正确方法是什么? 使用`caret`交叉验证`glmnet` 但是没有给出答案,这可能是由于问题的可重复性。在第一个问题之后,我给出了一个非常相似的示例,但确实存在相同的问题:为什么估计的lambda如此不同? library(caret) library(glmnet) set.seed(849) training <- twoClassSim(50, linearVars = 2) set.seed(849) testing <- twoClassSim(500, linearVars = 2) trainX <- training[, -ncol(training)] testX <- testing[, -ncol(testing)] trainY <- training$Class # Using glmnet to directly perform CV set.seed(849) cvob1=cv.glmnet(x=as.matrix(trainX),y=trainY,family="binomial",alpha=1, type.measure="auc", nfolds = 3,lambda = seq(0.001,0.1,by = 0.001),standardize=FALSE) …


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.