データセットがあります。このセットの各要素は、数値変数とカテゴリ変数で構成されています。カテゴリ変数は、名義変数と順序変数です。このデータセットにはいくつかの自然な構造があります。一般的に、専門家は「専門知識」を使用して私のようなデータセットをクラスター化しますが、私はこのクラスター化のプロセスを自動化したいと考えています。
クラスター化のほとんどのアルゴリズムは、オブジェクト間の距離(ユークリッド、マハラノブディスなど)を使用して、オブジェクトをクラスターにグループ化します。ただし、混合データ型の妥当なメトリックを見つけるのは困難です。つまり、「ガラス」と「鋼」の間の距離を見つけることができません。そのため、条件付き確率 P(feature = 'something' | Class)
とそれに依存するいくつかの効用関数を使用する必要があるという結論に達しました。カテゴリ変数には妥当であり、数値変数が正常に分布していると仮定すると、数値変数で正常に機能します。
そのため、 K-meansのようなアルゴリズムでは良い結果が得られないことが明らかになりました。
現時点では、条件付き確率を使用するという私の考えと完全に一致するCOBWEBアルゴリズムを使用しようとしています。しかし、私は別の障害に直面しました。クラスター化の結果は、不可能ではないにしても、解釈するのが非常に困難です。if feature1 = 'a' and feature2 in [30, 60], it is cluster1
その結果、分類用の決定ツリーのように、各クラスターを説明する一連のルール(例)のようなものを取得したかったのです。
だから、私の質問は:
混合データ型で動作し、クラスターの理解可能な(そして人間にとって合理的な)記述を生成する既存のクラスター化アルゴリズムはありますか?
追加情報:
私が理解しているように、私の仕事は概念的なクラスタリングの分野にあります。研究分野のために、提案されたように(それはwhoalプロジェクトの最終的な目標として)類似性関数を定義することはできません-それは形式化の点で非常に複雑で容赦がありません。私が理解している限り、最も合理的なアプローチはCOBWEBで使用されているアプローチですが、それをどのように適応させるかわからないため、クラスターの理解できない説明を得ることができます。
デシジョンツリー
提案されたように、私はクラスタリング出力で決定木をトレーニングしようとしました。これにより、一連のルールとしてクラスターの説明を取得しました。しかし、残念ながら、このルールの解釈は、生のクラスタリング出力の場合とほぼ同じくらい困難です。まず、ルートノードからのいくつかの最初のレベルのルールは意味があります。リーフに近いほど意味がありません。第二に、これらのルールは専門知識と一致しません。
したがって、クラスタリングはブラックボックスであり、その結果を解釈しようとしない価値があるという結論に達しました。
また
「回帰の決定木」アルゴリズムを特定の方法で変更するという興味深いアイデアがありました。グループ内分散を計算する代わりに、カテゴリ効用関数を計算し、それを分割基準として使用します。結果として、すぐに使用できるleafs-clustersとclustersの説明を含む決定木が必要になります。しかし、私はそうしようとはしていませんし、正確さやその他すべてについてはよくわかりません。