- ベストアンサー
クラスター分析について
(1)階層型について:デンドログラムの図から、そのクラスター分けの信頼性、妥当性の判断というものができるかどうか (2)非階層型について:K-means法の具体例やデータはありませんでしょうか。URLもしくはこのようにやったら良いなどの方法、資料などありましたら教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1)について。 クラスター分析ってのは、サンプルがどっさりあって、しかも一目瞭然に分かれているときには上手く行くけど、曖昧なサンプルが混ざってくるとどうにでもなってしまう。ことにクラスター間の距離を要素同士の最短距離で測った時には、「たまたまこんなとこにサンプルがあった」ということの影響が強く出る。サンプルのたまたまだけじゃなく、クラスター間の距離の定義を変えると結果が全然違っちゃうことが多いし、その上、サンプルの空間を非線形変換で別の空間に写すと単なる線形判別の問題になる場合だってある(という話は、例えばSupport Vector Machineについて調べてみるとお分かりになるかも。)。また、ファジイ集合を使うやりかたもある。そういうことも含めればいろんなバリエーションが考えられ、「分析」と言うより、これはもうただの「情報処理」と見るべきじゃないかな。 なので、(必要なら適当な非線形変換をやった上で)「散布図を人が見れば一目瞭然なんだけど、それを自動で処理したい」だとか「まちがいなく綺麗に分かれているんだけど、次元が高くて散布図に描けない」という場合に使うのなら健全であるけれども、「散布図を見てもごちゃごちゃで分からんから、クラスター分析でなんとか答を出そう」となるとイカガナモノカ。 で、もちろんこのイカガナモノカ的応用においてこそ、ご質問の問題意識が生じるに違いない。となると、まずは、仰るところの「信頼性・妥当性」をどう測るか、測る目的とサンプルの分布の性質に合わせて上手い尺度を作る事が問題でしょ。何かを最小化する、という極値問題に持って行ければ綺麗なんだけれども、そうも行かない場合にはサンプルの発生モデル(正解のモデル)をかなり限定した上で分類を誤る確率を考える、という手もあるだろうし、いや実際にクラスターを併合する際にどのぐらいムリが生じたか(たとえばクラスタの直径や分散がどのぐらい大きくなったか)を測ってみるとか、そのムリの程度を評価するAIC(Akaike's Information Criteria)みたいな手法を作ってみるとか、いろいろアイデアは出せるものの、ともあれ、目的に合ってなきゃ意味がないんで、一般論だけじゃ済まないだろうと思います。 (2)について。どこが分かんないですか。 サンプルの集合Xの中からK個をテキトーに選ぶ。その位置をクラスターkの「タネ」とする。(k=1,2,...,K) repeat for each サンプル x∈X xをその最寄りの「タネ」と対応づける。 rof (* これでXがK個のクラスターに分かれた。 *) for each クラスターk∈{1,2,..,K} クラスターkのメンバーの平均値の位置に「タネ」を移動。 rof until どの「タネ」もほとんど動かなくなるまで繰り返し。 単純明快だと思うけど、迷うとしたら「テキトー」ってところかな。普通は乱数で選ぶんです。でも、最初のタネの選ばれ具合によって、結果が違ってくることがあり、ここがいやらしい。 ちょっと工夫して、サンプルが密集しているところを探してタネを置き、既にあるタネの近くにはタネを置かない、というようにすることもできる。そうすれば何度やっても同じ答になる上に、収束が速くなるでしょう。たとえばサンプルxとyの距離の2乗をD(x,y)とするとき、各サンプルxについて ρ(x) = Σexp(-D(x,y)/(2(σ^2)) (Σはy∈Xについての和) を計算すれば、「密集度ρ」が高い所がどこなのか分かる。んでもって、j+1番目のタネs(j+1)を置くときには ν(x) = ρ(x) Π(1-exp(-D(x,s(i))/(2(τ^2))) (Πはi=1,2,...,jについての積) が最大になるxを選ぶとか。あー、いや、これは我流ですから無闇に信用しちゃいけません。
お礼
詳しいご回答ありがとうございます。 しかしながら書かれていることが私にとっては難しい内容なので、何度も読み返して理解を深めたいと思います。