デシジョンツリーの連続データを(より良く)離散化する方法は?


8

ID3やC4.5などの標準的なディシジョンツリーアルゴリズムには、連続フィーチャのカットポイントを選択するためのブルートフォースアプローチがあります。すべての値は、可能なカットポイントとしてテストされます。(テスト済みとは、たとえば、情報ゲインがすべての可能な値で計算されることを意味します。)

多くの継続的な機能と多くのデータ(したがって、各機能の値が多い)があるため、このアプローチは非常に非効率的です。

これを行うためのより良い方法を見つけることは、機械学習のホットなトピックだと思います。実際、私のGoogle Scholar検索でいくつかの代替アプローチが明らかになりました。k-meansによる離散化など。次に、特定のドメインの特定の問題に取り組む多くの論文があるようです。

しかし、最近のレビューペーパー、ブログの投稿、または本に、離散化の一般的な手法の概要を説明しているものはありますか?見つかりませんでした...

または、おそらくあなたの1人がこのトピックの専門家であり、簡単な概要を書いてくれます。それは非常に役に立ちます!

回答:


8

いいえ、おそらく真剣な実装ですべての可能なカットポイントを試したくないでしょう。これは、ID3の簡単な紹介で説明する方法です。ID3の方が理解しやすいためですが、遅いため、通常は実際に実装する方法ではありません。特に、データポイントがある場合は、候補しきい値をテストする必要があります。単純アルゴリズムを使用してこれらの候補しきい値のそれぞれの情報ゲインを計算するには、候補ごとに時間かかり、合計で時間かかります。nn1O(n)O(n2)

実際には、これを大幅にスピードアップする最適化があります。

  1. 可能なすべてのしきい値を試してはいけません。代わりに、1000個の候補しきい値のランダムなサンプル(候補しきい値のセットからランダムに選択)を選び、それぞれの情報ゲインを計算して、最適なものを選択します。n1

  2. 動的プログラミングを使用して、計算を再利用することにより、合計時間で、すべての分割の情報ゲインを効率的に計算します。アルゴリズムの導出は非常に簡単です。n1O(n)


ありがとうございました!恥ずかしいことに、私は単純な導入に固執し、実際の実装を調べたことはありません。それ以外は、「より創造的な」アプローチを探していました。私が言及したk-meansの離散化など。または、各クラスの連続フィーチャの分布を把握し、それらの分布に基づいてカットポイントを定義する-より分析的なアプローチ。そんなこと知ってる?
AutoMiner 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.