樋口先生 様;
お世話になります、袋井と申します。
毎回、ご丁寧にご説明をしてくださり、誠にありがとうございます。
よく理解できました。
御礼を申し上げます。
(1)クラスタリング(クラスター分析)について
k-meansなどの階層型クラスタリングは、分割(最適分割)に興味がある手法ですので、
最適なクラスター数を推定する方法については、色々と提案されています。
例えば、x-meansというものがあります。
オリジナルなx-meansではなく、石岡先生がご提案されているものがお薦めです。
オリジナルと比較して石岡先生のご提案手法は、精度、安定性、高速化などで、色々と工夫がなされています。
色々な分野で良い報告がなされています。
Rプログラムが公開されており、私も利用させていただいております。
x-meansではk-meansを再帰的に呼び出し利用をしております。
つまり、k-meansの欠点(初期値依存性)をひきづっているということですので、
クラスターメンバーは計算毎に、少しづつ変わりますが、
クラスターサイズは安定していますので、最適なクラスター数の目安にはなります。
(心強いです)
x-meansはRプログラムが公開されていますので、KH coderでは、以下のように補完的に使うのがよいと思います。
・x-meansで最適なクラスターを推定する(ユーザーに見せる? 見せない?)
・上記で得たクラスター数を、KHcoderの階層的クラスター分析で、autoの場合のクラスター数とする
k-meansの初期値依存性の問題を解決するためのアイディアが色々と提案されています。
例えば、k-meansでは、k-means++というアイディアがあります。
おもしろいです。
私も自分なりに工夫をして、独立成分分析、ベクトル量子化を使うことを試しています。
(いい結果を得ています)
初期値依存性の問題は、k-meansに限らず、SOMでもNMFでも同様であり、色々なアイディアが提案されています。
最適なクラスター数の推定に戻りますが、Cluster Valid Indexが提案されております。
私も色々と使った経験がありますが、お薦めできるような、うれしい経験をしたことがございません。
(残念です)
一方、
非階層型クラスタリングはクラスターの併合に興味がある手法ですので、
併合の信頼性評価という観点からの手法が提案されています。
例えば、pvclustという手法がございます。
東工大で開発され、CRANのTaskViewにも登録されています。
私も使っています。
KH coderへの応用にはすぐに結びつくかどうかまでは分かりませんが、先生のご研究でお役に立つかもしれません。
(2)SOMについて
SOMについては、色々なソフトがありますね。
最近では、本の付録でも提供されているようです。
私もSOMについては、国内外、高価な商用、フリー、自作含めて、色々な経験があります。
ニューラルネット屋さんが開発したSOMは、私のような一般people、下々の人間には使いづらいですね。
統計解析屋さんの立場からのSOMの方が、良いですね、違和感がなく安心して使えます。
先生が阪大時代にお使いになっていた欧州製ソフトも、そういう立場の製品ですね。
同製品を私は、バージョン3から最新版まで使っていますが、同じデータでもバージョンにより結果が異なるという不思議な経験をしております。
また、同製品よりも他のSOMソフトの方が好ましい結果を得ています。
ソフトの選定は本当に難しいですね。
縁、出会いなのでしょうか?
随分と昔の話となりますが、
古典的なSOMで、乱数から出発して自動分類ができると知った時には、本当に驚きましたね。
今では、私はSOMではなく、NMFにはまっています。
(3)NMFについて
NMFについては集合知プログラミングの文脈で再び注目されているようですね。
KH coderの熱心な利用者さんでご興味を持たれている方も少なくないと思います。
NMFに期待するものとして、
情報次元圧縮とクラスタリングを同時に行う、
特徴抽出に優れている、
テキストクラスタリング、
ソフトクラスタリング
などがあるのではないでしょうか?
私がNMFに興味をもったのは、
SOMとNMFを自己組織化アルゴリズムとして紹介する資料を読んだことがきっかけでした。
SOMの経験がある私にとっては、いい出会いでした。
この資料を読まなければ、NMFに深入りすることはなかったと思います。
私は、ほぼ毎日、NMFでデータ分析しています。日課となっています。
NMFのヒートマップの軸(縦、横)は、例えていえば一次元SOMが2軸あるようなものですので、解釈がしやすいです。
クラスタ間の相対比較もしやすいのもうれしいです。
しかし、NMFだけでなく、他の手法と相補うように工夫していることは、言うまでもありません。
KH coderで既に実現しているように、
色々な手法を補完的に活用することが大切であり、
そのために目利きになることが必要だということを、教えていただいた気がしています。
ありがとうございました。
長々とすいませんでした。