14

データセットがあります。このセットの各要素は、数値変数とカテゴリ変数で構成されています。カテゴリ変数は、名義変数と順序変数です。このデータセットにはいくつかの自然な構造があります。一般的に、専門家は「専門知識」を使用して私のようなデータセットをクラスター化しますが、私はこのクラスター化のプロセスを自動化したいと考えています。

クラスター化のほとんどのアルゴリズムは、オブジェクト間の距離(ユークリッド、マハラノブディスなど)を使用して、オブジェクトをクラスターにグループ化します。ただし、混合データ型の妥当なメトリックを見つけるのは困難です。つまり、「ガラス」と「鋼」の間の距離を見つけることができません。そのため、条件付き確率 P(feature = 'something' | Class)とそれに依存するいくつかの効用関数を使用する必要があるという結論に達しました。カテゴリ変数には妥当であり、数値変数が正常に分布していると仮定すると、数値変数で正常に機能します。

そのため、 K-meansのようなアルゴリズムでは良い結果が得られないことが明らかになりました。

現時点では、条件付き確率を使用するという私の考えと完全に一致するCOBWEBアルゴリズムを使用しようとしています。しかし、私は別の障害に直面しました。クラスター化の結果は、不可能ではないにしても、解釈するのが非常に困難です。if feature1 = 'a' and feature2 in [30, 60], it is cluster1その結果、分類用の決定ツリーのように、各クラスターを説明する一連のルール(例)のようなものを取得したかったのです。

だから、私の質問は:

混合データ型で動作し、クラスターの理解可能な(そして人間にとって合理的な)記述を生成する既存のクラスター化アルゴリズムはありますか?

追加情報:

私が理解しているように、私の仕事は概念的なクラスタリングの分野にあります。研究分野のために、提案されたように(それはwhoalプロジェクトの最終的な目標として)類似性関数を定義することはできません-それは形式化の点で非常に複雑で容赦がありません。私が理解している限り、最も合理的なアプローチはCOBWEBで使用されているアプローチですが、それをどのように適応させるかわからないため、クラスターの理解できない説明を得ることができます。

デシジョンツリー

提案されたように、私はクラスタリング出力で決定木をトレーニングしようとしました。これにより、一連のルールとしてクラスターの説明を取得しました。しかし、残念ながら、このルールの解釈は、生のクラスタリング出力の場合とほぼ同じくらい困難です。まず、ルートノードからのいくつかの最初のレベルのルールは意味があります。リーフに近いほど意味がありません。第二に、これらのルールは専門知識と一致しません。

したがって、クラスタリングはブラックボックスであり、その結果を解釈しようとしない価値があるという結論に達しました。

また

「回帰の決定木」アルゴリズムを特定の方法で変更するという興味深いアイデアがありました。グループ内分散を計算する代わりに、カテゴリ効用関数を計算し、それを分割基準として使用します。結果として、すぐに使用できるleafs-clustersとclustersの説明を含む決定木が必要になります。しかし、私はそうしようとはしていませんし、正確さやその他すべてについてはよくわかりません。

4

3 に答える 3

11

ほとんどのアルゴリズムでは、類似性を定義する必要があります。適切な距離関数である必要はありません(たとえば、三角不等式を満たす)。

K- meansは、平均を計算する必要があるため、特に悪いです。したがって、平均を計算できない場合、またはユークリッドとは異なる距離関数を使用している場合は、それを避けた方がよいでしょう。

ただし、類似性に関するドメイン知識を取得する距離関数を定義することを検討してください。これは、他の距離関数で構成できます。たとえば、ユークリッド距離の調和平均(スケーリング係数で重み付けされている可能性があります)とカテゴリ類似度関数を使用します。

適切な類似度関数を取得すると、多数のアルゴリズムを使用できるようになります。例:DBSCAN(ウィキペディア)またはOPTICS(ウィキペディア)。ELKIはあなたの興味を引くかもしれません、彼らはカスタム距離関数を書くことについてのチュートリアルを持っています。

解釈は別のものです。残念ながら、いくつかのクラスタリングアルゴリズムでは、人間が見つけたものを人間が読める形式で解釈できます。それらは、代表的なもの(たとえば、k-meansでのクラスターの平均)などを提供する場合がありますが、それ以上のものはありません。しかしもちろん、次にクラスタリング出力で決定木をトレーニングし、クラスタリングから学習した決定木を解釈してみることができます。デシジョンツリーの優れた機能の1つは、人間がある程度理解できることです。しかし、サポートベクターマシンが説明を提供しないのと同じように、この種の後処理を行わない限り、ほとんどの(すべてではないにしても)クラスタリングアルゴリズムもそれを実行しません。さらに、実際にはクラスタリングアルゴリズム。これは、複数のアルゴリズムを比較する場合に便利なプロパティです。

昨年、関連する出版物がありました。これは(ECML-PKDDのワークショップで)少しあいまいで実験的であり、データセットがランキングの形で非常に広範なグラウンドトゥルースを持っている必要があります。この例では、色の類似性ランキングといくつかのラベルを使用しました。重要なアイデアは、クラスターを分析し、与えられたグラウンドトゥルースを使用して最良の説明を見つけることです。彼らはそれを使って、たとえば「見つかったこのクラスターは主にこの特定の緑の色合いに基づいているので、あまり面白くありませんが、他のクラスターはあまりよく説明できません。もっと詳しく調べる必要があります-おそらくアルゴリズムここで何か新しいものを発見しました。」しかし、それは非常に実験的なものでした(ワークショップは進行中のタイプの研究用です)。あなたあなたの特徴をグラウンドトゥルースとして使うだけで、これを使うことができます。次に、クラスターが「属性5は分散が少ない約0.4である」などの方法で簡単に説明できるかどうかを検出する必要があります。しかし、それはそのような説明を強制的に作成することはありません!

  • H.-P. Kriegel、E。Schubert、A。Zimekによる第2回MultiClustワークショップ
    での複数のクラスタリングソリューションの評価
    :ECML PKDD 2011と組み合わせて開催された複数のクラスタリングの発見、要約、および使用。http ://dme.rwth-aachen.de/en/MultiClust2011
于 2012-08-28T16:35:07.683 に答える
4

このタイプのクラスタリングの問題を解決するための一般的なアプローチは、データの関連する特性をキャプチャする統計モデルを定義することです。クラスターの割り当ては、混合モデル(ガウス混合モデルの場合のように)を使用して、特定のデータポイントの確率が最も高い混合成分を見つけることによって導き出すことができます。

あなたの場合、各例は、実数とカテゴリの両方のコンポーネントを持つベクトルです。簡単なアプローチは、ベクトルの各コンポーネントを個別にモデル化することです。

各例が2次元のベクトルである小さな例のデータセットを生成しました。最初の次元は正規分布変数であり、2番目の次元は5つのカテゴリーの選択です(グラフを参照)。

ここに画像の説明を入力してください

統計モデルのモンテカルロ推論を実行するために利用できるフレームワークは多数あります。バグはおそらく最も人気があります(http://www.mrc-bsu.cam.ac.uk/bugs/)。このモデルはStan(http://mc-stan.org/)で作成しました。これは、BUGとは異なるサンプリング手法を使用し、多くの問題に対してより効率的です。

data {
  int<lower=0>  N; //number of data points
  int<lower=0>  C; //number of categories

  real x[N]; // normally distributed component data
  int y[N];  // categorical component data
}
parameters {
  real<lower=0,upper=1> theta; // mixture probability
  real mu[2]; // means for the normal component
  simplex[C] phi[2]; // categorical distributions for the categorical component
}

transformed parameters {
  real log_theta;
  real log_one_minus_theta;
  vector[C] log_phi[2];
  vector[C] alpha;

  log_theta <- log(theta);
  log_one_minus_theta <- log(1.0 - theta);

  for( c in 1:C)
    alpha[c] <- .5;

  for( k in 1:2)
    for( c in 1:C)
        log_phi[k,c] <- log(phi[k,c]);
}
model {
  theta ~ uniform(0,1); // equivalently, ~ beta(1,1);
  for (k in 1:2){
    mu[k] ~ normal(0,10);
    phi[k] ~ dirichlet(alpha);
  }

  for (n in 1:N) {
    lp__ <- lp__ + log_sum_exp(log_theta + normal_log(x[n],mu[1],1) + log_phi[1,y[n]],
                               log_one_minus_theta + normal_log(x[n],mu[2],1) + log_phi[2,y[n]]);
  }
}

スタンモデルをコンパイルして実行し、最終サンプルのパラメーターを使用して、各混合成分の下の各データポイントの確率を計算しました。次に、各データポイントを混合コンポーネント(クラスター)に割り当て、以下のクラスター割り当てを回復する可能性が高くなりました。

ここに画像の説明を入力してください

基本的に、データセットに適したモデルを作成した場合、各混合コンポーネントのパラメーターは、各クラスターのコア特性を提供します。

于 2012-09-05T22:31:22.383 に答える
2

説明するように、異種の非ユークリッドデータベクトルの場合、階層的クラスタリングアルゴリズムが最適に機能することがよくあります。説明する条件付き確率条件は、クラスターの凝集または除算を実行するために使用される属性の順序として組み込むことができます。結果のクラスターのセマンティクスは簡単に説明できます。

于 2012-09-03T15:55:40.220 に答える