アプリ版:「スタンプのみでお礼する」機能のリリースについて

今,k-means法を使ったクラスタリングプログラムを作っています.
2次元特徴のパタン集合を分類してグラフィカルに表示するものです.

wikipediaによると,k-means法は
(1)各パタンをランダムにN個のクラスタに分類
(2)各クラスタの中心を計算
(3)全パタンについて中心との距離を計算し,一番近いクラスタに割り当て
(4)割り当てに変化がなければ終了,変化があれば(2)へ

のように書いてあり,自分も理解できていたつもりだったのですが,
ステップ(3)の「全パタンについて中心との距離を計算し…」という
部分が作れなくて困っています.

指定ではパタン間距離に「重み付きユークリッド距離」を使えとのこと
だったのですが,自分は2パタン間で重み付きユークリッド距離が
使えるというところが理解できていません.

2次元なので,単純に距離ならばユークリッド距離を使えばいいと
思っていたんですが.

ネットで調べたところ,
・d^2 = Σ wi (xi - yi)^2
という式は見つかったのですが,重み係数wiをどのように設定すれば
いいのか分かりません.

非常に初歩的な質問をしているのだと思いますが,
教えていただけると嬉しいですm(_ _)m

A 回答 (1件)

クラスタリング


提供: フリー百科事典『ウィキペディア(Wikipedia)』
(統計学)データ解析手法の1つ。(中略)この特徴は多くの場合、類似性や、ある定められた距離尺度に基づく近さで示される。


という訳で、「ある定められた距離尺度に基づく近さ」に基づいて、データをクラスターに分けるのがクラスタリングです。
「距離尺度」としては、普通の物理的な意味の距離でも、自分で新たに定義した抽象幾何学的な意味の距離でも、何でも有り得る訳です。今の場合は

>指定ではパタン間距離に「重み付きユークリッド距離」を使えとのこと

なので、「重み付きユークリッド距離」を使えばいい訳です。ところで

>2次元特徴のパタン集合を分類してグラフィカルに表示する

とのことなので、変数 x は2次元平面の横方向、変数 y は縦方向を表すとした方が分かりやすいでしょう。
 このとき、j番目のクラスターの重心を Pj ≡(Xj,Yj)とすると、クラスター内の点 p ≡(x,y)と重心 Pj ≡(Xj,Yj)との間の「重み付きユークリッド距離」は、

d(p,Pj)^2 = wx (x - Xj)^2 + wy (y - Yj)^2

となります。両辺を d(p,Pj)^2 で割れば、これは楕円を表す方程式になります。
 要するに、「重み付きユークリッド距離」は、普通のユークリッド距離と比較して、縦方向や横方向のデータ相関を考慮に入れてクラスタリングをしてみようとするものであることが分かります。

>重み係数wiをどのように設定すれば
>いいのか分かりません.

 ユーザは自分で重み係数wi(≡{wx, wy})をいろいろ変えて、クラスタリング結果がどうなるか見たいので、wi(i = x~y)はユーザ入力できるようにしておけというのが、

>パタン間距離に「重み付きユークリッド距離」を使え

と指定してきた依頼者の意図だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました.
お礼が遅くなってしまい,本当に申し訳ありません.
回答を活用させていただきました.

お礼日時:2010/05/21 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!