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

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

1
Kを大きく選択すると交差検定スコアが低下するのはなぜですか?
ボストン住宅データセットとRandomForestRegressor(デフォルトパラメータ付きの)scikit-learnで遊んでみて、奇妙なことに気付きました。フォールドの数を10を超えて増やすと、平均クロス検証スコアが減少しました。私のクロス検証戦略は次のとおりです。 cv_met = ShuffleSplit(n_splits=k, test_size=1/k) scores = cross_val_score(est, X, y, cv=cv_met) num_cvs変化したところ… 。k-fold CVのトレイン/テスト分割サイズの動作をミラーリングtest_sizeする1/num_cvsように設定しました。基本的に、k倍の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 p r i o r(T r e e )を追加します期間。P(Tr e e | D a t a )∝ P(D a t a | Tr e e )P(Tree|Data)αP(Data|Tree)P(Tree|Data) \propto P(Data|Tree)PP R I O R(Tr e e )Ppr私or(Tree)P_{prior}(Tree) ランダムなステップを選択してツリーを変更し、尤度基づいて選択します。P(Tr e e | D A T A )P(Tree|Data)P(Tree|Data) Nステップごとに、現在のツリーのコピーを保存します 大きなN * …

2
ランダムフォレストモデルからの予測を説明する方法はありますか?
(RのrandomForestパッケージを使用した)ランダムフォレストに基づく予測分類モデルがあるとします。エンドユーザーが予測を生成するアイテムを指定できるように設定し、分類の可能性を出力します。これまでのところ、問題ありません。 しかし、変数の重要度のグラフのようなものを出力できることは有用/クールですが、トレーニングセットではなく、予測される特定のアイテムに対してです。何かのようなもの: アイテムXは犬であると予測されます(73%の確率)。 理由: 脚= 4 呼吸=悪い 毛皮=短い 食べ物=厄介な あなたはポイントを取得します。訓練されたランダムフォレストからこの情報を抽出する標準的な、または少なくとも正当な方法はありますか?もしそうなら、randomForestパッケージに対してこれを行うコードを誰かが持っていますか?

2
バギングされたツリー/ランダムフォレストツリーは、単一の決定ツリーよりもバイアスが高いのはなぜですか?
完全に成長した決定木(つまり、枝刈りされていない決定木)を考えると、分散が大きく、バイアスが低くなります。 バギングおよびランダムフォレストは、これらの高分散モデルを使用し、分散を減らして予測精度を高めるためにそれらを集約します。バギングフォレストとランダムフォレストはどちらもブートストラップサンプリングを使用します。「統計学習の要素」で説明されているように、これにより単一ツリーのバイアスが増加します。 さらに、ランダムフォレスト法では、各ノードで分割できる変数が制限されるため、単一のランダムフォレストツリーのバイアスがさらに大きくなります。 したがって、予測精度が向上するのは、バギングおよびランダムフォレストの単一ツリーのバイアスの増加が分散の減少を「過度に」超えていない場合のみです。 これにより、次の2つの質問が生じます。1)ブートストラップサンプリングを使用すると、(ほとんどの場合)ブートストラップサンプルに同じ観察結果がいくつかあることを知っています。しかし、なぜこれがバギング/ランダムフォレストの個々の木のバイアスの増加につながるのでしょうか。2)さらに、分割ごとに分割できる変数の制限により、ランダムフォレスト内の個々のツリーでバイアスが高くなるのはなぜですか?


1
ランダムフォレストアルゴリズムステップの背後にある動機
ランダムフォレストを構築するためによく知っている方法は次のとおりです(http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htmから) フォレスト内にツリーを構築するには、次のようにします。 サイズNのサンプルをブートストラップします。ここで、Nはトレーニングセットのサイズです。このブートストラップサンプルを、このツリーのトレーニングセットとして使用します。 ツリーの各ノードで、M個の特徴のm個をランダムに選択します。分割するこれらのm個の特徴の中から最適なものを選択します。(ここで、mはランダムフォレストのパラメーターです) 各ツリーを可能な限り最大に成長させます-つまり剪定はしません。 このアルゴリズムは手順レベルで意味があり、確かに良い結果が得られますが、手順1、2、3の背後にある理論的な動機は何かはわかりません。誰かがこの手順を思いついた動機とその理由を説明できますか?うまくいく? 例:なぜステップ1を実行する必要があるのですか?通常の分散減少の目的でブートストラップしているようには見えません。

1
順序付けされていないカテゴリカル予測子変数のレベル数を減らす
SVM、ランダムフォレスト、その他の分類器などの分類器をトレーニングしたい。データセットの特徴の1つは、1000レベルのカテゴリ変数です。この変数のレベル数を減らす最善の方法は何ですか。Rで呼び出された関数があるcombine.levels()にHmiscのまれなレベルを組み合わせたパッケージが、私は他の提案を探していました。

1
Rの各予測の回帰の信頼スコア(ランダムフォレスト/ XGBoostを使用)を計算する方法は?
ランダムフォレストやExtreme Gradient Boosting(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)) } コード出力は信頼区間のみを提供します。 …

1
ランダムフォレストのリグレッサまたは分類子を選択する必要がありますか?
ランダムフォレストによるバイナリターゲットクラスをデータセットに適合させます。Pythonでは、randomforestclassifierまたはrandomforestregressorのいずれかでそれを行うことができます。 randomforestclassifierから直接分類を取得することも、randomforestregressorを最初に実行して推定スコアのセット(連続値)を取得することもできます。次に、スコアのセットから予測クラスを導出するためのカットオフ値を見つけることができます。どちらの方法でも同じ目標を達成できます(つまり、テストデータのクラスを予測します)。 それも観察できます randomforestclassifier.predict_proba(X_test)[:,1]) とは違う randomforestregressor.predict(X_test) だから私は両方の方法が有効であることを確認したいのですが、ランダムフォレストアプリケーションではどちらが良いですか?

1
ランダムフォレストの部分依存プロットのy軸の意味
私はRandomForestRパッケージを使用していますが、部分依存プロットのY軸の値を解釈する方法に混乱しています。ヘルプドキュメントは、プロットが「クラス確率に対する変数の限界効果のグラフィカルな描写」であると述べています。しかし、y軸が正確に何を表すかについては、まだ混乱しています。 特に、負の値はどういう意味ですか? クラスの正確な予測に悪影響を与えるとはどういう意味ですか? そして、これらの数値から最も重要な特徴は何ですか、それは最大値、トレンドの形などですか? 部分プロットを他の変数の部分プロットと比較できますか? これらのプロットは、Maxent(分布モデリングソフトウェア)で作成された応答曲線とどのように比較できますか?

2
ランダムフォレストのマルチクラスよりもランダムフォレストの1対すべてを使用した方がパフォーマンスが良いですか?
私は9つの可能なラベルを持つマルチクラス問題に取り組んでいます。そのため、約50.000の例とそれぞれ約200の特徴で構成されるデータセットがあります。各例は1つのクラスにのみ属することができます。データは、異なるラベル間でかなりバランスが取れています。 その堅牢性とスケーラビリティを考慮して、学習方法としてランダムフォレスト(1,000本の木の集合)を使用することにしました。このデータセットが与えられたモデルのパフォーマンス精度を評価するために、私はstratified5Fold交差検証を使用しました(私はscikit-learn 0.18を使用しています)。 ランダムフォレストは本質的にマルチクラスデータセットを処理できるため、指定されたデータセットで直接使用し、79.5 0.3の精度を得ました。私はまた、機能がより重要性、簡単属性から抽出することができる何か持っていた知ることに興味があったfeature_importances_でRandomForestClassifier scikitのを。ただし、データセットはバランスが取れており、予想通り、200のうち異なるクラスに寄与するフィーチャの数はほぼ同じであることを考えると、どのフィーチャが各クラスに最も寄与するかを特定できませんでした。±±\pm 結果として、私は同じランダムフォレストのセットアップを使用して、1対すべての戦略を採用しました(ところで、oneVsAll戦略を使用するときにデータの不均衡を考慮に入れるとコストに敏感です)。これにより、各クラスと残りの機能はより重要です。これについて私が得た結果は合理的です。さらに、この戦略を使用してモデルのパフォーマンスを確認したところ、88.7 0.2の精度が得られました。これは、マルチクラスのランダムフォレストがマルチクラスの性質を考慮してより適切に分類することを期待していたので、驚きました。±±\pm 私はこれで正しいですか?このような精度の違いはもっともらしいでしょうか?さらに、ランダムフォレスト自体がoneVsAll戦略などの「ハッキング」なしでマルチクラスの問題に取り組むことができるという条件で、上記の戦略はOKで公正に採用されていますか?

1
ランダムなフォレスト回帰でシードを設定して最高の精度を生み出すことは「公正」ですか?
私はsklを使用して構築されたランダムフォレスト回帰を持っていますが、ランダムシードを異なる値に設定すると異なる結果が得られることに注意します。 LOOCVを使用してどのシードが最適に機能するかを確認する場合、これは有効な方法ですか?

1
ランダムフォレストの結果が変動しやすいのはなぜですか?
2つのグループ間でサンプルを分類するランダムフォレストの機能をテストしようとしています。分類に使用される54のサンプルとさまざまな数の変数があります。 50kのツリーを使用している場合でも、out-of-bag(OOB)の見積もりが互いに5%も異なる場合があるのはなぜですか。これはブートストラップが役立つものですか?

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