タグ付けされた質問 「random-forest」

ランダムフォレストは、多くの決定木の出力の組み合わせに基づく機械学習手法です。

1
連続変数を予測するとき、決定木分割はどのように実装する必要がありますか?
私は実際にランダムフォレストの実装を書いていますが、質問は(RFに依存しない)決定木に固有のものだと思います。 したがって、コンテキストは、意思決定ツリーにノードを作成しており、予測変数とターゲット変数の両方が連続しているということです。ノードには、データを2つのセットに分割するための分割しきい値があり、各セットの平均ターゲット値に基づいて各サブセットの新しい予測を作成します。これは正しいアプローチですか? 私が尋ねる理由は、バイナリ変数を予測するとき、典型的な(正しい?)アプローチは、各サブセットのデータ行の平均を取らずにデータを0と1のサブセットに分割することだと思うからです。後続の分割はよりきめの細かいサブセットに分割され、各分割結果で平均を取得します(決定ツリーの下で)後続の分割はバイナリ変数ではなく連続変数に作用します(元の値ではなく残留誤差値に作用しているため)ターゲット)。 副次的な質問:2つのアプローチ(バイナリと連続)の違いは重要ですか?または、完全な決定木に対して実際に同じ結果が得られますか?

2
ランダムフォレストについて報告するトレーニングエラーの尺度
現在randomForest、R のパッケージを使用して分類問題にランダムフォレストを適合させていますが、これらのモデルのトレーニングエラーを報告する方法については不明です。 コマンドで取得した予測を使用して計算すると、トレーニングエラーは0%に近くなります。 predict(model, data=X_train) X_trainトレーニングデータはどこにありますか。 関連する質問への回答では、ランダムフォレストのトレーニングエラーメトリックとしてout-of-bag(OOB)トレーニングエラーを使用する必要があることを読みました。この数量は、コマンドで取得した予測から計算されます。 predict(model) この場合、OOBトレーニングエラーは平均10 CVテストエラーである11%にはるかに近くなります。 不思議なんだけど: ランダムフォレストのトレーニングエラーの尺度としてOOBトレーニングエラーを報告することは一般に受け入れられていますか? 従来のトレーニングエラーの測定値が人為的に低いというのは本当ですか? 従来のトレーニングエラーの測定値が人為的に低い場合、RFが過適合であるかどうかを確認するために2つの測定値を比較できますか?

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?
1つの固定効果(条件)と2つのランダム効果(被験者内のデザインとペアによる参加者)を含む混合効果モデルを使用して、データセットを分析しています。モデルは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 - …

1
ランダムフォレストに相互作用用語を含める
応答Yと予測子X1、....、Xnがあるとします。X1、...、Xnの線形モデルを介してYを近似しようとした場合、YとX1、...、Xnの間の真の関係が線形ではなかったため、 Xを何らかの方法で変換してからモデルを近似することによりモデルを修正します。さらに、X1、...、XNが他の機能とは無関係にyに影響を与えなかった場合、相互作用項x1 * x3またはx1 * x4 * x7を含めることでモデルを改善できる可能性がありますまたは同種のもの。したがって、線形の場合、相互作用項は、応答と特徴間の非線形性または独立性違反を修正することにより価値をもたらす可能性があります。 ただし、ランダムフォレストはこれらの仮定を実際に行いません。ランダムフォレストを近似するときに相互作用用語を含めることは重要ですか?または、個々の用語を含めて適切なパラメーターを選択するだけで、ランダムフォレストがこれらの関係をキャプチャできるようになりますか?

2
scikit-learnブートストラップ関数がテストセットをリサンプルするのはなぜですか?
モデルの評価にブートストラップを使用するとき、私は常に、out-of-bagのサンプルがテストセットとして直接使用されると思っていました。ただし、これは非推奨の scikit-learnBootstrapアプローチの場合には当てはまらないようです。これは、out-of-bagデータサブセットからの置き換えで描画からテストセットを構築しているようです。これの背後にある統計的推論は何ですか?この手法が、out-of-bag-sampleで評価するよりも優れている、またはその逆の特定のシナリオはありますか?

1
ランダムフォレストの後継に値するバギングアルゴリズムはどれですか?
アルゴリズムをブーストするために、それらはかなり進化したと言えます。1995年の初めにAdaBoostが導入され、しばらくしてからGradient Boosting Machine(GBM)が導入されました。最近、2015年頃にXGBoostが導入されました。これは正確で、オーバーフィットを処理し、複数のKaggleコンテストの勝者になりました。2017年にMicrosoftによって導入されたLightGBMは、XGBoostと比較して大幅に短いトレーニング時間を提供します。また、カテゴリ機能を処理するために、YandexによってCatBoostが導入されました。 ランダムフォレストは2000年代初頭に導入されましたが、それにふさわしい後継者はいましたか?ランダムフォレストよりも優れたバギングアルゴリズムが存在すれば(実際に簡単に適用できます)、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つのカテゴリを区別するために、ランダムフォレストで分類モデルをトレーニングしています。私のトランザクションデータには、約60k +の観測値と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の使用
次のプロセスを使用してランダムフォレストを作成します。 情報ゲインを使用して分割を決定し、データとフィーチャのランダムサンプルでツリーを構築します リーフノードが定義済みの深さを超えている場合、または任意の分割の結果、リーフカウントが定義済みの最小値よりも少ない場合、リーフノードを終了します。 各ツリーにクラスラベルを割り当てるのではなく、リーフノードのクラスの割合を割り当てます 事前定義された数が構築された後、ツリーの構築を停止します これは、2つの方法で従来のランダムフォレストプロセスに対抗します。1つは、クラスラベルではなく比率を割り当てる枝刈りされたツリーを使用します。2つ目は、停止基準は、アウトオブバッグエラーの推定値ではなく、事前に決定されたツリー数です。 私の質問はこれです: N個のツリーを出力する上記のプロセスの場合、ロジスティック回帰とLASSO選択を使用してモデルを近似できますか?誰もがランダムフォレスト分類器をフィッティングし、ロジスティックLASSOで後処理した経験がありますか? ISLEフレームワークでは、分類問題ではなく、回帰問題の後処理ステップとしてLASSOを使用することに言及しています。さらに、「ランダムな森のなげなわ」をグーグルで検索しても、役に立つ結果は得られません。

1
RandomForest-MDSプロットの解釈
randomForestを使用して、8つの変数(さまざまな体の姿勢と動き)に基づいて6つの動物の行動(たとえば、立ち、歩き、水泳など)を分類しました。 randomForestパッケージのMDSplotはこの出力を提供し、結果の解釈に問題があります。私は同じデータでPCAを実行し、PC1とPC2のすべてのクラス間で既に良好な分離を得ましたが、ここではDim1とDim2は3つの動作を分離しているようです。これは、これらの3つの動作が他のすべての動作よりも非類似であることを意味します(したがって、MDSは変数間の最大の非類似性を見つけようとしますが、必ずしも最初のステップですべての変数が一致するわけではありません)?3つのクラスターの配置(Dim1やDim2など)は何を示していますか?私はRIが初めてなので、このプロットに凡例をプロットするのにも問題があります(ただし、さまざまな色が何を意味するかはわかりますが)。どうもありがとう!! RandomForestにClassCenter関数で作成したプロットを追加します。この関数は、プロトタイプのプロットに近接行列(MDSプロットと同じ)も使用します。しかし、6つの異なる動作のデータポイントを見るだけでは、なぜ近接行列がプロトタイプをプロットするのか理解できません。また、虹彩データを使用して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つの予測子がそれに続きます。2つの最良の予測変数をxとyとしてプロットしました。

2
選択したフィーチャの数を減らすと、エラーのランダムフォレストOOB推定が改善されるのはなぜですか?
ランダムフォレストアルゴリズムを、数千の特徴を持つ2つの既知のグループに分割されたマイクロアレイデータセットの分類子として適用しています。最初の実行後、機能の重要性を確認し、5、10、および20の最も重要な機能を使用してツリーアルゴリズムを再度実行します。 すべての機能、トップ10および20について、エラー率のOOB推定値は1.19%であることがわかりましたが、トップ5の機能については0%です。 これは私には直観に反しているように思えるので、何かを見逃しているのか、間違ったメトリックを使用しているのかを説明できるかどうか疑問に思っていました。 ntree = 1000、nodesize = 1、mtry = sqrt(n)でRのrandomForestパッケージを使用しています

3
R:gbmとRandomForestの部分依存プロットには何が見えますか?
実際、部分依存プロットで何を表示できるか理解できたと思っていましたが、非常に単純な仮説例を使用すると、かなり困惑しました。コードの次のチャンクに私は、3つの独立変数(生成、B、C)と1つの従属変数(Y付き)Cと密接な直線関係を示すYをしながら、そして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, …

5
ランダムフォレストおよび決定木アルゴリズム
ランダムフォレストは、バギングの概念に従う決定木の集合です。ある決定木から次の決定木に移動すると、最後の決定木で学習した情報は次の決定木にどのように進みますか? 私の理解では、すべての決定木に対して作成され、次の決定木が誤分類されたエラーから学習を開始する前にロードされる訓練されたモデルのようなものは何もないからです。 それでは、どのように機能しますか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.