Questions tagged «random-forest»

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

1
随机森林能否比MNIST上的2.8%测试误差好得多?
我还没有发现在随机森林的应用MNIST,CIFAR,STL-10等任何文学,所以我想我会尝试将其与排列不变 MNIST自己。 在R中,我尝试: randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500) 运行了2个小时,测试错误为2.8%。 我也试过scikit学习,与 RandomForestClassifier(n_estimators=2000, max_features="auto", max_depth=None) 70分钟后,我得到了2.9%的测试错误,但是当n_estimators = 200时,仅7分钟后我得到了2.8%的测试错误。 使用OpenCV,我尝试了 rf.train(images.reshape(-1, 28**2), cv2.CV_ROW_SAMPLE, labels.astype('int')) 运行了6.5分钟,rf用于预测给出了15%的测试误差。我不知道它训练了多少棵树,因为它们对Random Forests的Python绑定似乎忽略了该params参数,至少在版本2.3.1中如此。我也无法弄清楚如何讲清楚OpenCV的,我想解决一个分类问题,而不是回归-我有我的怀疑,因为替换astype('int')用astype('float32')的结果相同。 在神经网络中,对于不变排列的 MNIST基准,目前的技术水平是0.8%的测试错误,尽管在一个CPU上训练可能要花费2个小时以上。 是否有可能比使用随机森林的MNIST上的2.8%测试错误好得多?我认为普遍的共识是随机森林通常至少与内核SVM一样好,我相信它可以得到1.4%的测试错误。


1
R线性回归分类变量“隐藏”值
这只是我多次遇到的示例,因此我没有任何示例数据。在R中运行线性回归模型: a.lm = lm(Y ~ x1 + x2) x1是一个连续变量。x2是分类的,具有三个值,例如“低”,“中”和“高”。但是,R给出的输出将类似于: summary(a.lm) Estimate Std. Error t value Pr(>|t|) (Intercept) 0.521 0.20 1.446 0.19 x1 -0.61 0.11 1.451 0.17 x2Low -0.78 0.22 -2.34 0.005 x2Medium -0.56 0.45 -2.34 0.005 我知道R在这种因素(x2是一个因素)上引入了某种虚拟编码。我只是想知道,如何解释x2“高”值?例如,x2在此处给出的示例中,“ High” 对响应变量有什么影响? 我在其他地方(例如这里)已经看到了这样的示例,但是还没有找到我能理解的解释。
10 r  regression  categorical-data  regression-coefficients  categorical-encoding  machine-learning  random-forest  anova  spss  r  self-study  bootstrap  monte-carlo  r  multiple-regression  partitioning  neural-networks  normalization  machine-learning  svm  kernel-trick  self-study  survival  cox-model  repeated-measures  survey  likert  correlation  variance  sampling  meta-analysis  anova  independence  sample  assumptions  bayesian  covariance  r  regression  time-series  mathematical-statistics  graphical-model  machine-learning  linear-model  kernel-trick  linear-algebra  self-study  moments  function  correlation  spss  probability  confidence-interval  sampling  mean  population  r  generalized-linear-model  prediction  offset  data-visualization  clustering  sas  cart  binning  sas  logistic  causality  regression  self-study  standard-error  r  distributions  r  regression  time-series  multiple-regression  python  chi-squared  independence  sample  clustering  data-mining  rapidminer  probability  stochastic-processes  clustering  binary-data  dimensionality-reduction  svd  correspondence-analysis  data-visualization  excel  c#  hypothesis-testing  econometrics  survey  rating  composite  regression  least-squares  mcmc  markov-process  kullback-leibler  convergence  predictive-models  r  regression  anova  confidence-interval  survival  cox-model  hazard  normal-distribution  autoregressive  mixed-model  r  mixed-model  sas  hypothesis-testing  mediation  interaction 

2
调查人口之间的差异
假设我们有两个样本:A和B。假设这些人口是由个体组成的,我们选择根据特征来描述个体。这些功能中有些是分类的(例如,它们开车上班吗?),有些是数字的(例如,它们的高度)。我们称这些功能为:。我们收集了数百个这样的功能(例如n = 200),为简单起见,我们假设所有个人都没有错误也没有噪音。X1个… XñX1…XnX_1 \ldots X_n 我们假设两个人口是不同的。我们的目标是回答以下两个问题: 它们实际上有很大不同吗? 它们之间有何显着不同? 决策树(例如,随机森林)和线性回归分析等方法可以提供帮助。例如,可以查看随机森林中的要素重要性或线性回归中的拟合系数,以了解可以区分这些类别的要素,并探索要素与种群之间的关系。 在走这条路之前,我想先了解一下我的选择,什么是好做法以及现代与坏做法。请注意,我的目的不是预测本身,而是测试并发现组之间的任何重大差异。 解决该问题的一些原则方法是什么? 这是我的一些担忧: 线性回归分析之类的方法可能无法完全回答(2),对吧?例如,一次拟合可以帮助您找到一些差异,但不是所有明显的差异。例如,多重共线性可能使我们无法找到所有特征在组之间的变化方式(至少在一次拟合中)。出于同样的原因,我希望方差分析也无法提供(2)的完整答案。 尚不清楚预测方法将如何回答(1)。例如,我们应该最小化什么分类/预测损失函数?而且一旦适应后,我们如何测试两组之间是否存在显着差异?最后,我担心我得到的答案(1)可能取决于我使用的特定分类模型集。


2
为回归中的最新观察结果分配更多权重
如何为R中的最新观测值分配更多权重? 我认为这是一个常见的问题或愿望,但是我很难弄清楚该如何实现。我试图对此进行大量搜索,但是我找不到一个很好的实际例子。 在我的示例中,随着时间的推移,我将拥有一个大型数据集。我想说的是对最近的数据行进行某种指数加权。因此,我将具有某种指数函数,即2015年的观测值对训练模型比_2012年的观测值更重要。 我的数据集变量包含分类值和数字值的混合,而我的目标是一个数值-如果重要的话。 我想使用GBM / Random Forest等模型进行测试/尝试,最好在CARET软件包中进行测试。 更新问题 我很欣赏下面给出的关于如何按两点之间的日期距离以指数方式衰减权重的响应。 但是,当涉及到在插入符号中训练此模型时,权重因素又如何精确计算呢?每个训练行中的权重值是将来某个点与该点历史发生之间的距离。 权重是否仅在预测期间起作用?因为如果它们在训练过程中发挥作用,那会不会引起各种问题,因为各种交叉折叠的权重都不同,试图预测可能早于它的某个时间点?

2
袋外误差估计是否可以增强?
在随机森林中,每棵树都是在数据的唯一Boostrap样本上并行生长的。由于预计每个Bo​​ostrap样本将包含约63%的独特观测值,因此将约37%的观测值排除在外,可用于测试树。 现在,似乎在随机梯度增强中,还有一个类似于RF中的估计:OOBerrorOOBerrorOOB_{error} 如果bag.fraction设置为大于0(建议为0.5),则gbm将计算出袋装的预测性能改善估计值。它评估在选择下一个回归树时未使用的那些观察结果的偏差减少。 资料来源:Ridgeway(2007),第3.3节(第8页)。 我无法理解其工作方式/是否有效。说我要按顺序添加一棵树。我正在原始数据集的随机子样本上生长这棵树。我可以在不用于生长的观察结果上测试这棵树。同意 但是,由于Boosting是顺序的,所以我宁愿使用到目前为止构建的整个树序列来为那些遗漏的观察提供预测。而且,前面的许多树木很有可能已经看到了这些观察结果。因此,不是真的像RF一样在每个回合上都未对模型进行过测试,对吗? 那么,这怎么称为“袋外”误差估计呢?对我来说,似乎已经被发现了吗?

1
RandomForest-sklearn中的分类阈值
1)如何更改sklearn中RandomForest中的分类阈值(我认为默认值为0.5)? 2)如何在sklearn中进行欠采样? 3)我从RandomForest分类器中得到以下结果:[[1635 1297] [520 3624]] precision recall f1-score support class 0 0.76 0.56 0.64 2932 class 1 0.74 0.87 0.80 4144 平均/总计0.75 0.74 0.73 7076 首先,数据是不平衡的(0级为30%,1级为70%)。因此,我认为分类器更倾向于偏向于类别1,这意味着将类别从类别0转移到类别1(类别0的分类错误为1297,类别1的分类错误为520)。我怎样才能解决这个问题?缩减采样是否有帮助?或更改分类阈值? 更新:0级人口占40%,而1级人口占60%。但是,从0级到1级(1297)的漂移很高,而我希望它变低。

1
解释RandomForestRegressor的实际误差估计
我在数据上使用RandomForest回归器,可以看到oob得分为0.83。我不确定是怎么回事。我的意思是我的目标是10 ^ 7范围内的较高值。因此,如果是MSE,则应该更高。我不明白0.83在这里表示什么。 我正在使用sklearn工具包的python的RandomForestRegressor。 我做 模型= RandomForestRegressor(max_depth = 7,n_estimators = 100,oob_score = True,n_jobs = -1)model.fit(trainX,trainY) 然后我看到了model.oob_score_,得到的值像0.83809026152005295

1
当某些输入缺少值(NA)时使用randomForest(R)进行预测
我有一个很好的randomForest分类模型,可以在预测新案例类的应用程序中使用。新案例不可避免地缺少价值。预测不适用于NA。那我该怎么办呢? data(iris) # create first the new case with missing values na.row<-45 na.col<-c(3,5) case.na<-iris[na.row,] case.na[,na.col]<-NA iris.rf <- randomForest(Species ~ ., data=iris[-na.row,]) # print(iris.rf) myrf.pred <- predict(iris.rf, case.na[-5], type="response") myrf.pred [1] <NA> 我试过了missForest。我将原始数据和新案例结合在一起missForest,与进行了比较,并在新案例中获得了NA的估算值。虽然计算量太大。 data.imp <- missForest(data.with.na) 但是必须有一种方法可以使用rf-model来预测缺少值的新情况,对吗?

1
如何比较观察到的事件与预期的事件?
假设我有一个频率为4个可能的事件的样本: Event1 - 5 E2 - 1 E3 - 0 E4 - 12 并且我具有发生事件的预期概率: p1 - 0.2 p2 - 0.1 p3 - 0.1 p4 - 0.6 利用我四个事件的观测频率之和(18),我可以计算事件的预期频率,对吗? expectedE1 - 18 * 0.2 = 3.6 expectedE2 - 18 * 0.1 = 1.8 expectedE1 - 18 * 0.1 = 1.8 expectedE1 - …
9 r  statistical-significance  chi-squared  multivariate-analysis  exponential  joint-distribution  statistical-significance  self-study  standard-deviation  probability  normal-distribution  spss  interpretation  assumptions  cox-model  reporting  cox-model  statistical-significance  reliability  method-comparison  classification  boosting  ensemble  adaboost  confidence-interval  cross-validation  prediction  prediction-interval  regression  machine-learning  svm  regularization  regression  sampling  survey  probit  matlab  feature-selection  information-theory  mutual-information  time-series  forecasting  simulation  classification  boosting  ensemble  adaboost  normal-distribution  multivariate-analysis  covariance  gini  clustering  text-mining  distance-functions  information-retrieval  similarities  regression  logistic  stata  group-differences  r  anova  confidence-interval  repeated-measures  r  logistic  lme4-nlme  inference  fiducial  kalman-filter  classification  discriminant-analysis  linear-algebra  computing  statistical-significance  time-series  panel-data  missing-data  uncertainty  probability  multivariate-analysis  r  classification  spss  k-means  discriminant-analysis  poisson-distribution  average  r  random-forest  importance  probability  conditional-probability  distributions  standard-deviation  time-series  machine-learning  online  forecasting  r  pca  dataset  data-visualization  bayes  distributions  mathematical-statistics  degrees-of-freedom 

3
随机森林回归中依赖于响应分布的偏差
我正在使用R(2.1.3版,4.6-2版的ForestForest)中的randomForest软件包进行回归,并注意到我的结果存在明显偏差:预测误差取决于响应变量的值。高值被低估,而低值被高估。起初,我怀疑这是我的数据的结果,但是以下简单示例表明这是随机森林算法所固有的: n = 1000; x1 = rnorm(n, mean = 0, sd = 1) response = x1 predictors = data.frame(x1=x1) rf = randomForest(x=predictors, y=response) error = response-predict(rf, predictors) plot(x1, error) 我怀疑偏差取决于响应的分布,例如,如果x1是均匀分布的,则没有偏差;如果x1是指数分布,则偏差是单边的。本质上,正态分布尾部的响应值是异常值。模型很难预测离群值也就不足为奇了。在randomForest的情况下,来自分布尾部的极高幅度的响应值不太可能最终出现在末端叶片中,并且其效果将在集合平均中被淘汰。 请注意,我尝试在前面的示例“ R线性回归尾部mtry中的RandomForest”中捕获此效果。这是一个不好的例子。如果以上示例中的偏差确实是该算法固有的,则可以得出这样的偏差校正值:给定一个正试图预测的响应分布,从而可以进行更准确的预测。 基于树的方法(例如随机森林)是否受到响应分布偏差的影响?如果是这样,这是统计界先前所知的,通常如何进行校正(例如,使用偏倚模型的残差作为输入的第二个模型)? 校正依赖于响应的偏差很困难,因为从本质上来说,响应是未知的。不幸的是,估计/预测响应通常与偏见没有相同的关系。

2
混合模型的参数,半参数和非参数引导
接下来的嫁接摘自本文。我是新手,要引导并尝试为带有R boot包的线性混合模型实现参数,半参数和非参数自举。 R代码 这是我的R代码: library(SASmixed) library(lme4) library(boot) fm1Cult <- lmer(drywt ~ Inoc + Cult + (1|Block) + (1|Cult), data=Cultivation) fixef(fm1Cult) boot.fn <- function(data, indices){ data <- data[indices, ] mod <- lmer(drywt ~ Inoc + Cult + (1|Block) + (1|Cult), data=data) fixef(mod) } set.seed(12345) Out <- boot(data=Cultivation, statistic=boot.fn, R=99) Out 问题 …
9 r  mixed-model  bootstrap  central-limit-theorem  stable-distribution  time-series  hypothesis-testing  markov-process  r  correlation  categorical-data  association-measure  meta-analysis  r  anova  confidence-interval  lm  r  bayesian  multilevel-analysis  logit  regression  logistic  least-squares  eda  regression  notation  distributions  random-variable  expected-value  distributions  markov-process  hidden-markov-model  r  variance  group-differences  microarray  r  descriptive-statistics  machine-learning  references  r  regression  r  categorical-data  random-forest  data-transformation  data-visualization  interactive-visualization  binomial  beta-distribution  time-series  forecasting  logistic  arima  beta-regression  r  time-series  seasonality  large-data  unevenly-spaced-time-series  correlation  statistical-significance  normalization  population  group-differences  demography 

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.