CARTで複雑度パラメーターを選択する


16

CARTモデルを作成するrpart()ルーチンで、ツリーをプルーニングする複雑度パラメーターを指定します。複雑度パラメーターを選択するための2つの異なる推奨事項を見てきました。

  1. 可能な最小相互検証エラーに関連付けられた複雑度パラメーターを選択します。この方法は、Quick-RおよびHSAURで推奨されています。

  2. 推定交差検定誤差が、最小可能交差検定誤差のSE内にある最大の複雑度パラメーターを選択します。これは、このプロットを参照して「プルーニング用のcpの適切な選択は、平均が水平線より下にある最も左の値であることが多い」というパッケージドキュメントの解釈です。

cpの2つの選択により、データセット内でまったく異なるツリーが生成されます。

最初の方法は常に、より複雑な、潜在的にオーバーフィットしたツリーを生成するようです。他の長所、短所、文献の推奨事項などはありますか。どの方法を使用するかを決める際に考慮する必要がありますか?特定のモデリング問題が役立つ場合は、それに関する詳細情報を提供できますが、この質問を他の人に関連するように十分に広くしようとしています。


プロットの水平線は何を表していますか?
ボグダノビスト

私は、それが最小の相互検証誤差を1 SE上回っていると信じています。
ハーフパス

十分なデータがある場合は、ツリーの場合でも、それをトレーニングデータセットとテストデータセットに分離してみてください。主に予測に関心がある場合、テストデータセットがそれを適切に推定するため、これは特に有用です。別の選択肢は、party有意性テストを使用するパッケージです(通常はお勧めしませんが、ここでは関連しているようです)。ただし、いつものように、最良のテストは有用性と感覚です。これは、主に説明に興味がある場合に特に当てはまります。
ピーターフロム-モニカの復職

遅い応答をおMyび申し上げます。明確にするために、クロス検証を使用してさまざまなツリーサイズでエラーを計算することで、データをトレーニングセットとテストセットに繰り返し効果的に分割したと考えました。その場合、別のトレーニング/テストの分割を実行するのは冗長ですか?私はあなたを誤解していますか?
ハーフ渡す

train / testでデータを分割し、trainデータのみを使用してcpパラメーターを相互検証すると、現実的な予測テスト(将来のデータを使用してcpを推定できない場合)が再現されます。したがって、最初のCVはcpで、モデル全体の予測誤差(推定cpを含む)になります。
ロバートキューブリック

回答:


6

実際には、両方のアプローチが取られているのを見てきましたが、一般的に、どちらの方法でも結果に大きな違いはないと思われます。

そうは言っても、Hastieらは統計的学習要素の「1つの標準誤差」規則を推奨しており、私は彼らの判断を信頼する傾向があります(私のバージョンではセクション7.10、ページ244)。関連する引用は次のとおりです。

多くの場合、「1つの標準エラー」ルールが交差検証で使用されます。このルールでは、エラーが最良のモデルのエラーよりも1つの標準エラーだけ多い最も節約的なモデルを選択します。

1つの標準エラールールに従う理由についてのあなたの直感は正しいです-データをオーバーフィットするモデルを選択することを避けるためにそうするでしょう。


1

最初に引数minsplit=0cp=0(複雑さのパラメーター)を使用して開始し、次に関数plotcp(T.max)を使用して次printcp(T.max)の値を選択する必要があります。cp対応する最小相対誤差のし、関数によってツリーを剪定する必要があります。prune.rpart(T.max, cp=....)

これにより、過剰に楽観的になりがちな最適な分類ツリーが得られます。

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