1

加重値を含むオブジェクトに基づいてクラスターを作成しようとしています。

値は曲に関するものであり、オブジェクトはユーザーです。例えば:

user1 が 3 つのポップ ソング、1 つのラップ ソングが好きで、ヒップホップ ソングが好きでない場合、彼は次のように表現されます。

u1 = {3,1,0}

したがって、ランダムな値を持つ3人のユーザーがいる場合、次のようなマトリックスを持つことができます:

3 1 0
0 4 5
1 2 3

u1 = {3,1,0}
u2 = {0,4,5}
u3 = {1,2,3}

私の質問は、そのようなデータでクラスターを作成することは可能ですか? また、Jaccard 類似度係数のようなデータ間の類似性を見つけるには、どのようなアルゴリズムが最適ですか。

最初はバイナリデータで計算してみましたが、このままでは情報が失われてしまいます。

2 番目の方法では、各値間の類似性を計算しようとします。すべての類似性を合計し、各オブジェクト値間でもう一度行います。

例として:

u1 と u2 を取得すると、次のようになります。

u1 = {3,1,0}
u2 = {0,4,5}

|3 - 0| = 3
|4 - 1| = 3
|0 - 5| = 5

(3 + 3 + 5) / 3 = 11/3 

u1 = {3,1,0}
u3 = {1,2,3}

|3 - 1| = 2
|1 - 2| = 1
|0 - 3| = 3

(2 + 1 +3) / 3 = 6/3 = 2

11/3 > 2 なので、u1 と u3 はより類似しています。

しかし、このアプローチも良いかどうかはわかりません。

これの目的は、クラスターを他のクラスターと比較して、いくつかの検索結果と一致させることです。

4

2 に答える 2

3

まず、クラスター分析の特別なケースではないようです。実際、各クラスタリング方法は、一般にそうであるように、このデータに対してもうまく機能するはずです。つまり、これは「奇妙な」ものでも特定のものでもなく、単に N 次元空間にポイントがあるということです。唯一の注意点は、音楽の好みが同じであっても、10000 曲を好む人と 10 曲を好む人とでは、あなたの現在の表現が異なるということです。例:

[ 10000 0 0 ]
[ 10 0 0 ]

したがって、ユーザーの「一般的な」設定をモデル化することを実際に考えている場合は、正規化を検討する必要があります。そのため、(たとえば、それを行うには多数の方法があるため) カウントではなく、各次元のパーセンテージがあります。

[ 10000 0 0 ] -> [ 1.0 0.0 0.0 ]
[ 10 0 0 ] -> [ 1.0 0.0 0.0 ]

特定のクラスタリング方法の選択は、入力ではなく、期待される出力に関する多くの事柄に依存します。いくつかの単純なアプローチ (k 重心ベース) から始めて、満足のいく結果が得られない場合は、より高度な方法 (階層的クラスタリング、dbscan、光学、em など) に進みます。

于 2013-09-11T09:50:02.433 に答える