2012-04-14 10 views
1

私は機械学習の分野ではかなり新しい(私はそれが非常に面白いと思っても)、私はいくつかのものを適用できる小さなプロジェクトを始めたいと思っていました。人の属性に基づいてクラスタリングするためにどのようなアルゴリズムを使用しますか?

人のデータセットを持っているとしましょう。各人はN個の異なる属性を持っています(離散値のみですが、各属性はほとんど何でもよい)。

同じような振る舞いを持つ人々、つまり属性に類似したパターン(「ルックアライキ」)を持つ人々のクラスタを探したいと考えています。

どうやってこれをやりますか?私を始めるためのあらゆる考えがありますか?

私はPCAを使用することを考えていましたが、それを減らすのに便利な任意の数のディメンションを使用できるためです。 K-Means?この場合、私は確信していません。このような状況に最も適しているものは何ですか?

これらのアルゴリズムをすべてコーディングする方法はわかっていますが、実際にはどのような場合に適用するかを知るための実際の経験がありません。

答えて

3

n次元の属性ベクトルを使用するK-手段は、開始するのに合理的な方法です。結果がどのように結果に影響するかを見るには、距離メトリックを使用してプレイしてください。

+0

この場合、私の属性は完全に任意の離散値を持つことができるので、どのように平均を定義しますか? –

+1

人々が離散値を頻繁にモデル化する方法は、それらをバイナリコード化変数に分割することです。たとえば、 "cat"と "dog"の値を持つ "Pet"フィールドがある場合、2つのバイナリ変数 "cat"と "dog"としてコード化します。 –

+0

私はチップのために感謝を参照してください:)私は次元の数が多いので、次元の数を減らすために最初にPCAを使用すると便利ではないでしょうか? –

2

クラスター化アルゴリズムのほとんどの最初のステップは、適切な距離関数を見つけることです。 DBSCANのような多くのアルゴリズムは、この距離関数でパラメータ化することができます(少なくとも適切な実装では、もちろんユークリッド距離をサポートするものもあります)。

オブジェクトの類似性を測定する方法を検討することから始めてください!

+0

人の属性が数値IDであるとしましょう。 ID nはn + 1とはまったく異なるものに対応できるので、私はまだユークリッド距離を使うことができません。これらの数値IDを離散値として扱うべきですか? –

+0

合理的な距離関数を定義する必要があります。あなたの特定のデータに何があっても、私はそれを伝えることはできません。 –

2

私の意見では、期待値最大化アルゴリズム(EMとも呼ばれる)も試してください。一方、このアルゴリズムはクラスタリングに関連する次元を減らす可能性があるため、PCAの使用中は注意が必要です。

+0

PCAをデータの「前処理」の一種として使用することをお勧めしますか?私は、EMがここでは良い選択となると思いますが、アルゴリズムは知っていますが、いつ使用するのか分かりません。 –

+0

教師なしの方法であるため、出力情報がない場合はPCAを使用することをお勧めします。そのような場合、PCAは次元削減のための良い選択です。 EMアルゴリズムの場合、最初のものは確率的であり、手でサンプルの可能性を最大にするコンポーネント密度パラメータを見つけることができます。 2番目は実装して実行するときに、k-meansと比較してより敏感な結果が得られました。しかし、それは長い時間がかかるかもしれないので、私はあなたに警告します。一方、私はEMのための考えられる理由はありません:) –

関連する問題