Questions tagged «random-forest»

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

1
极端随机森林与随机森林有何不同?
ER是否更有效地实现(类似于Extreme Gradient Boosting梯度提升)?从实际角度来看,差异重要吗?有实现它们的R包。是新的算法,不仅在效率方面,还是在某些其他方面,都克服了“通用”实现(R的RandomForest包)? 极端随机森林http://link.springer.com/article/10.1007%2Fs10994-006-6226-1

1
R平方值适合比较模型吗?
我正在尝试使用汽车分类广告站点上提供的价格和功能来确定预测汽车价格的最佳模型。 为此,我使用了scikit-learn库中的几个模型以及pybrain和Neurolab中的神经网络模型。到目前为止,我使用的方法是通过某些模型(机器学习算法)运行固定数量的数据,并在那里比较使用scikit-learn度量模块计算的值。R2R2R^2 是的好方法,来比较不同车型的性能?R2R2R^2 尽管我对诸如弹性网和随机森林之类的模型获得了令人满意的结果,但对于神经网络模型却获得了非常差的值,那么是评估神经网络的合适方法(或非线性方法)?R2R2R^2R2R2R^2



5
对于R中的随机森林分类,应该如何针对不平衡的班级规模进行调整?
我正在为我正在研究的项目探索不同的分类方法,并且对尝试“随机森林”感兴趣。我正在努力地进行自我教育,并感谢CV社区提供的任何帮助。 我已将数据分为训练/测试集。通过在R中使用随机森林进行实验(使用randomForest包),我遇到了麻烦,因为我的小班级误分类率很高。我已经阅读了有关随机森林在不平衡数据上的性能的文章,作者提出了两种使用随机森林时处理类不平衡的方法。 1.加权随机森林 2.平衡的随机森林 R软件包不允许对类进行加权(从R帮助论坛中,我已经阅读到classwt参数无法正常运行,并计划将其作为将来的错误修复程序),因此我可以选择选项2。我可以指定随机森林每次迭代从每个类中采样的对象数。 对于为随机森林设置相等的样本大小,我感到不安,因为我好像会丢失太多有关较大类的信息,从而导致将来的数据表现不佳。对较大类别进行下采样时,分类错误率有所提高,但是我想知道在随机森林中是否还有其他方法可以处理类别不平衡的情况?

2
虚拟变量的功能重要性
我试图了解如何获得已分解为虚拟变量的分类变量的功能重要性。我正在使用scikit-learn,它不像R或h2o那样为您处理分类变量。 如果将分类变量分解为虚拟变量,则该变量中每个类的功能重要性都不同。 我的问题是,将这些虚拟变量的重要性通过简单地求和重新组合为分类变量的重要性值是否有意义? 从《统计学习的要素》第368页开始: 变量的平方相对重要性XℓXℓX_{ℓ}是在所有的内部节点,例如平方改进它为之选择作为分割变量的总和 这使我认为,由于重要性值已经通过在每个节点上选择一个变量的总和来创建,因此我应该能够组合虚拟变量的变量重要性值以“恢复”分类变量的重要性。当然,我不希望它是完全正确的,但是无论如何这些值实际上都是准确的值,因为它们是通过随机过程找到的。 我已经编写了以下python代码(以jupyter格式)作为调查: import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib import animation, rc from sklearn.datasets import load_diabetes from sklearn.ensemble import RandomForestClassifier import re #%matplotlib inline from IPython.display import HTML from IPython.display import set_matplotlib_formats plt.rcParams['figure.autolayout'] = False plt.rcParams['figure.figsize'] = 10, …

2
具有多个输出的随机森林是否可能/可行?
随机森林(RF)是一种竞争性的数据建模/挖掘方法。 RF模型具有一个输出-输出/预测变量。 用RF建模多个输出的简单方法是为每个输出变量构造一个RF。因此,我们有N个独立的模型,并且在输出变量之间存在相关性的地方,我们将具有冗余/重复的模型结构。确实,这可能非常浪费。通常,更多的模型变量意味着更多的拟合模型(较少的泛化)。不知道这是否适用于此,但可能适用。 原则上我们可以有一个带有多个输出的RF。预测变量现在是一个向量(n元组)。现在,每个决策树中的决策节点都基于阈值向量拆分目标/预测向量集,我认为该阈值被视为n维空间中的一个平面,因此我们可以确定阈值的哪一侧向量每个目标向量都打开。 决策拆分每一侧的最佳预测值是为每一侧的向量计算的平均值(质心)。 在处理单个变量时找到最佳分割点很简单,而且计算速度快/效率高。对于n元组,我们无法找到最佳拆分(或者至少随着N的增加,它在计算上变得不可行),但是我们可以使用Monte Carlo类型方法(或Monte Carlo和Local的某种混合)找到接近最佳拆分梯度遍历)。 这真的行得通吗?也就是说,它是否可以仅映射训练对而不进行概括?此技术是否已经以其他名称存在? 您可能还需要考虑这与诸如限制玻尔兹曼机器(RBM)和深度信念网络之类的神经网络之间的关系。

2
随机森林的特征选择
我有一个主要包含财务变量(120个特征,4k个示例)的数据集,这些变量大多具有高度相关性且非常嘈杂(例如技术指标),因此我想选择最多约20-30个模型,供以后用于模型训练(二进制分类) - 增加减少)。 我当时正在考虑使用随机森林进行特征排名。递归使用它们是一个好主意吗?例如,假设在第一轮中,我丢掉最差的20%,第二次也丢掉,依此类推,直到获得所需数量的功能。我应该对RF使用交叉验证吗?(对我来说,不使用CV是很直观的,因为那已经是RF所做的事情了。) 另外,如果我使用随机森林,是否应该将它们用作二进制的分类器或实际增加/减少的回归变量,以获得功能的重要性? 顺便说一下,在特征选择之后,我想尝试的模型是:SVM,神经网络,局部加权回归和随机森林。我主要在Python中工作。


4
分类精度低,下一步该怎么办?
因此,我是ML领域的新手,因此尝试进行一些分类。我的目标是预测体育赛事的结果。我收集了一些历史数据,现在尝试训练分类器。我得到了大约1200个样本,其中有0.2个样本出于测试目的而拆分,其他样本则使用不同的分类器进行了网格搜索(包括交叉验证)。到目前为止,我已经尝试过使用线性,rbf和多项式内核以及随机森林的SVM。不幸的是,我无法获得显着大于0.5的精度(与随机选择类相同)。这是否意味着我无法预测如此复杂事件的结果?或者我可以获得至少0.7-0.8的精度?如果可行,那么接下来我应该考虑什么? 获取更多数据?(我最多可以将数据集放大5倍) 尝试其他分类器?(逻辑回归,kNN等) 重新评估我的功能集?有没有要分析的机器学习工具,哪些功能有意义,哪些没有?也许我应该减少功能集(目前我有12个功能)?

1
加权随机森林的R包?classwt选项?
我正在尝试使用随机森林来预测极端不平衡的数据集的结果(少数族裔比率仅为1%甚至更低)。因为传统的随机森林算法将总错误率降到最低,而不是特别注意少数类,所以它不能直接应用于不平衡数据。因此,我想为少数群体的错误分类分配高昂的成本(成本敏感型学习)。 我阅读了一些可以在R中使用选项classwt的资料randomForest,但我不知道如何使用它。我们还有其他替代randomForest功能吗?
16 r  random-forest 


3
`predict.randomForest`如何估计类概率?
randomForest使用时,包装如何估计班级概率predict(model, data, type = "prob")? 我当时使用参数来预测概率ranger来训练随机森林probability = T。ranger在文档中说: 与Malley等人一样,种植概率森林。(2012)。 我模拟了一些数据并尝试了两个软件包,并获得了截然不同的结果(请参见下面的代码) 因此,我知道它使用另一种技术(然后是游侠)来估计概率。但是哪一个呢? simulate_data <- function(n){ X <- data.frame(matrix(runif(n*10), ncol = 10)) Y <- data.frame(Y = rbinom(n, size = 1, prob = apply(X, 1, sum) %>% pnorm(mean = 5) ) %>% as.factor() ) dplyr::bind_cols(X, Y) } treino <- simulate_data(10000) teste <- simulate_data(10000) …

1
lmer模型使用哪种多重比较方法:lsmeans或glht?
我正在使用具有一个固定效果(条件)和两个随机效果(由于主题设计和配对而导致的参与者)的混合效果模型分析数据集。该模型是使用lme4包生成的exp.model<-lmer(outcome~condition+(1|participant)+(1|pair),data=exp)。 接下来,我针对没有固定效果(条件)的模型对该模型进行了似然比检验,结果有显着差异。我的数据集中有3个条件,因此我想进行多重比较,但不确定使用哪种方法。我在CrossValidated和其他论坛上发现了许多类似的问题,但我仍然很困惑。 据我所见,人们建议使用 1.该lsmeans包- lsmeans(exp.model,pairwise~condition)这给了我下面的输出: condition lsmean SE df lower.CL upper.CL Condition1 0.6538060 0.03272705 47.98 0.5880030 0.7196089 Condition2 0.7027413 0.03272705 47.98 0.6369384 0.7685443 Condition3 0.7580522 0.03272705 47.98 0.6922493 0.8238552 Confidence level used: 0.95 $contrasts contrast estimate SE df t.ratio p.value Condition1 - Condition2 -0.04893538 0.03813262 62.07 -1.283 0.4099 Condition1 - …

2
Out of Bag Error使得在随机森林中不需要CV吗?
我对随机森林很陌生。过去,我一直将拟合与测试的准确性与拟合与训练的准确性进行比较,以检测是否存在过度拟合。但是我在这里读到: “在随机森林中,不需要交叉验证或单独的测试集即可获得测试集误差的无偏估计。它是在运行期间内部估计的……” 上面的一小段可以在“ 袋外(oob)误差估计”部分找到。这个“袋外错误”概念对我来说是一个全新的概念,令人困惑的是我模型中的OOB错误是35%(或65%的准确度),但是,如果我对我的数据应用交叉验证(只是一个简单的保留)方法),然后将拟合与测试与拟合与训练进行比较,我分别获得65%的准确性和96%的准确性。根据我的经验,这被认为是过拟合,但OOB会保持35%的误差,就像我的拟合与测试误差一样。我过拟合吗?我是否应该甚至使用交叉验证来检查随机森林中的过度拟合? 简而言之,当我的拟合vs训练表明我过度拟合时,我不确定是否应该信任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.