k-means の中心の更新に問題があります。私のデータは以下のようなものです:
1 0 5 6 2 3 5 7 2 5 0 8 6 1 0 5 . . . 2 5 6 4 2 1 0 8 . .
行ごとに処理する必要があります(例:1行が中央です)。コサイン類似度でクラスターを計算しました。今、各クラスターのセンターを更新したいのですが、どうすればそれができるのかわかりません。助けてください。(各行には、ドキュメント内の異なる単語の反復回数が含まれています。)ありがとう
k-means の中心の更新に問題があります。私のデータは以下のようなものです:
1 0 5 6 2 3 5 7 2 5 0 8 6 1 0 5 . . . 2 5 6 4 2 1 0 8 . .
行ごとに処理する必要があります(例:1行が中央です)。コサイン類似度でクラスターを計算しました。今、各クラスターのセンターを更新したいのですが、どうすればそれができるのかわかりません。助けてください。(各行には、ドキュメント内の異なる単語の反復回数が含まれています。)ありがとう
実際には、球面k-meansとして知られるコサインメトリックを使用できるアルゴリズムがあります。
詳細については、次を参照してください。
http://www.cs.gsu.edu/~wkim/index_files/papers/refinehd.pdf http://nirmalthapa.wordpress.com/2011/05/05/spherical-k-means-clustering-algorithm/
k-means はユークリッド距離用に設計されており、他のメトリック用ではありません。
最初は他の距離関数を簡単に使用できるように見えますが、実際の問題は平均関数です。
ユークリッド距離の場合、算術平均によって分散が最小化され、アルゴリズムが確実に終了します。マンハッタン距離については、代わりに medoid を使用できます (k-medoids クラスタリングを参照)。
しかし、任意の他の距離関数を投入すると、k-means が無限ループに陥る可能性があります (つまり、収束が停止します)。したがって、他の距離を使用する場合は注意が必要であり、k-means よりも高度で最新のアルゴリズムを使用することを検討してください。