ランダムフォレストが予測子の欠損値を処理しないのはなぜですか?


42

欠損値を処理しない理論的な理由は何ですか?勾配ブースティングマシン、回帰ツリーは欠損値を処理します。なぜランダムフォレストはそれをしないのですか?


3
それらはpartyRパッケージで処理されます。ここで一つのブログ記事:exegetic.biz/blog/2013/05/...
ステファン・ローラン

回答:


34

Gradient Boosting Treesは、CARTツリーを使用します(作成者が提案した標準セットアップ)。CARTツリーは、ランダムフォレストでも使用されます。@ user777が言ったことは、RFツリーは欠損値を、平均の代入、または大まかな平均/モード、近接に基づく平均/モードのいずれかによって処理するということです。これらの方法は、BreimanとCutlerによって提案され、RFに使用されます。これは、トレーニングセットの欠損値の著者からの参照です。

ただし、他のタイプの決定ツリーを使用してGBMまたはRFを構築できます。CARTの通常の代替品は、Quinlanが提案したC4.5です。C4.5では、欠損値はデータセットで置き換えられません。代わりに、計算された不純物関数は、不純物スコアに欠損値の比率をペナルティすることにより欠損値を考慮します。テストでは、欠損値のあるテストを含むノードで評価を設定し、予測は各子ノードに対して構築され、後で(重み付けにより)集計されます。

現在、多くの実装でCARTの代わりにC4.5が使用されています。主な理由は、高価な計算を避けるためです(CARTにはより厳密な統計的アプローチがあり、より多くの計算が必要です)、結果は似ているようで、結果のツリーはしばしば小さくなります(CARTはバイナリであり、C4.5はそうではないため)。Wekaはこのアプローチを使用していることを知っています。私は他のライブラリを知りませんが、それが特異な状況ではないと期待しています。GBM実装の場合、これが答えとなります。



「欠損値の比率で不純性スコアにペナルティを課す」ことに触れました。これは、ツリーの特定のレベル/ブランチで選択された最適なディメンション値の選択に直接影響しますか?
javadba

16

「欠損値を処理しない[RFの]理論的理由は何ですか?勾配ブースティングマシン、回帰ツリーは欠損値を処理します。なぜランダムフォレストがそれをしないのですか?」

RF 欠損値を処理しますが、CARTおよび他の同様の決定木アルゴリズムと同じ方法ではありません。User777は、欠損データを処理するためにRFで使用される2つの方法(中央値代入および/または近接度ベースの測定)を正しく説明しますが、Frank Harrellは欠損値がCART(代理分割)でどのように処理されるかを正しく説明します。詳細については、CART(またはFOSSのいとこ:RPART)およびRFの欠落データ処理に関するリンクを参照してください。

あなたの実際の質問に対する答えは、Random Survival Forestsと題されたIshwaranらの2008年の論文で明確にカバーされています。RFが欠損データをCARTまたは同様の単​​一決定ツリー分類器と同じ方法で処理しない理由について、以下のもっともらしい説明を提供します。

「サロゲート分割は木ではうまく機能しますが、この方法は森林にはあまり適さないかもしれません。速度が問題の1つです。サロゲート分割の計算は計算量が多く、特にさらに、フォレストのパラダイムでは、サロゲート分割は意味をなさない場合がありますRFは、ノードを分割するときに変数をランダムに選択するため、ノード内の変数は無相関である場合があり、合理的なサロゲート分割は存在しない場合があります。代理分割は変数の解釈を変更し、[変数の重要度]などの指標に影響します。

これらの理由により、RFには別の戦略が必要です。」

これは別ですが、私にとっては、RFがCARTモデルのアンサンブルを使用していると主張する人々に疑問を投げかけます。この主張は多くの記事で見たことがありますが、RFの権威あるテキストに由来するこのようなステートメントを見たことはありません。1つは、RF内のツリーが枝刈りなしで成長することです。これは通常、CARTモデルを構築する際の標準的なアプローチではありません。もう1つの理由は、質問であなたがほのめかしていることです。CARTと決定木のその他の集合は欠損値を処理しますが、[元の] RFは少なくともCARTのように内部的には処理しません。

これらの注意事項を念頭に置いて、RFはCARTのような決定ツリーのアンサンブル(つまり、サロゲート分割によって欠落データを処理する能力のない、最大限に成長した剪定されていないツリーの束)を使用すると言うことができると思います。おそらくこれは、それらの意味のある意味の違いの1つですが、注目に値するものだと思います。


編集:私の実際の質問とは無関係である私のノートでは、「RFに関する権威あるテキストに由来するそのようなステートメントを見たことがない」と述べました。Breiman DIDは、元のRFアルゴリズムでCART決定木が使用されていることを明確に示しています。

「ランダム機能を備えた最も単純なランダムフォレストは、各ノードで分割する入力変数の小さなグループをランダムに選択することによって形成されます。CART手法を使用してツリーを最大サイズまで成長させ、剪定しません。」[私の重点]

出典:ランダムフォレストの9ページ。ブレイマン(2001)

しかし、私はまだ(より不安定ではあるが)これらは枝刈りなしで成長するという点でCARTに似た決定木であるという考えに基づいていますが、CARTは通常、この構成で実行されることはほとんどありません。したがって、そもそも剪定)。


11

ランダムフォレストは欠落データを処理しますが、処理する方法は2つあります。

1)欠損データの補完なしで、推論を提供します。2)データの代入。帰属データは、推論に使用されます。

両方のメソッドは、RパッケージrandomForestSRC (Udaya Kogalurと共同で作成)に実装されています。まず、ランダムフォレストではランダムな特徴選択が採用されているため、単一のツリー(CARTなど)で使用されている従来の欠損データメソッドは適用されないことに注意してください。この点は、イシュワランらでなされた(2008年)、「ランダムサバイバルフォレスト」、応用統計の史料2、3、およびうまくコメンターのいずれかでの関節。

方法(1)は「オンザフライ代入」(OTFI)メソッドです。ノードを分割する前に、欠損のないバッグ内データから値をランダムに描画することにより、変数の欠損データが補完されます。この代入データの目的は、データが欠落している変数でノードが分割された場合に、子ノードにケースを割り当てることができるようにすることです。ただし、欠損データのみを使用する分割統計の計算には、代入データは使用されません。ノード分割の後、帰属データは欠損にリセットされ、ターミナルノードに到達するまでプロセスが繰り返されます。OTFIはout-of-bagデータの整合性を保持するため、変数重要度(VIMP)などのパフォーマンス値は不偏のままです。OTFIアルゴリズムはIshwaran et al(2008)で説明され、廃止されたrandomSurvivalForestパッケージに実装されました。

方法(2)は、randomForestSRCの「impute」関数を使用して実装されます。データを入力するための、教師なし、ランダム化、および多変量の分割方法が利用可能です。例えば、多変量分割は非常に成功しmissForestの補完法(一般化Stekhoven&Bühlmann(2012)、「混合型データ用MissForest非パラメトリック欠落値補完」、バイオインフォマティクス28、1)。欠損データを使用してimpute関数を呼び出すと、プライマリフォレスト関数 "rfsrc"を使用して適合できる代入データフレームが返されます。

「impute」を使用して実装されたさまざまなフォレスト欠損データアルゴリズムの詳細な比較は、2017年の Fei Tangの「ランダムフォレスト欠損データアルゴリズム」に関する最近の論文で説明されています。代入およびOTFIの詳細については、randomForestSRCの「rfsrc」および「impute」のヘルプファイルを参照することをお勧めします。


3
当サイトへようこそ!ユーザー名、identicon、およびユーザーページへのリンクは、作成するすべての投稿に自動的に追加されるため、投稿に署名する必要はありません。実際、私たちはあなたがそうしないことを好みます。
シルバーフィッシュ

1
興味深い答えをありがとう(+1)。引用されたいくつかの論文に完全な参照とリンクを追加することは自由でしたが、Tang&Ishwaran(2015)、「Random forest missing data algorithm」は見つかりませんでした。まだ公開されていますか?
Scortchi-モニカの復職

9

再帰的パーティション分割では、観測値の欠損値を保持する予測子と相関する非欠損予測子に基づいて代理分割を使用します。理論的には、同じアイデアを使用するランダムフォレストを実装することは可能だと思われます。ランダムフォレストソフトウェアがこれを行ったかどうかはわかりません。


7

ランダムフォレストには、欠損値を処理するための2つの方法があります。LeoBreimanとAdele Cutlerは、それを発明しました。

1つ目は迅速で汚れています。連続変数の中央値、またはクラスごとの最も一般的な非欠損値を入力するだけです。

2番目の方法では、欠損値を埋めてからRFを実行し、欠損値の連続値について、RFは欠損値の近接加重平均を計算します。次に、このプロセスを数回繰り返します。次に、モデルは、RF入力データセットを使用して最後にトレーニングされます。


ご回答ありがとうございます!しかし、この両方の方法は欠損値を置き換えています。ただし、GBMまたは回帰ツリーでは、値が欠落しても何も置き換えられません。この意味で、たとえばGBMとRFの理論的な違いは何ですか?
フェドレンコクリスティーナ

私はGBMの専門家ではありませんが、欠損値のRF処理は代入の概念に基づいているようです。en.wikipedia.org/ wiki / Imputation_(statistics)欠損値がランダムに欠損していない場合、結果は欠落のために偏ることがあります。代入は、この欠損値を回復し、バイアスを減らします。
モニカを

2

中央値などを使用する代わりに、missRangerパッケージ(現在Githubで開発中)またはRパッケージmissForestを確認することを強くお勧めします。これらのパッケージはどちらも、ランダムフォレストを使用して、連鎖方程式(MICE)による複数の代入に似た方法を使用して、最初にデータを代入します。これは実際の分析モデルに密接に対応するため、使用する適切な補完方法になります。その後、観測値の欠落により個々の行が削除されることを心配することなく、すべてのデータを使用できます。さらに、代入された値は、単純に中央値またはモードを選択するよりもはるかに現実的です。

分析には1つの入力補完データセットのみを使用できますが、欠損値に対する不確実性を組み込む最良の方法は、これらの補完メソッドを複数回実行し、結果の各データセット(つまり、複数の代入)そして、Rubinのルールを使用して推定値を結合します(Rパッケージmitoolsを参照)。


0

CARTの場合、属性の欠落(MIA)アプローチを適用できます。つまり、カテゴリカル予測子の場合、欠落しているコードを別のカテゴリとしてコーディングします。数値予測子の場合、欠損のあるすべての変数に対して2つの新しい変数を作成します。1つは欠損を-Infとしてコーディングし、もう1つは欠損を+ Infとしてコーディングします。次に、通常のランダムフォレスト関数をデータに適用します。

MIAの利点:1)計算コストが安い、2)複数のデータセットを生成せず、複数のデータセットを生成しないため、複数のデータ補完があります(欠損データの補完の文献では、1つのデータセットが十分ではないことを一般的に同意しています)、3)必要ありませんデータを代入するための統計的方法および/またはモデルを選択します。

関数ctree()およびcforest()パッケージpartykitではctree_control(MIA = TRUE)control引数に渡すことでMIAを適用できます。

Jerome FriedmanのRuleFitプログラムは、欠落を処理するためにMIAを使用しているようです。https://statweb.stanford.edu/~jhf/r-rulefit/rulefit3/RuleFit_help.html#xmissを参照してください

MIAアプローチの説明は、Twala et al。(2008):

Twala、BETH、Jones、MC、Hand、DJ(2008)。決定木の欠損データに対処するための良い方法。パターン認識レター、29(7)、950-956。

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