問題タブ [random-forest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2997 参照

r - randomForestの重要度にはMeanDecreaseGiniのみが含まれます

私は2つのスクリプトを持っており、どちらもRでランダムフォレストを生成します。私の問題はそうではないことを示唆していますが、私が理解できる限り、同じ入力を持っています。それらの1つは、以下を含む重要度テーブルを返します

row.names importance.blue importance.red importance.MeanDecreaseAccuracy importance.MeanDecreaseGini

他の重要度テーブルには

これらの2つのフォレストの違いは何ですか。さらに重要なのは、同じ入力であると私が考えたものを考えると、違いの原因は何ですか。

(スクリプトは大きすぎてここに貼り付けることはできませんが、どちらも連続変数の束に基づいて因子を予測しようとしています)

0 投票する
1 に答える
1819 参照

r - 教師なし学習のための合成データの生成

ランダムフォレストで教師なし学習用のデータを用意したい。手順は次のとおりです。

  • データを取得し、すべての例に値 1 の属性「クラス」を追加します
  • 元のデータから合成データを生成します。
    • 元のデータ ビルドの例と同じ数の例はありませんが、次のようになります。
      • 元のデータのその属性のすべての値から新しい属性値を抽出する
      • すべての属性に対してそれを行い、それらを新しい例に結合します
  • 合成データ値 2 の属性「クラス」に割り当てます
  • 両方のデータを結合する

最終的には次のようになります。

私のRコードは次のようになります。

私が R にまったく慣れていないことはおそらく明らかですが、うまくいきます。ただ 1 つの問題があります。合成データの属性の型は、元のデータの型と同じではありません。元は数字だったのに、今は因数になっています。合成データの生成中に同じ型を保持するにはどうすればよいですか?

ありがとうございました!

Data1 (数値は係数になります):

構造体 (リスト (V2 = c(1.51793、1.51711、1.51645、1.51916、1.51131)、V3 = c(13.21、12.89、13.44、14.15、13.69)、V4 = c(3.48、3.62、3.61、0、3.2)、V5 = c(1.41, 1.57, 1.54, 2.09, 1.81), V6 = c(72.64, 72.96, 72.39, 72.74, 72.81), V7 = c(0.59, 0.61, 0.66, 0, 1.76 ), V8 = c(8.43, 8.11、8.03、10.88、5.43)、V9 = c(0、0、0、0、1.19)、V10 = c(0、0、0、0、0)、realClass = 構造体(c(1L、2L、2L) , 5L, 6L), .Label = c("1", "2", "3", "5", "6", "7"), クラス = "因子")), .Names = c(" V2"、"V3"、"V4"、"V5"、"V6"、"V7"、"V8"、"V9"、"V10"、"realClass")、row.names = c(27L, 138L, 77L、183L、186L)、クラス = "data.frame")

Data2 (要因は chrs になります):

structure(list(realClass = structure(c(2L, 2L, 2L, 1L, 2L), .Label = c("e", "p"), class = "factor"), V2 = 構造(c(6L, 3L, 4L, 6L, 6L), .Label = c("b", "c", "f", "k", "s", "x"), class = "factor"), V3 = 構造体( c(4L, 4L, 3L, 1L, 1L), .Label = c("f", "g", "s", "y"), class = "factor"), V4 = 構造体(c(5L, 5L, 5L, 3L, 4L), .Label = c("b", "c", "e", "g", "n", "p", "r", "u", "w", "y"), class = "factor"), V5 = structure(c(1L, 1L, 1L, 2L, 1L), .Label = c("f", "t" ), クラス = "factor"), V6 = 構造 (c(3L, 9L, 3L, 6L, 3L ), .ラベル = c("a", "c", "f", "l", "m", "n", "p", "s", "y" ), クラス = "因子"), V7 = structure(c(2L, 2L, 2L, 2L, 2L ), .Label = c("a", "f"), class = "factor"), V8 = 構造体(c(1L, 1L, 1L, 1L, 1L), .Label = c("c", "w"), class = "factor"), V9 = structure(c(2L, 2L, 2L, 1L, 1L), .Label = c("b", "n" ), class = "factor"), V10 = structure(c(1L, 1L, 1L, 10L, 4L), .Label = c("b", "e", "g", "h", "k"、"n"、"o"、"p"、"r"、"u"、"w"、"y")、クラス = "因子")、V11 = 構造 (c(2L, 2L, 2L、2L、1L)、.Label = c("e", "t"), class = "factor"), V12 = 構造体(c(NA, NA, NA, 1L, 1L), .Label = c("b", "c", "e", "r"), class = "factor"), V13 = 構造体(c(3L, 2L, 3L, 3L, 2L), .Label = c("f", "k", "s", "y"), class = "factor"), V14 = 構造体(c(3L, 3L, 2L, 3L, 2L), .Label = c("f", "k", "s", "y") , class = "factor"), V15 = structure(c(7L, 8L, 7L, 4L, 7L), .Label = c("b", "c", "e", "g", "n", "o", "p", "w", "y"), class = "factor"), V16 = 構造体(c(7L, 7L, 8L, 4L, 1L), .Label = c("b", "c"、"e"、"g", "n", "o", "p", "w", "y" ), class = "factor"), V17 = structure(c(1L, 1L, 1L, 1L, 1L ), . Label = "p", class = "factor"), V18 = structure(c(3L, 3L, 3L, 3L, 3L), .Label = c("n", "o", "w", "y") ), class = "factor"), V19 = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("n", "o", "t"), class = "factor") , V20 = 構造体(c(1L, 1L, 1L, 5L, 3L), .Label = c("e", "f", "l", "n", "p"), class = "factor") , V21 = 構造体(c(8L, 8L, 8L, 4L, 2L), .Label = c("b", "h", "k", "n", "o", "r", "u" 、「わ」、"y"), class = "factor"), V22 = structure(c(5L, 5L, 5L, 5L, 6L), .Label = c("a", "c", "n", "s", "v", "y"), class = "factor"), V23 = 構造体(c(3L, 3L, 5L, 1L, 2L), .Label = c("d", "g", "l", "m", "p", "u", "w"), class = "factor")), .Names = c("realClass", "V2", "V3", "V4", "V5", 「V6」、「V7」、「V8」、「V9」、「V10」、「V11」、「V12」、「V13」、「V14」、「V15」、「V16」、「V17」、「V18」 "、"V19"、"V20"、"V21"、"V22"、"V23")、row.names = c(4105L、6207L、6696L、2736L、3756L)、クラス = "data.frame")

0 投票する
1 に答える
7992 参照

r - Does R randomForest's rfcv method actually say which features it selected, or not?

I would like to use rfcv to cull the unimportant variables from a data set before creating a final random forest with more trees (please correct and inform me if that's not the way to use this function). For example,

In this case, if I understand the result correctly, it seems that we can remove three variables without negative side effects. However,

None of these slots tells me what those first three variables that can be harmlessly removed from the dataset actually were.

0 投票する
1 に答える
4931 参照

r - チューニングと交差検証によるランダム フォレストの最適化

私は大規模なデータセットを扱っているので、余分な変数を削除し、ブランチごとに最適な m 変数を調整したいと考えています。R には、rfcv と tuneRF という 2 つのメソッドがあり、これら 2 つのタスクを支援します。それらを組み合わせてパラメータを最適化しようとしています。

rfcv は、おおよそ次のように機能します。

現在、rfcv を次のように動作するように再コーディングしました。

もちろん、これにより実行時間が桁違いに増加します。私の質問は、これがどれほど必要か (おもちゃのデータセットを使用してアイデアを得るのが困難でした)、そして他の方法がはるかに短い時間で大まかに機能すると期待できるかどうかです。

0 投票する
0 に答える
809 参照

matlab - 同様の関数fitensembleで機能するため、Matlab TreeBagger Cost引数が機能しない

私の TreeBagger クラスと fitensemble (Bag メソッド) のコスト マトリックスは、どちらも[0 8;1 0]バイナリ分類用です。fitensemble の混同行列は、分類が高価なクラスに有利になる傾向があることを示しています ([100 0; 20 80]偽陰性を支持するように)。混同は次のようになります。[100 10; 10 80]コスト引数なし) しかし、TreeBagger では同じことは成り立ちません。TreeBagger コードを読んだところ、コストが各ツリー (この場合は classregtree) に直接渡されます。3 つのデータセットで試してみましたが、TreeBagger はコストを無視しているようです。コスト引数を省略しました。混同行列は、コストをまったく指定しない場合のようです。私のコードに問題がありますか、それとも TreeBagger ですか? (ところで、問題は混同行列の誤解ではなく、機能しません)。また、変数の重要性、データのクラスター、外れ値、およびコストがかかる TreeBagger に代わるものはありますか?

マイコード

機能しないツリーバッガー

機能するFITENSEMBLE

ご協力ありがとうございました。

0 投票する
1 に答える
2470 参照

machine-learning - scikit-learnRandomForestClassifierは「予期しない」結果を生成します

sk-learnのRandomForestClassifierを二項分類タスク(正と負の例)に使用しようとしています。私のトレーニングデータには、sklearn.datasetのload_svmlight_fileを使用してロードするSVM-light形式(スパースベクトル)の40の機能を備えた1.177.245の例が含まれています。'機能値'(1.177.245 * 40)のスパース行列と'ターゲットクラス'の1つの配列(1と0、そのうち1.177.245)を生成します。これが気になるかどうかはわかりませんが、trainingdataには3552のポジティブがあり、残りはすべてネガティブです。

sk-learnのRFCはスパース行列を受け入れないため、.toarray()を使用して、スパース行列を密な配列に変換します(そう言っているのであれば、機能がない場合は0がたくさんあります)。配列に変換する前後にマトリックスを印刷しましたが、問題はないようです。

分類器を開始してデータへの適合を開始すると、次のように時間がかかります。

(その出力は正しいですか?それらの963分は約2分半かかります...)

次に、joblib.dumpを使用してダンプします。再ロードすると:

そして、実際のトレーニングデータ(750.709の例で構成され、トレーニングデータとまったく同じ形式)でテストすると、「予期しない」結果が得られます。正確には; テストデータの例の1つだけがtrueとして分類されます。最初のトレーニングデータの半分でトレーニングし、残りの半分でテストすると、まったくポジティブになりません。

今、私は何が起こっているのかが間違っていると信じる理由はありません。それは私が奇妙な結果を得るということだけです。さらに、それはすべて非常に迅速に行われたと思います。比較することはおそらく不可能ですが、rt-rankを使用して同じデータでRFClassifierをトレーニングする(これも1500回の反復で、ただしコアの半分で)には12時間以上かかります...

何かが想定どおりに機能していないと信じる理由があるかどうか、誰かに教えてもらえますか?トレーニングデータのポジティブとネガティブの比率でしょうか?乾杯。

0 投票する
1 に答える
16946 参照

r - randomForestから分類するためのROC曲線

randomForest分類タスクにRプラットフォームのパッケージを使用しています。

ここで、kの範囲は0.1から0.9です。

ランダムフォレスト分類子からの出力があり、それをラベルと比較しました。したがって、9つのカットオフポイントについて、精度、MCC、感度、特異度などのパフォーマンス測定値があります。

ここで、ROC曲線をプロットし、ROC曲線の下の領域を取得して、パフォーマンスがどれほど優れているかを確認します。Rのパッケージのほとんど(ROCR、pROCなど)には予測とラベルが必要ですが、感度(TPR)と特異度(1-FPR)があります。

カットオフ方法がROC曲線を作成するのに正しいか信頼できるかどうか、誰かが私に提案できますか?TPRとFPRを使用してROC曲線と曲線下面積を取得する方法を知っていますか?

また、次のコマンドを使用してランダムフォレストをトレーニングしようとしました。このように、予測は継続的であり、RROCRpROCパッケージに受け入れられました。しかし、これが正しい方法であるかどうかはわかりません。誰かがこの方法について私に提案できますか?

私の問題を読んでくれてありがとう!私はこれのために長い間サーフィンをしてきました。あなたの提案/アドバイスをありがとう。

0 投票する
3 に答える
1849 参照

r - データフレームに読み込まずに大きなxdfファイルのランダムフォレスト

大きな(約10GB)xdf(レボリューションRフォーマット)ファイルでランダムフォレストを実行する方法はありますか?明らかに、rxReadXdfを試してデータフレームに変換することはできますが、私のマシンには8 GBのRAMしかなく、将来的にはさらに大きなデータセットを処理する可能性があります。たとえば、foreachループを使用して、クアッドコアマシンで1000本のツリーを実行したいと思います。

しかし、randomForestは「train」(xdf)ファイルを取り込むことができません。データフレームに読み込まずにxdfで直接ランダムフォレストを実行する方法はありますか?

乾杯、agsub

0 投票する
1 に答える
529 参照

r - 変数選択のためのRローリングランダムフォレスト

私は2008年以来、ユーロストックス50インデックスの毎日のOHLCデータセットを持っています。これは次のようになります。

TTRパッケージを使用していくつかの技術ルールを計算しました。したがって、私はそのようなより大きなデータセットを取得します:

各作業四半期について、最も重要な技術的ルールを知りたいと思います。パッケージにコード化されているランダムフォレスト-RIアルゴリズムをrandomForest使用し、ブレイマンの重要度の尺度を計算し(関数のおかげでimportance)、四半期ごとのサンプルの平均よりも重要度の尺度が可変である技術ルールを選択することにしました。 。最終的には、統計などを計算するために、全期間中の技術ルールの削減されたデータセットを取得したいと思います。

重要な技術的ルールの数は時間の経過とともに変化する可能性があることを考えると、最も重要な技術的ルールを含むアレイの次元は、四半期ごとに同じではありません。結果として、すべての値を1つのオブジェクトに入れることはできません。

すべての四半期データセットを保存する便利な方法はありますか?

ありがとう。

0 投票する
1 に答える
198 参照

r - R 特殊データ フレーム

昨日、この投稿で質問した質問に続いて、質問をしています。変数選択のためのランダム フォレスト

四半期ごとに、最も重要なテクニカル取引ルールを見つけることができました。これらの TTR の名前を入れるデータ フレームを作成しました。これで、四半期に 1 つの列ができました。

NA行の長さが異なることに対処するために追加しました。

さて、次のようなデータセットに戻りたいと思います:

私がやりたいのはNA、TTR が重要でない期間に を入れることです。たとえば、RSI2 TTR が第 1 四半期に有意ではないことが判明した場合、数値をNAs に置き換えたいと思いますが、RSI2 が第 5 四半期に有意である場合は数値を維持したいと思います。

最後に、最初のデータ フレームと同じ寸法のデータ フレームを取得する必要があります。

何か案が?ありがとう!