Questions tagged «random-forest»

随机森林是一种将许多决策树的输出组合在一起的机器学习方法。

3
随机森林回归预测不高于训练数据
我注意到,在建立随机森林回归模型时,至少在中R,预测值永远不会超过训练数据中看到的目标变量的最大值。例如,请参见下面的代码。我正在建立一个回归模型以mpg根据mtcars数据进行预测。我建立了OLS和随机森林模型,并使用它们来预测mpg假设的汽车应该具有非常好的燃油经济性。OLS预计会mpg达到预期的高,但随机森林则不会。我在更复杂的模型中也注意到了这一点。为什么是这样? > library(datasets) > library(randomForest) > > data(mtcars) > max(mtcars$mpg) [1] 33.9 > > set.seed(2) > fit1 <- lm(mpg~., data=mtcars) #OLS fit > fit2 <- randomForest(mpg~., data=mtcars) #random forest fit > > #Hypothetical car that should have very high mpg > hypCar <- data.frame(cyl=4, disp=50, hp=40, drat=5.5, wt=1, qsec=24, vs=1, …
12 r  random-forest 

2
为什么CNN以FC层结尾?
据我了解,CNN由两部分组成。第一部分(转换/池层)进行特征提取,第二部分(fc层)对特征进行分类。 由于完全连接的神经网络不是最佳分类器(即,大多数情况下它们的性能优于SVM和RF),因此CNN为什么以FC层作为结束,而不是说SVM或RF?

1
RandomForest和类权重
一句话问:有人知道如何为随机森林确定良好的班级权重吗? 说明:我正在研究不平衡的数据集。我想使用该R软件包randomForest来在非常偏斜的数据集上训练模型,该数据集只有很少的正例和许多负例。我知道,还有其他方法,最后我会使用它们,但是出于技术原因,建立随机森林是中间步骤。所以我玩弄了参数classwt。我在半径2的圆盘中建立了一个非常人工的数据集,包含5000个负样本,然后在半径1的圆盘中采样了100个正样本。 1)在没有类别加权的情况下,模型变得“退化”,即FALSE到处预测。 2)通过公平的类别权重,我将在中间看到一个“绿点”,即它将预测半径为1的圆盘,就像TRUE有负面的例子一样。 数据如下所示: 这是一个没有权重发生了什么:(电话是:randomForest(x = train[, .(x,y)],y = as.factor(train$z),ntree = 50)) 为了进行检查,我还尝试了当我通过对负类进行下采样来剧烈平衡数据集时发生什么情况,以使关系再次为1:1。这给了我预期的结果: 但是,当我用“ FALSE” = 1的类加权来计算模型时,“ TRUE” = 50(这是一个合理的加权,因为负数比正数多50倍),我得到了: 只有当我将权重设置为“ FALSE” = 0.05和“ TRUE” = 500000之类的怪异值时,我才得到有意义的结果: 这是非常不稳定的,即将“ FALSE”权重更改为0.01会使模型再次退化(即,它可以TRUE随处进行预测)。 问题:有人知道如何为随机森林确定良好的班级权重吗? R代码: library(plot3D) library(data.table) library(randomForest) set.seed(1234) amountPos = 100 amountNeg = 5000 # positives r = runif(amountPos, 0, 1) phi …
11 r  random-forest 

1
为什么选择K会降低我的交叉验证分数?
在使用scikit-learn中的Boston Housing数据集和RandomForestRegressor(带有默认参数)时,我注意到了一些奇怪的事情:随着将折叠数增加到10以上,交叉验证平均得分降低了。我的交叉验证策略如下: cv_met = ShuffleSplit(n_splits=k, test_size=1/k) scores = cross_val_score(est, X, y, cv=cv_met) ... num_cvs变化多端。我设置test_size为1/num_cvs镜像k倍CV的训练/测试拆分大小行为。基本上,我想要类似k-fold CV的东西,但是我也需要随机性(因此ShuffleSplit)。 将该试验重复几次,然后绘制平均得分和标准差。 (请注意,的大小k由圆的面积表示;标准偏差在Y轴上。) 一致地,增加k(从2到44)会导致得分短暂增加,然后k随着进一步增加(超过10倍)而稳步下降!如果有的话,我希望更多的培训数据会导致分数略有提高! 更新资料 更改评分标准以表示绝对错误会导致我预期的行为:评分会随着K折CV中的折叠数增加而提高,而不是接近0(默认值为' r2 ')。问题仍然是,为什么默认得分指标导致均值和STD指标的性能下降,而折叠次数却越来越多。

2
决策树和回归-预测值是否超出训练数据范围?
对于决策树,预测值是否可以超出训练数据的范围? 例如,如果目标变量的训练数据集范围是0-100,那么当我生成模型并将其应用于其他对象时,我的值可以为-5吗?还是150? 鉴于我对决策树回归的理解是,它仍然是基于规则的-左/右进展,并且在训练集中的树的底部,它永远不会看到超出特定范围的值,因此它将永远无法预测吗?

2
在R randomForest中进行替换采样
randomForest实现不允许采样超过观察次数,即使使用替换采样也是如此。为什么是这样? 工作正常: rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE) rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE) 我想做的事: rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE) Error in randomForest.default(m, y, ...) : sampsize can not be larger than class frequency 没有分层样本的类似错误: rf <- randomForest(Species ~ …

2
决策树空间与随机森林的MCMC采样
一个随机森林是一家集决策树通过随机选择只是某些功能建立与(有时装袋训练数据),每棵树形成。显然,他们学习并概括得很好。是否有人对决策树空间进行了MCMC采样或将它们与随机森林进行了比较?我知道运行MCMC并保存所有采样树可能在计算上更加昂贵,但是我对这个模型的理论特性感兴趣,而不是计算成本。我的意思是这样的: 构造一个随机决策树(它可能会表现得很差) 用类似计算树的可能性,或者添加一个项。P(T[R Ë Ë | D a t a )∝ P(D a t a | T[R Ë Ë )P(Ť[RËË|d一种Ť一种)∝P(d一种Ť一种|Ť[RËË)P(Tree|Data) \propto P(Data|Tree)Pp - [R 我ö ř(T[R Ë Ë )Pp[R一世Ø[R(Ť[RËË)P_{prior}(Tree) 选择一个随机步骤来更改树,然后根据似然度。P(T[R Ë Ë | d一吨一)P(Ť[RËË|d一种Ť一种)P(Tree|Data) 每N步,保存当前树的副本 返回3进行大的N * M次 使用M个保存的树的集合进行预测 这会给随机森林一个类似的表现吗?请注意,与随机森林不同,我们在任何步骤都不会丢弃好数据或功能。


2
有没有办法解释来自随机森林模型的预测?
假设我有一个基于随机森林的预测分类模型(使用R中的randomForest包)。我想对其进行设置,以便最终用户可以指定要为其生成预测的项目,并且它将输出分类可能性。到目前为止,没有问题。 但是能够输出诸如可变重要性图之类的东西,但对于要预测的特定项目而不是训练集,将是有用/很酷的。就像是: 预计X项是狗(可能性为73%), 因为: 腿= 4 呼吸=不良 毛皮=短 食=讨厌 你明白了。是否存在从受过训练的随机森林中提取此信息的标准或至少合理的方法?如果是这样,是否有人有代码可以对randomForest软件包执行此操作?

2
为什么袋装树/随机森林树比单个决策树具有更高的偏差?
如果我们考虑一个完整的决策树(即未修剪的决策树),则它具有高方差和低偏差。 套袋和随机森林使用这些高方差模型并对其进行汇总,以减少方差,从而提高预测准确性。套袋和随机森林都使用Bootstrap采样,并且如“统计学习的要素”中所述,这会增加单个树中的偏差。 此外,由于随机森林方法限制了允许在每个节点上拆分的变量,因此单个随机森林树的偏差会进一步增加。 因此,如果套袋和随机森林中单棵树的偏差增加不会“过度”使变化减少,则只能提高预测精度。 这使我想到以下两个问题:1)我知道使用引导程序抽样时,(几乎总是)我们在引导程序样本中会有一些相同的观察结果。但是,为什么这会导致套袋/随机森林中单个树木的偏见增加?2)此外,为什么对每个拆分中要拆分的可用变量的限制会导致随机森林中各个树的偏倚更高?

1
随机森林算法步骤背后的动机
我熟悉的用于构建随机森林的方法如下:(来自http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm) 要在森林中建树,我们: 引导一个大小为N的样本,其中N是我们的训练集的大小。使用此引导示例作为此树的训练集。 在树的每个节点上,随机选择M个特征中的m个。在这m个功能中选择最佳以进行拆分。(其中m是我们的随机森林的参数) 使每棵树最大程度地生长-即不修剪。 虽然此算法在程序级别上有意义并且肯定会产生良好的结果,但我不清楚步骤1、2和3背后的理论动机是什么。请问有人可以解释是什么促使有人提出了此过程以及为什么要这样做效果很好? 例如:为什么我们需要执行步骤1?似乎我们没有为减少偏差的通常目的而自举。

1
如何为R中的每个预测计算回归的置信度得分(使用随机森林/ XGBoost)?
使用随机森林或极端梯度增强(XGBoost)之类的算法时,是否可以获取每个预测值的置信度得分(也可以称为置信度值或似然度)?假设此置信度得分介于0到1之间,表示我对特定预测的信心如何。 根据我在互联网上发现的有关信心的信息,通常用间隔来衡量。这是一个使用库中confpred函数计算的置信区间的示例lava: library(lava) set.seed(123) n <- 200 x <- seq(0,6,length.out=n) delta <- 3 ss <- exp(-1+1.5*cos((x-delta))) ee <- rnorm(n,sd=ss) y <- (x-delta)+3*cos(x+4.5-delta)+ee d <- data.frame(y=y,x=x) newd <- data.frame(x=seq(0,6,length.out=50)) cc <- confpred(lm(y~poly(x,3),d),data=d,newdata=newd) if (interactive()) { ##' plot(y~x,pch=16,col=lava::Col("black"), ylim=c(-10,15),xlab="X",ylab="Y") with(cc, lava::confband(newd$x, lwr, upr, fit, lwd=3, polygon=T, col=Col("blue"), border=F)) } 代码输出仅给出置信区间: 还有一个库conformal,但我也将其用于回归的置信区间:“共形允许在共形预测框架中计算预测误差:(i)用于分类的p。值,以及(ii)回归的置信区间。 ” …

1
我应该选择随机森林回归器还是分类器?
我通过随机森林对具有二进制目标类的数据集进行拟合。在python中,我可以通过randomforestclassifier或randomforestregressor做到这一点。 我可以直接从randomforestclassifier获得分类,也可以先运行randomforestregressor并获得一组估计分数(连续值)。然后,我可以找到一个临界值,以从分数集中得出预测的类别。两种方法都可以达到相同的目标(即预测测试数据的类别)。 我也可以观察到 randomforestclassifier.predict_proba(X_test)[:,1]) 与...不同 randomforestregressor.predict(X_test) 因此,我只想确认两种方法均有效,然后在随机森林应用中哪种方法更好?


2
分组数据上的随机森林
我在具有层次结构的高维分组数据(50个数字输入变量)上使用随机森林。在70个不同对象的30个位置上进行了6次复制,收集了数据,从而产生了12600个数据点,这些数据点不是独立的。 似乎随机森林正在过度拟合数据,因为oob误差远小于我们在训练期间将一个对象的数据遗漏掉然后用训练后的随机森林预测遗漏对象的结果时得到的误差。此外,我已经关联了残差。 我认为过度拟合是由于随机森林期望独立数据而引起的。是否可以告诉随机森林有关数据的层次结构?还是有另一种强大的集成或收缩方法可以处理具有强大交互结构的高维分组数据? 有什么提示我可以做得更好吗?

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.