2009年8月 のアーカイブ

javascript de svm

2009年8月23日 日曜日

紛失した過去記事の中で使っていたプログラムをサルベージ。
javascriptで実装したサポートベクターマシン(Support Vector Machine:SVM)のデモプログラムです。

ピクチャ 1

デモ:

http://pakpak.jp/work/svm_javascript/

平面にプロットされた二種類の点(赤、青)を学習データとし、それら二種類の入力を識別する関数を求め、分離超平面(カーネルトリックってのを使ってるから曲面になる)を可視化しています。

正方形のマップ上で左クリックすると点がプロットされます。プロットする点の色は下の「change color」から変更します。「execute svm」をクリックするとそれまでの入力を学習し、識別関数を求めて分離超平面を可視化します。その下にある「parameter」と「kernel」は分離超平面の求め方を制御するためのものです。

canvas?何それ?状態な時期につくったもので、マップ表示は全部ただのdivタグですw あと、firefoxでしか動作確認していません。また、条件によって非常に計算量が多くなり、ブラウザが落ちちゃう可能性もありますので、その辺ご理解の上ご覧下さいm(_ _)m

SVM?何それ?

って方に。
http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm
もすこしちゃんと勉強したい方はこちらが参考になるかと思います。
http://www.ism.ac.jp/~fukumizu/ISM_lecture_2006/

http://arx.ee.utsunomiya-u.ac.jp/research/svm/index.html

http://ibisforest.org/index.php?SVM

自分の理解

理論的なところをちゃんと理解した訳じゃないんですが、二種類のグループの間の距離(マージン)を最大化することで分離超平面を求めるという手法(線形SVM)のようです。でも平面だと曲面じゃないと分離できないようなケースに対応できないので、高次元の特徴空間に写像しておいて、そこで二つのグループを分離する超平面をもとめるという手法(非線形SVM)が用いられます。しかし、写像先での分離超平面を求める際に、その空間でのベクトル演算が必要になるのですが、高次元ベクトル演算の計算量は次元数に対して指数的に増大(たぶん)していくのでなるたけ避けたい。そのため、カーネルトリックとよばれる数学的手法が用いられる。これは、写像前のデータによる演算(実際必要なのは内積)をあたかも写像先で行ったかのように扱うことが出来る関数(カーネル関数)を用いる手法だそうです。(なんでそんなことが可能なのか私にはよくわかりません。。)特定の条件を満たす関数であればカーネル関数としてあつかっていいそうで、デモの「kernel」という項目ではそのカーネル関数のうちいくつかを選択することが出来るようになっているという訳です。

と、いつの間にかこんな時間だ。。おやすみなさいzzz

ジンメル・つながりの哲学 (NHKブックス) (単行本)

2009年8月21日 金曜日

ジンメル・つながりの哲学 (NHKブックス)

菅野 仁. NHK出版 2003, 単行本, 256ページ, ¥ 1,019

4.0

計算不可能性を設計する—ITアーキテクトの未来への挑戦 (That’s Japan) (単行本)

2009年8月21日 金曜日

計算不可能性を設計する―ITアーキテクトの未来への挑戦 (That’s Japan)

神成 淳司. ウェイツ 2007, 単行本, 295ページ, ¥ 1,680

4.5

生物と無生物のあいだ (講談社現代新書) (新書)

2009年8月21日 金曜日

生物と無生物のあいだ (講談社現代新書)

福岡 伸一. 講談社 2007, 新書, 286ページ, ¥ 777

4.0

決断力 (角川oneテーマ21) (新書)

2009年8月21日 金曜日

決断力 (角川oneテーマ21)

羽生 善治. 角川書店 2005, 新書, 201ページ, ¥ 720

4.5