« 樺島研の院生さんより | トップページ | 多忙な日々 »

2005/04/10

kernlabとの比較

kernlab と比較すると僕のカー ネルPCAのコードはσが大きいところではうまく動いていないらしいことが解る。 (下図)やはりこういうものを安易に公開してはいけないな。恥をかいてしまった。
kpca_kernlabkpca_3c_kernlabどうもRに組み込みの指数関 数が桁落ちしているようだ。
これはおいおい直すとして(入力を正規化すればい いのだろうからそれほど問題でもないだろう)、実は三日月は直線になど成らないよう ではある。kernlabにバグがあるわけも無いし、どういうことなのだろうか?カーネル PCAでは三日月は直線にならないのかも。ますます、カーネルPCAへの疑念は深まるばか り。

|

« 樺島研の院生さんより | トップページ | 多忙な日々 »

コメント

直線になる,という意味ですが,もとの点の分布が幅がせまいので,実質的に1次元ですね.それだと,軸が一個正しくでればいいわけで,そういう意味ではOKなのでは.この場合に出ているもう1軸は何かというと,これは最初の軸を折り返したものです.多分,もとの点の分布の薄いほうの厚みがもう少しあれば,違ってくるかもしれませんが,わかりません.

とにかく主な1つの軸は一応出ていること(うまくいっている),すでに出た軸を折り返したものも独立な軸として出てしまうので解釈が難しいこと(欠点)がわかりますね.

追伸:
σがある程度大きくなると,行列が悪条件になるので,答は計算法に敏感になるのでは(連立方程式でなく固有値問題なんでそんなには敏感ではないかもしれませんが).行列の条件数とかチェックしてみたらどうでしょう.

投稿: 伊庭 | 2005/04/11 20:52

伊庭さん、コメントありがとうございました。「軸が出ればいい」という話ですが、それだと普通のPCAでもできる話ですよね。http://www.amazon.co.jp/exec/obidos/ASIN/0521813972/249-2958251-0641122">Kernel Methods for Pattern Analysisという伊庭さんに教えて頂いた本の153ページにはカーネルPCAと線型PCAでは違う結果が出るような図が掲載されています(実際に掲載されてるのは線型空間にカーネルPCAで求まる主成分の大きさをグラデーションで重ね描きしたもので、「直線になる」という図ではありませんが)。線型PCAと同じ結果ではカーネルPCAの意味がないと思います。実はnMDSはPCAがうまくいっているとそれと同じ結果しか出せないのです。ところが、カーネルPCAの方は線型PCAがうまく行っていても他の結果が出せるということでちょっと色めき立ったのですが、そうじゃないとなるとちょっとnMDSと選ぶところが無い。この例に関する限りではフリーパラメータが無いだけnMDSがまし、という結論になります。教科書に載っているような例でこれでは、とちょっとがっかり(ほっと?)したところです。カーネルPCAは nMDSの強力な競合者ですからね。
僕のカーネルPCAコードがうまく動かない理由はきっとご指摘のところだと思います。ただ、特異値分解もRのモジュールを使っているので、これがだめとなると僕にはどうしようもないのですが。

投稿: Y-h. Taguchi | 2005/04/12 10:51

よくわかりませんが「曲がっものに沿った軸」が出るということは,2次元を1次元に圧縮していることになりませんか.三日月は実質1次元なわけですから.もとの3日月はPCAでは2次元でないと表現されないのでは.

nMDSは,遠くのデータ同士の関係を使うこと,心理データ等以外の場合に順序の保存ということに意味があるのかということなどが問題だと思いますが,カーネル法との直接的な優劣の比較は考えたことがないです.

「順序」のような一見普遍的な考え方に引っかかるのは,似非数学者の悪い癖だという偏見があって,どうも乗り気になれないです.物理の中でこういう「表現の方法」みたいなことにいちはやく興味を持ったという点では共感するのですが..

p.s.
悪条件のところは通常はあまり意味がないと思うので使わなくてもいいと割り切る方法もあるかも.

投稿: 伊庭幸人 | 2005/04/12 22:34

あれー,ずれちゃった.

投稿: 伊庭 | 2005/04/12 22:35

伊庭様

コメントありがとうございました。曲がっている線にそって軸が出ているというのは「一次元であることの認識」といえないことも無いとは思いますが、しかし、もし、第一主成分だけ見るのであれば、線型のPCAでも曲線にそって勾配がついて見えるのはおなじですよね。ちょっとした改善に過ぎないと思います。1次元の認識ということは、そういう意味では線型のPCAでもできているということになってはしまいませんか?

投稿: Y-h. Taguchi | 2005/04/13 21:44

それはそうかも. 目で見るのか,射影する軸を求めるのか,っていうの目的の違いもあるかもしれませんが..そうはいっても使い道は難しいかな.まあ,そおういうこともあって,KPCAはとりあえずやめて,KCCAのほうに走ったのですが.

あとくだらないコメントですが,半円とか3/4円とかだと,またちょっと感じは変わるのかもしれません.

投稿: 伊庭 | 2005/04/13 23:41

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: kernlabとの比較:

« 樺島研の院生さんより | トップページ | 多忙な日々 »