1

ユーザーのグループとそれに関連する単語があります。これは私がそれらをグループ化した方法です:

各単語を数字に関連付けました。ユーザーがこれらの単語を関連付けていない場合は、値 0 を指定します。

google : 1 stackoverflow : 2 math : 3 プログラミング : 4 noword : 0

k-means アルゴリズムを実行するには、単語を次のように関連付けます。

username  google stackoverflow math programming
user1        1        0          3      0
user2        1        2          0      4
user3        0        2          3      0
user4        1        1          0      4

これは、各ユーザーをクラスター化し、構成された単語に基づいて互いにどれだけ近いかを確認する方法の正しい実装ですか?

私はこの実装に基づいています: http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/K-Means

特にこのセクション: ここに画像の説明を入力

4

1 に答える 1

4

データはバイナリとして構築できることに注意してください。たとえば、ユーザー 1 は、stackoverflowと関連付けられているか、関連付けられていません (つまり、バイナリ値)。したがって、データを次の形式に変更する必要があります。

username  google stackoverflow math programming
user1        1        0          1      0
user2        1        1          0      1
user3        0        1          1      0
user4        1        1          0      1

クラスターの重心の概念はバイナリ データでは問題があるため、データの K-means に反対することをお勧めします。詳細については、このリンクの最初の数段落を参照してください。

ただし、 Jaccard インデックスなどの適切な方法を使用して、任意の 2 人のユーザー間の類似度を計算することはできます。これは、各ユーザーの単語の関連付けをバイナリ文字列として記述できるためです (例: user1 has 1010)。次に、ユーザーのすべてのペア間の類似性マトリックスを構築し、階層的クラスタリングなどの方法でそれらをクラスタ化できます。

または、 R で Proximus のようなものを使用することもできます。

于 2013-06-01T22:17:46.970 に答える