Questions tagged «random-forest»

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

1
Breiman的随机森林是否使用信息增益或Gini指数?
我想知道Breiman的随机森林(R randomForest包中的随机森林)是用作分割标准(属性选择标准)还是信息增益或基尼系数?我试图在http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm以及R中randomForest包的文档中找到它。但是我发现的唯一发现是,可以将Gini索引用于可变重要性计算。

1
子节点的Gini减少和Gini杂质
我正在研究随机森林的基尼特征重要性度量。因此,我需要计算节点杂质的基尼系数降低。这是我这样做的方式,它导致与定义的冲突,表明我在某处一定是错误的... :) 对于一个二叉树,给定左右子节点的概率,我可以计算出节点的基尼杂质:nnn i(n)=1−p2l−p2ri(n)=1−pl2−pr2 i(n) = 1 - p_l^2 - p_r^2 基尼值下降: Δi(n)=i(n)−pli(nl)−pri(nr)Δi(n)=i(n)−pli(nl)−pri(nr) \Delta i(n) = i(n) - p_li(n_l) - p_ri(n_r) 因此,对于在一个节点上有110个观察值的示例: - node (110) - left (100) - left_left (60) - left_right (40) - right (10) - right_left (5) - right_right (5) 我会像这样计算节点的Gini减少量: i(left)i(right)i(node)=1−(60/100)2−(40/100)2=1−(5/10)2−(5/10)2=1−(100/110)2−(10/110)2=0.48=0.50=0.16i(left)=1−(60/100)²−(40/100)²=0.48i(right)=1−(5/10)²−(5/10)²=0.50i(node)=1−(100/110)²−(10/110)²=0.16\begin{align} i({\rm left}) &= 1 - …

7
随机森林过度拟合
我正在尝试在scikits-learn中使用随机森林回归。问题是我遇到了很高的测试错误: train MSE, 4.64, test MSE: 252.25. 这是我的数据的样子:(蓝色:真实数据,绿色:预测的): 我将90%用于培训,将10%用于测试。这是我尝试几种参数组合后使用的代码: rf = rf = RandomForestRegressor(n_estimators=10, max_features=2, max_depth=1000, min_samples_leaf=1, min_samples_split=2, n_jobs=-1) test_mse = mean_squared_error(y_test, rf.predict(X_test)) train_mse = mean_squared_error(y_train, rf.predict(X_train)) print("train MSE, %.4f, test MSE: %.4f" % (train_mse, test_mse)) plot(rf.predict(X)) plot(y) 有什么可能的策略来改善我的健康状况?我还有其他方法可以提取基础模型吗?对于我来说,令人难以置信的是,经过多次重复相同的模式后,模型对新数据的表现如此差劲。我完全没有希望尝试拟合此数据吗?

1
预测连续变量时应如何实施决策树拆分?
我实际上是在编写随机森林的实现,但我相信这个问题特定于决策树(独立于RF)。 因此,上下文是我正在决策树中创建一个节点,并且预测变量和目标变量都是连续的。该节点有一个分割阈值,可将数据划分为两个集合,我根据每个集合中的平均目标值为每个子集创建新的预测。这是正确的方法吗? 我问的原因是,在预测二进制变量时,我相信典型的方法(正确吗?)是将数据分为0和1个子集,而不需要对每个子集的数据行取平均值。随后的分割将被划分为更细粒度的子集,并在每个分割处取平均值,结果后续的分割(决策树下方)将根据现在的连续变量而不是二进制变量进行操作(因为我们对残差值而不是原始值进行运算)目标)。 附带的问题:两种方法(二进制方法与连续方法)之间的区别是否显着-还是对于完整的决策树它们实际上会给出相同的结果?

2
报告随机森林的训练错误有哪些措施?
我目前正在使用randomForestR中的程序包为分类问题拟合随机森林,并且不确定如何报告这些模型的训练错误。 当我使用通过命令获得的预测来计算时,我的训练误差接近0%: predict(model, data=X_train) X_train训练数据在哪里。 在回答一个相关问题时,我读到一个人应该使用袋外(OOB)训练误差作为随机森林的训练误差度量。该数量是通过使用以下命令获得的预测计算得出的: predict(model) 在这种情况下,OOB训练误差非常接近平均10-CV测试误差,即11%。 我想知道: 报告OOB训练错误作为随机森林的训练错误度量通常被接受吗? 传统的训练误差测量值人为地低是真的吗? 如果传统的训练误差度量是人为地降低的,那么我可以比较哪两个度量来检查RF是否过拟合?

1
在随机森林中包括交互项
假设我们有一个响应Y和预测变量X1,...,Xn。如果我们试图通过X1,...,Xn的线性模型拟合Y,并且恰好发生了Y和X1,...,Xn之间的真实关系不是线性的,那么我们也许可以通过以某种方式转换X,然后拟合模型来修复模型。而且,如果恰好碰巧X1,...,XN不会独立于其他特征影响y,我们还可以通过包含交互项x1 * x3或x1 * x4 * x7来改善模型或类似的东西。因此,在线性情况下,交互项可以通过固定响应和特征之间的非线性或独立性冲突来带来价值。 但是,随机森林并没有真正做出这些假设。在拟合“随机森林”时,包括交互项是否重要?还是仅包括各个术语并选择适当的参数,即可使随机森林捕获这些关系?

2
为什么scikit-learn引导程序功能会对测试集重新采样?
当使用自举进行模型评估时,我一直认为直接购买的样本可以直接用作测试集。但是,对于已弃用的 scikit-learnBootstrap方法来说似乎不是这种情况,该方法似乎是通过从图纸中提取测试数据来构建测试集,并替换了现成的数据子集。这背后的统计原因是什么?在某些特定情况下,该技术比仅对袋外样本进行评估更好,反之亦然吗?

1
哪些套袋算法值得随机森林公司接班?
对于增强算法,我想说它们发展得很好。1995年初引入了AdaBoost,然后过了一段时间,它是Gradient Boosting Machine(GBM)。最近,在2015年左右推出了XGBoost,它非常准确,可以处理过度拟合,并且已成为多次Kaggle竞赛的获胜者。LightGBM在2017年由Microsoft引入,与XGBoost相比,它提供的培训时间大大减少。此外,Yandex推出了CatBoost,用于处理分类功能。 随机森林(Random Forest)于2000年代初推出,但是有没有值得的继任者?我认为,如果存在一种比Random Forest更好的装袋算法(可以在实践中轻松应用),它将在像Kaggle这样的地方引起关注。另外,为什么增强成为更流行的集成技术,是因为您可以构建更少的树以获得最佳预测?

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 = …

3
在随机森林模型中加权最近的数据
我正在使用随机森林训练一个分类模型,以区分6个类别。我的交易数据大约有6万多个观察值和35个变量。这是一个大致的示例。 _________________________________________________ |user_id|acquisition_date|x_var_1|x_var_2| y_vay | |-------|----------------|-------|-------|--------| |111 | 2013-04-01 | 12 | US | group1 | |222 | 2013-04-12 | 6 | PNG | group1 | |333 | 2013-05-05 | 30 | DE | group2 | |444 | 2013-05-10 | 78 | US | group3 | |555 | 2013-06-15 | …

1
在随机森林上使用LASSO
我想使用以下过程创建一个随机森林: 使用信息增益确定拆分,在数据和要素的随机样本上构建树 如果叶子节点超过预定深度,则终止该叶子节点,否则任何拆分都会导致叶子数少于预定最小值 而不是为每棵树分配一个类标签,而是在叶节点中分配类的比例 在构建了预定义数量之后停止构建树木 这从两个方面打破了传统的随机森林过程。第一,它使用分配比例而不是类标签的修剪树。第二,停止标准是树木的预定数量,而不是一些袋外误差估计。 我的问题是这样的: 对于上面输出N棵树的过程,我可以使用Logistic回归和LASSO选择来拟合模型吗?有没有人有经验适合随机森林分类器并使用逻辑LASSO进行后处理? ISLE框架提到使用LASSO作为回归问题(而非分类问题)的后处理步骤。此外,在搜索“随机森林套索”时,我没有得到任何有用的结果。

1
RandomForest-MDS图解说明
我使用randomForest根据8个变量(不同的身体姿势和动作)对6种动物行为进行了分类(例如,站立,行走,游泳等)。 randomForest软件包中的MDSplot给我该输出,并且在解释结果时遇到问题。我对相同的数据进行了PCA,并且已经在PC1和PC2中的所有类之间实现了很好的分隔,但是在这里Dim1和Dim2似乎仅分隔了3种行为。这是否意味着这三种行为比所有其他行为的相异性更高(因此MDS会尝试在变量之间找到最大的相异性,但不一定要在第一步中找到所有变量)?这三个群集的位置(例如在Dim1和Dim2中)指示什么?由于我对RI不太熟悉,因此在该图上绘制图例也有困难(但是我知道不同颜色的含义),但是也许有人可以帮忙吗?非常感谢!! 我在RandomForest中添加使用ClassCenter函数绘制的图。此功能还使用接近矩阵(与MDS图相同)来绘制原型。但是仅仅从查看六个不同行为的数据点来看,我不明白为什么邻近矩阵会像这样绘制我的原型。我还尝试了虹膜数据的classcenter函数,并且可以正常工作。但是似乎不适用于我的数据... 这是我用于此情节的代码 be.rf <- randomForest(Behaviour~., data=be, prox=TRUE, importance=TRUE) class1 <- classCenter(be[,-1], be[,1], be.rf$prox) Protoplot <- plot(be[,4], be[,7], pch=21, xlab=names(be)[4], ylab=names(be)[7], bg=c("red", "green", "blue", "yellow", "turquoise", "orange") [as.numeric(factor(be$Behaviour))]) points(class1[,4], class1[,7], pch=21, cex=2, bg=c("red", "green", "blue", "yellow", "turquoise", "orange")) 我的课程专栏是第一列,其后是8个预测变量。我将两个最佳预测变量绘制为x和y。

2
当选择的特征数量减少时,为什么随机森林OOB误差估计会提高?
我在微阵列数据集上应用随机森林算法作为分类器,将其分为两个已知的具有1000多个特征的组。初次运行后,我查看了这些功能的重要性,并使用5个,10个和20个最重要的功能再次运行树算法。 我发现,对于所有功能,前10位和前20位的OOB错误率估计为1.19%,而前5位功能的错误率为0%。 这对我来说似乎是违反直觉的,因此我想知道您是否可以解释我是否缺少某些内容或使用了错误的指标。 我在ntree = 1000,nodesize = 1和mtry = sqrt(n)中使用R中的randomForest包

3
如何为纵向大数据建模?
传统上,我们使用混合模型来建模纵向数据,例如: id obs age treatment_lvl yield 1 0 11 M 0.2 1 1 11.5 M 0.5 1 2 12 L 0.6 2 0 17 H 1.2 2 1 18 M 0.9 我们可以假设不同人的随机截距或斜率。但是,我要解决的问题将涉及庞大的数据集(数百万人,每天进行1个月的观测,即每个人将进行30次观测),目前我不知道是否有软件包可以完成此级别的数据。 我可以使用spark / mahout,但它们不提供混合模型,我的问题是,是否仍然可以修改数据以便可以使用RandomForest或SVM对此数据集进行建模? 我可以利用任何功能工程技术来帮助RF / SVM解决自相关问题吗? 非常感谢! 一些潜在的方法,但我没有时间把它们写成火花 如何将随机效果纳入randomForest 具有纵向数据的SVM回归

3
R:我在gbm和RandomForest的部分依赖图中看到了什么?
实际上,我以为我已经理解了一个可以显示具有部分依赖图的图,但是使用一个非常简单的假设示例,我很困惑。在下面的代码块中,我生成了三个自变量(a,b,c)和一个因变量(y),其中c与y呈紧密线性关系,而a和b与y不相关。我使用R包使用增强的回归树进行回归分析gbm: a <- runif(100, 1, 100) b <- runif(100, 1, 100) c <- 1:100 + rnorm(100, mean = 0, sd = 5) y <- 1:100 + rnorm(100, mean = 0, sd = 5) par(mfrow = c(2,2)) plot(y ~ a); plot(y ~ b); plot(y ~ c) Data <- data.frame(matrix(c(y, a, b, …

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.