教師なしクラスタリングのための決定木のようなアルゴリズムはありますか?


20

A、B、C、D、Eの5つの機能で構成されるデータセットがあります。これらはすべて数値です。密度ベースのクラスタリングを実行する代わりに、意思決定ツリーのような方法でデータをクラスター化します。

私が意味するアプローチは次のようなものです:

アルゴリズムは、特徴Cに基づいてデータをX個の初期クラスターに分割します。つまり、Xクラスターは、小さいC、中程度のC、大きいC、非常に大きいCの値などを持ちます。フィーチャAに基づいてデータをYクラスターに格納します。アルゴリズムは、すべてのフィーチャが使用されるまで続行されます。

上で説明したアルゴリズムは、決定木アルゴリズムのようなものです。ただし、教師あり分類ではなく、教師なしクラスタリングに必要です。

私の質問は次のとおりです。

  1. そのようなアルゴリズムはすでに存在しますか?そのようなアルゴリズムの正しい名前は何ですか
  2. この種のアルゴリズムを実装したR / pythonパッケージ/ライブラリはありますか?

3
But I need it for unsupervised clustering, instead of supervised classificationこのキーフレーズだけでは短すぎて、あなたが望むものを明確に説明していません。その上で、私には決定木と思われるものを説明しました。あなたは今、あなたが望むアルゴについて同様のパッセージを与えることができますか?
ttnphns 14年

1
@ttnphnsこんにちは、ご存じのように、決定木は監視された方法です。各特徴ベクトルにClass1またはClass2のラベルを付けます。アルゴリズムは、既知のラベルに基づいて各機能のしきい値を決定します。ただし、クラスタリングの問題に直面しています。各特徴ベクトルの正しいラベルがわかりません。ツリーを構築するために、各機能のしきい値を自動的に決定するアルゴリズムを見つけたいです。このように、得られたクラスタリングを容易例えば、クラスタ1と解釈することができる: -低Aのような低E、クラスタ2 -高B-中C-中D -低E.高A-低B-中C-高D
ナン

あなたをよく理解していない。CHAIDたとえば、ツリーを見てください。従属変数を選択する必要があります。Aとします。アルゴリズムは、B、C、D、Eの中からAと最も相関のある変数を選択し、その変数(たとえば、予測子、D)を2つ以上のカテゴリに「最適に」分類します。 (カテゴリ化された変数Dと変数Aの間が最大化されます。3つのグループ、D1、D2、D3を残します。次に、Dの各カテゴリ(グループ)内で同じ手順が繰り返されます。 、Eは、それをビニングの下で探されている等どのような。まさにここであなたに合わない?
ttnphns

2
@ttnphnsこの論文を見つけたばかりです。ftp.cse.buffalo.edu/users/azhang/disc/disc01/cd1/out/papers/...
ナン

1
@nanそのようなツリーの実装を見つけましたか?彼らは記事のコードへのリンクを提供していません
-Alleo

回答:


12

次のアプローチを検討してください。

  • データに適したクラスタリングアルゴリズムを使用する
  • 結果のクラスターがクラスであると仮定します
  • クラスターで決定木を訓練する

これにより、さまざまなクラスタリングアルゴリズムを試すことができますが、それぞれについて決定木近似が得られます。


1
これは「適切」であることに同意しますが、もちろん、クラスタリングアルゴリズムからラベルを作成することは観測の「実際の」機能ではないことを常に念頭に置く必要があります。クラスタリングの品質とタイプに応じて、導入されるバイアスは多かれ少なかれ存在します。
NiuBiBang

この戦略について説明している論文を教えていただけますか?
nCessity

2

頭に浮かぶ最初の論文はこれです:決定木構築によるクラスタリング https://pdfs.semanticscholar.org/8996/148e8f0b34308e2d22f78ff89bf1f038d1d6.pdf

別の言及として、「階層的」(トップダウン)および「階層的凝集」(ボトムアップ)は、どちらも木を使用してクラスタリングを行うために考案されたよく知られた手法です。Scipyにはこれがあります。

ライブラリがわからないためカスタムコードで問題ない場合は、2つの方法をお勧めします。これらは、それらが依存しているメカニズムのため、技術的にクラスタリングされていないことに注意してください。この擬似クラスタリングと呼ぶこともできます。

1)監督:これは紙に多少似ています(読む価値があります)。単一のデシジョンツリーモデルを構築して、ターゲットを学習します(意味のあるものを決定します)。ターゲットは、ランダムに生成された列である可能性があります(どの反復が最適かを繰り返し評価する必要があります。以下を参照)。ツリーの各フルパスを「クラスター」として定義します。これは、一連のブランチを通るポイントがターゲットに関して技術的に類似しているためです。これは一部の問題でのみ機能しますが、大規模では効率的です。最終的にK個のクラスターになります(以下を参照)。

2)半教師あり(教師なしの一種ですが、機械的に監視されます)、#1:を使用して、ツリーを構築して、1つだけのパターンで列を予測できます。つまり、スキーマが[A、B、C]の場合、3つのモデル[A、B]-> C、[A、C]-> B、[B、C]-> Aを構築します。KNクラスターを取得します(以下を参照)。N = len(スキーマ)。これらの機能の一部が面白くないか、不均衡すぎる場合(カテゴリの場合)、それらをターゲットとして使用しないでください。

要約:モデルは、情報または純度に基づいて順番に機能を選択し、クラスターはすべてではなく、いくつかの機能にのみ基づいています。これらのクラスターには距離の概念はありませんが、中心に基づいて距離を考案することはできます。

長所:理解と説明が簡単で、迅速なトレーニングと推論、いくつかの強力な機能でうまく機能し、カテゴリで機能します。機能が本質的に異種であり、多くの機能がある場合、距離関数で使用するものを決定するのにそれほど時間を費やす必要はありません。

短所:標準ではない、書かなければならない、素朴なバイアス、ターゲットとの共線性が悪い結果を引き起こし、1000の同様に重要な特徴があるとうまく機能しません(ユークリッド距離のK平均がここで優れています)。

クラスターはいくつ取得しますか?DTモデルが大きくなりすぎないように制限する必要があります。たとえば、リーフごとの最小サンプル、最大リーフノード(推奨)、または最大深度を設定します。必要に応じて、純度またはエントロピーの制約を設定します。クラスターの数を確認し、この方法が実際のクラスタリングより優れているかどうかを評価する必要があります。

テクニックとパラメーターはうまく機能しましたか?どちらが最高でしたか?調べるには、クラスター評価を行う必要があります:教師なし学習を評価するパフォーマンスメトリック


2

あなたが探しているのは、分裂的なクラスタリングアルゴリズムです。

最も一般的なアルゴリズムは凝集型であり、ボトムアップ方式でデータをクラスター化します。各観測は独自のクラスターとして開始され、クラスターがマージされます。分割クラスタリングはトップダウンです-観測は、徐々に分割される1つのクラスターで開始されます。

ほとんどのアルゴリズムは、一度に1つの変数を分割するのではなく、完全なデータ空間内の距離に基づいて動作するため、意思決定ツリーのように見えることにより、選択肢が制限されます。

DIANAは、私が知っている唯一の分裂型クラスタリングアルゴリズムであり、決定木のように構成されていると思います。そこに他の人がいなければ驚かれるでしょう。

定義された従属変数を考慮せず、クラスターの良さのメトリックを使用するメトリックに分割ルールを変更する場合、標準のディシジョンツリーアルゴリズムを使用できます。


0

考慮すべき1つのアイデアは、k個の特徴とn個のポイントがあるとします。(k-1)機能と1つの機能を従属変数として使用して、ランダムツリーを構築できます。Y.高さhを選択すると、ルートにデータポイントができます。投票の種類の異なる木を取ることができます。ちょっとした考え。

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