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

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

3
SVM以外に、どのアルゴリズムが機能のスケーリングを必要としますか?
RandomForest、DecisionTrees、NaiveBayes、SVM(kernel = linear and rbf)、KNN、LDA、XGBoostなどの多くのアルゴリズムを使用しています。SVMを除き、それらはすべて非常に高速でした。それは、機能のスケーリングを高速化する必要があることを知ったときです。それから、他のアルゴリズムにも同じことをすべきかと思い始めました。


1
モデルの比較にR 2乗値は適切ですか?
私は、自動車の広告サイトで利用可能な価格と機能を使用して、自動車の価格を予測するための最良のモデルを特定しようとしています。 このために、scikit-learnライブラリーのモデルと、pybrainとneurolabのニューラルネットワークモデルを使用しました。これまでに使用したアプローチは、いくつかのモデル(機械学習アルゴリズム)で一定量のデータを実行し、scikit-learnメトリックモジュールで計算されたR2R2R^2値を比較することです。 あるR2R2R^2異なるモデルの性能を比較するための良い方法は? エラスティックネットやランダムフォレストなどのモデルでは非常に許容できる結果が得られましたが、ニューラルネットワークモデルのR2R2R^2値は非常に低いので、R2R2R^2はニューラルネットワーク(または非線形手法)を評価するための適切な方法ですか?

2
ダミー変数による機能の重要性
ダミー変数に分解されたカテゴリー変数の機能の重要性をどのように取得できるかを理解しようとしています。Rまたはh2oのようにカテゴリ変数を処理しないscikit-learnを使用しています。 カテゴリ変数をダミー変数に分解すると、その変数のクラスごとに個別の機能の重要性が得られます。 私の質問は、それらを単純に合計することによって、それらのダミー変数の重要度をカテゴリー変数の重要度値に再結合することは理にかなっていますか? 統計学習の要素の368ページから: 変数相対的な重要度の2乗は、それが分割変数として選択されたすべての内部ノードに対する改善の2乗の合計です。バツℓバツℓ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モデルには、出力/予測変数という1つの出力があります。 RFを使用して複数の出力をモデル化する単純なアプローチは、各出力変数に対してRFを構築することです。したがって、N個の独立したモデルがあり、出力変数間に相関がある場合、冗長/重複モデル構造になります。これは確かに非常に無駄です。また、一般的なルールとして、より多くのモデル変数は、よりオーバーフィットモデル(一般化が少ない)を意味します。ここでこれが当てはまるかどうかはわかりませんが、おそらく当てはまります。 原則として、複数の出力を持つRFを使用できます。予測変数はベクトル(nタプル)になりました。各決定木の決定ノードは、しきい値ベクトルに基づいてターゲット/予測ベクトルのセットを分割しています。このしきい値はn次元空間の平面であると考えられるため、しきい値のどちら側を決定できるかそれぞれのターゲットベクトルがオンになっています。 決定分割の各側の最適な予測値は、各側のベクトルに対して計算された平均(重心)です。 単一変数を操作するときに最適な分割点を見つけるのは簡単で、計算が高速/効率的です。nタプルの場合、最適な分割を見つけることはできません(または、少なくともNが増加すると計算上実行不可能になります)が、モンテカルロタイプの方法(またはモンテカルロとローカルのハイブリッドを使用して、ほぼ最適な分割を見つけることができます。勾配トラバーサル)。 これは実際に機能しますか?つまり、一般化せずにトレーニングペアをマッピングするだけですか?この手法はすでに別の名前で存在していますか? また、これが制限付きボルツマンマシン(RBM)やDeep Belief Networksなどのニューラルネットにどのように関連するかを検討することもできます。

2
ランダムフォレストを使用した機能選択
ほとんどが相関性が高く、非常にノイズが多い(たとえばテクニカルインジケーター)ほとんどが金融変数(120の機能、4 kの例)のデータセットがあるため、モデルトレーニング(バイナリ分類)で使用するために最大20-30を選択したいと思います-増加/減少)。 機能のランキングにランダムフォレストを使用することを考えていました。それらを再帰的に使用するのは良い考えですか?たとえば、最初のラウンドで最悪の20%をドロップし、2番目も同様に、目的の数の機能を取得するまで続けます。RFで相互検証を使用する必要がありますか?(CVを使用しないのは直感的です。なぜなら、CVはRFで既に行われていることだからです。) また、ランダムフォレストを使用する場合、機能の重要性を取得するために、実際の増加/減少のバイナリまたはリグレッサーの分類子として使用する必要がありますか? ちなみに、特徴選択後に試してみたいモデルは、SVM、ニューラルネット、局所加重回帰、ランダムフォレストです。私は主にPythonで働いています。


4
低い分類精度、次に何をすべきか?
だから、私はML分野の初心者であり、分類を試みます。私の目標は、スポーツイベントの結果を予測することです。いくつかの履歴データを収集し、分類器のトレーニングを試みました。約1200個のサンプルを取得しましたが、そのうちの0.2個はテスト目的で分割し、その他は異なる分類器を使用してグリッド検索(クロス検証を含む)に入れました。今のところ、線形カーネル、rbfカーネル、多項式カーネル、およびランダムフォレストを使用してSVMを試しました。残念ながら、0.5を大きく超える精度を得ることができません(クラスのランダム選択と同じです)。そのような複雑なイベントの結果を予測できないということですか?または、少なくとも0.7-0.8の精度を得ることができますか?実行可能であれば、次に何を検討する必要がありますか? より多くのデータを取得しますか?(データセットを最大5倍まで拡大できます) 別の分類器を試してみませんか?(ロジスティック回帰、kNNなど) 機能セットを再評価しますか?分析するMLツールはありますか?機能セットを減らす必要があるかもしれません(現在、12個の機能があります)。

5
Rのランダムフォレストを使用した分類では、クラスサイズの不均衡をどのように調整する必要がありますか?
現在取り組んでいるプロジェクトのさまざまな分類方法を調査しており、ランダムフォレストを試すことに興味があります。私は自分自身を教育しながら努力しているので、CVコミュニティから提供された助けに感謝します。 データをトレーニング/テストセットに分割しました。Rのランダムフォレストでの実験(randomForestパッケージを使用)から、小さなクラスの誤分類率が高いという問題がありました。不均衡なデータでのランダムフォレストのパフォーマンスに関するこの論文を読み、著者は、ランダムフォレストを使用する場合のクラスの不均衡に対処する2つの方法を提示しました。 1.重み付きランダムフォレスト 2.バランスのとれたランダムフォレスト Rパッケージはクラスの重み付けを許可していません(Rヘルプフォーラムから、classwtパラメーターが正しく実行されておらず、将来のバグ修正としてスケジュールされていることを読みました)ので、オプション2を残します。ランダムフォレストの反復ごとに各クラスからサンプリングされたオブジェクトの数。 ランダムフォレストのサンプルサイズを同じに設定するのは不安です。将来のデータでパフォーマンスが低下する大規模なクラスに関する情報を失いすぎると感じているからです。より大きなクラスをダウンサンプリングするときの誤分類率は改善することが示されていますが、ランダムフォレストで不均衡なクラスサイズに対処する他の方法があるかどうか疑問に思っていましたか?

1
重み付きランダムフォレストのRパッケージ?classwtオプション?
ランダムフォレストを使用して、極端に不均衡なデータセットの結果を予測しようとしています(マイノリティクラスの割合は約1%以下です)。従来のランダムフォレストアルゴリズムは、少数クラスに特別な注意を払うのではなく、全体的なエラー率を最小化するため、不均衡なデータには直接適用できません。したがって、マイノリティクラスの誤分類に高いコストを割り当てたいと思います(コストに敏感な学習)。 R のオプションclasswtを使用できるソースをいくつか読みましたがrandomForest、これの使用方法がわかりません。そして、機能に代わるものは他にありrandomForestますか?
16 r  random-forest 

2
ランダムフォレストでは、入力変数をスケーリングまたは中央揃えする必要がありますか?
入力変数の次元は異なります。一部の変数は10進数ですが、一部の変数は数百です。ランダムフォレストを使用する場合、データを無次元化するために、これらの入力変数を中央に置く(平均を引く)か、スケーリング(標準偏差で除算)することが不可欠ですか?

2
アウトオブバッグエラーにより、ランダムフォレストでCVが不要になりますか?
ランダムフォレストはかなり新しいです。過去に、私は常にオーバーフィットを検出するために、フィット対テストの精度とフィット対トレーニングを比較してきました。しかし、私はここでそれを読んだ: 「ランダムフォレストでは、テストセットエラーの公平な推定値を取得するために、相互検証または個別のテストセットは必要ありません。実行中に内部的に推定されます...」 上記の小さな段落は、out-of-bag(oob)エラー推定セクションにあります。このOut of Bag Errorの概念は私にとって全く新しいものであり、少し紛らわしいのは、モデルのOOBエラーが35%(または65%の精度)であることですが、データにクロス検証を適用すると方法)、フィットとテストの両方に対してフィットとテストを比較すると、それぞれ65%の精度と96%の精度が得られます。私の経験では、これは過剰適合と考えられているが、OOBはちょうど私のように35%の誤差を保持しているテスト対フィットエラー。オーバーフィッティングですか?ランダムフォレストで過剰適合をチェックするために相互検証を使用する必要さえありますか? 手短に言えば、フィット感とトレインがオーバーフィッティングであることを示しているときに、テストセットエラーの公平なエラーを得るためにOOBを信頼すべきかどうかはわかりません!

1
ブライマンのランダムフォレストは、情報ゲインまたはGiniインデックスを使用しますか?
ブライマンのランダムフォレスト(R randomForestパッケージのランダムフォレスト)が分割基準(属性選択の基準)情報ゲインまたはGiniインデックスとして使用するかどうかを知りたいのですが?私はhttp://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htmとRのrandomForestパッケージのドキュメントでそれを見つけようとしました。しかし、私が見つけた唯一のことは、Giniインデックスを使用できることです変数重要度計算。

1
子ノードのジニ減少とジニ不純物
ランダムフォレストのGini機能重要度測定に取り組んでいます。したがって、ノードの不純物のGini減少を計算する必要があります。ここに私がそうする方法があり、それは定義との矛盾につながり、私はどこかに間違っている必要があることを示唆しています... :) 二分木の場合、左と右の子の確率を考えると、ノード Gini不純性を計算できます。nnn i(n)=1−p2l−p2ri(n)=1−pl2−pr2 i(n) = 1 - p_l^2 - p_r^2 そして、Giniが減少します。 Δ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の減少を計算します。 私(left)i (r i g ht)i …

7
ランダムフォレストが過剰適合
scikits-learnでRandom Forest Regressionを使用しようとしています。問題は、非常に高いテストエラーが発生していることです。 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) フィッティングを改善するための可能な戦略は何ですか?基礎となるモデルを抽出するために他にできることはありますか?同じパターンを何度も繰り返した後、モデルが新しいデータに対して非常にひどく振る舞うのは信じがたいようです。このデータに合わせようとする希望はありますか?

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