データ分析とインテリジェンス

クラスター分析における初期値の違いによる影響を解決する方法を考える

■何回も実行して平均取ったらいいのでは?を定式化する

分析手法の疑問点・・・クラスター分析についてにおいて「k-meansでの初期値の違いの影響はどうするのか」について触れたが、その解決方法についてアイデアとしては何回も実行して最も属するクラスターに分類すればいいのではないかと以前からあったのだが、具体的に定式化する方法が思いついたので、まとめることにした。

■同じクラスタに属することをどう表現するか

下の図はk-meansでk=3としてクラスター分析を実行した結果である。1回だけの結果であればこれで良いのだが、初期値を変更して複数回実行した場合に各クラスタにどのように分類されるかを判別する際にどうするか問題になる。結果を重ね合わせていけばぼんやりと見えてきそうであるが、それだと意味がないのできちんと根拠のある分け方にしたい。

クラスター分析

そこで、以下の行列を考える

  • aij=1 データiとデータjが同じクラスターに属している場合
  • aij=0 データiとデータjが同じクラスターに属していない場合

先ほどのクラスター分析の結果をこの行列で表すと、以下のようになる。

クラスター分析の結果の行列

このままだとわかりづらいので、同じクラスターに属するデータ同士をまとめるように並び替える。各データは必ずどこか1つのクラスターに属するので、以下のようになる。

クラスター分析の結果の行列の並び替え

この方法であれば、複数回行った場合に常に同じクラスターに属するか、そうでないかが判定できると考えられる。

■複数回行って平均値を取る

クラスター分析を実行する度にこの行列を作成し、実行後にすべて合計して実行回数で割る(=平均値を取る)。すると、常に同じクラスターに属していれば1が現れ、複数クラスターに属する場合は0以上1未満の数値となる。複数クラスターに属するデータ間については考慮しないので無視してよい。すると先ほどの行列は以下のようになる。

平均の行列

ここではクラスター1・2・3とラベルとつけており、xm(x=h,i,j,k m=1,2,3)はデータxがクラスターmに属する確率(0以上1未満)で、x1+x2+x3=1である。これを図示すると以下のようになる。

常に同じクラスター

最後に各データについてもっともxmが高いクラスターmに割り当てる。複数のクラスターに同じ確率で属する場合は、どこか(例えば属するデータ数が少ない方)に寄せるとか、あるいはランダムに割り振ればよい。

割り当て

これで完了となる。

■未解決問題の問題

この方法はk-meansによるクラスター分析の結果が初期値に依存する問題についての1つの解決方法となるのではないか。少なくとも1回だけやって出てきた結果をそのまま使うよりかは信憑性があるだろう。しかし、

  • ・何回実行するのがよいのか(データ数やクラスター数にも依存するだろう)
  • ・実行にどれぐらい時間がかかるのか(実行不可能では意味がない)
  • ・そもそもこんなことを考える必要があるのか

などは解決していない。特に最後の「そもそもこんなことを考える必要があるのか」というのは、実は初期値における影響は微々たるもので、数回やってその中から1つを選ぶ方法でも(営業的にではなく根拠のあるという意味で)特に問題ないということであれば、このようなことを考える必要もないのだが。

今回は実際にコードを書いて動かしてみるところまでは行かなかったので、いずれどこかで・・・

このエントリーをはてなブックマークに追加

タグ:分析 クラスター分析


最新のブログ記事5件

大学や独学でデータ分析の勉強をしただけだと実務で使えない理由
「データ分析をする人」とは何をする人のことを指しているのか
定期レポートを効率化する
最悪のデータ分析組織とは
「何を知りたいのか」がわからなければデータ分析は始まらない

ブログトップ > クラスター分析における初期値の違いによる影響を解決する方法を考える