62
やる夫は SVM を実装したよ うです & やる夫で学ぶ非線形な SVM Hatena id:repose Twitter id :y_benjo

SVM&R with Yaruo!!#2

Embed Size (px)

DESCRIPTION

やる夫はSVMを実装したようです & やる夫で学ぶ非線形なSVM

Citation preview

Page 1: SVM&R with Yaruo!!#2

やる夫はSVMを実装したようです

&やる夫で学ぶ非線形なSVM

Hatena id:repose

Twitter id :y_benjo

Page 2: SVM&R with Yaruo!!#2

前回までのおさらい

使おうと思っていた

ライブラリが使えず

ぶん投げて逃げた

やる夫であった…

Page 3: SVM&R with Yaruo!!#2

つうか

やっつけスライドな

のに大勢に見られ

た挙句、投げっぱ

なしなのは恥ずか

しいので

Page 4: SVM&R with Yaruo!!#2

やる夫はSVMを実装したようです

Page 5: SVM&R with Yaruo!!#2

とりあえずもう一度

落ち着いて考え直す

お…

Page 6: SVM&R with Yaruo!!#2

前回発表したように、

線形SVMで問題にな

るのは、超平面まで

の最大化問題だお…

Page 7: SVM&R with Yaruo!!#2

詳しい話はさておき、

これが解ければ線形

分離はできる筈…

Page 8: SVM&R with Yaruo!!#2

問題は、行列が半正

定値行列になってし

まう事だお…

最初試したsolve.QP

は正定値行列にしか

対応してないし…

Page 9: SVM&R with Yaruo!!#2

正定値行列と、半正

定値行列のおおまか

な違いは、行列式の

値が≧0か、>0かの

差なんだお…

Page 10: SVM&R with Yaruo!!#2

今度はkernlabパッケ

ージのipopを試して

見るお…

こっちなら半正定値

行列でもきっと……

Page 11: SVM&R with Yaruo!!#2

引数は多いわ、1次元

行列なのにエラー吐

くわ、引数と違う形式

でもエラー吐かない

わイミフすぎるお!

Page 12: SVM&R with Yaruo!!#2

こうなりゃヤケだお!

適当にそれっぽい変

数作りまくってエラー

が消えるまで試し続

けるお!

Page 13: SVM&R with Yaruo!!#2
Page 14: SVM&R with Yaruo!!#2

なんか解が出た

Page 15: SVM&R with Yaruo!!#2

これで超平面が引け

るお!SVMが完成し

たお!これで勝つる!

Page 16: SVM&R with Yaruo!!#2

いい所まで出来たが、

それでは不十分。

あと少し必要

Page 17: SVM&R with Yaruo!!#2
Page 18: SVM&R with Yaruo!!#2

これまで解いていたのはマージン(距離)の最大化問題。ここで得られた解は超平面そのものではない。あと1ステップ必要

Page 19: SVM&R with Yaruo!!#2

ここから先は楽勝だ

お!式に突っ込めば

すぐに超平面が完成

したお!!

Page 20: SVM&R with Yaruo!!#2

実 装 完 了

Page 21: SVM&R with Yaruo!!#2

じゃあ次は非線形な

SVMを実装してもらう。

ここまで来たら後は簡

単(な筈)

Page 22: SVM&R with Yaruo!!#2
Page 23: SVM&R with Yaruo!!#2

お前は何を言っているんだ

Page 24: SVM&R with Yaruo!!#2

やる夫で学ぶ非線形なSVM

Page 25: SVM&R with Yaruo!!#2

あの…いきなり簡単

とか言われましても…

Page 26: SVM&R with Yaruo!!#2

そもそも「非線形な

SVM」ってどんな感じ

なんだお…?

Page 27: SVM&R with Yaruo!!#2

じゃあ簡単な質問。

このような一次元の

データをSVMでどう

分割する?

Page 28: SVM&R with Yaruo!!#2

そんなの楽勝だお。

こんな風に赤い点と青

い点の間に超平面を

引っ張ればいいお。

Page 29: SVM&R with Yaruo!!#2

じゃあ、もしさっきの

データがこういう分布

なら?

Page 30: SVM&R with Yaruo!!#2

ちょっと待つお…

これは明らかに直線で

分割するSVMでは無

理だお…

Page 31: SVM&R with Yaruo!!#2

じゃあこのデータを

何らかの関数を使って

二次元に拡張したとし

よう

Page 32: SVM&R with Yaruo!!#2

こうするとどうだろう?

SVMでのデータ分割

は可能だろうか

Page 33: SVM&R with Yaruo!!#2

これなら楽勝だお!

ここに一本引いてやれ

ばいいお!

Page 34: SVM&R with Yaruo!!#2

これが非線形分離を

行うSVMの原理。

データを線形分離可

能な高次元空間まで

写像して分離する。

Page 35: SVM&R with Yaruo!!#2

わかったつもりになれる解説

Page 36: SVM&R with Yaruo!!#2

ここでちょっと数式を使って解説します。

Page 37: SVM&R with Yaruo!!#2

さて、先ほど「高次元空間に写像する」と言いました。これは地味ながらもSVMの特徴的な部分です。

Page 38: SVM&R with Yaruo!!#2

何故ならば、他のデータ分析やクラス判別の手法では、「データの次元をいかに落とすか」という点に焦点を置いていたからです。

Page 39: SVM&R with Yaruo!!#2

しかし、線形分離可能な高次元空間とはどんな状態なのでしょうか?また、その空間への写像はどのように記述すればいいのでしょうか?

Page 40: SVM&R with Yaruo!!#2

ここで、「カーネルトリック」という手法が用いられます。

Page 41: SVM&R with Yaruo!!#2

証明その他諸々を省くと、これは「写像がどんな形かわからなくても、ベクトルの内積だけで表せたら楽なんじゃね?wwwwwうはwwwwwwwwww」という方法です

Page 42: SVM&R with Yaruo!!#2

それが更に発展し「じゃあφ(x1)φ(x2)って書くより K(x1,x2)みたいな関数で代用できるんじゃねwwwwwww天才現るwwwwwwww」となりました。この時の関数 Kをカーネル関数と呼びます。

Page 43: SVM&R with Yaruo!!#2

この時用いられるカーネルの代表的なものにガウシアンカーネルがあります。

Page 44: SVM&R with Yaruo!!#2

さて、ここで現れるのはベクトルの内積です。これをSVMの式に代入して見ましょう。

Page 45: SVM&R with Yaruo!!#2

前回のスライドじゃずれちゃってたんですが、線形分離のSVMに置ける最適化問題はこのようになっています。

Page 46: SVM&R with Yaruo!!#2

この後半部はベクトルの内積になっています。つまり、ここをカーネル関数で置き換えてやると…

Page 47: SVM&R with Yaruo!!#2

このような形になります。非常に以前の式に似ていて、かつシンプルです。

Page 48: SVM&R with Yaruo!!#2

あとは Rで実装するならば行列を少しだけ書き換えてipopに投げてやれば良い、という事ですね。

Page 49: SVM&R with Yaruo!!#2

これなら式の形が前

回のと近くいからなん

とかなりそうだお!

Page 50: SVM&R with Yaruo!!#2

この場合問題となるの

は、適切なパラメータ。

例えばガウシアンなら

ば、σをどうするか、で

結果が変わってくる

Page 51: SVM&R with Yaruo!!#2

それでもこれならきっ

となんとかなるお!

これで卒論も修論も

楽勝だおwwwwww

ww

Page 52: SVM&R with Yaruo!!#2

研究室楽勝すぎるおwwwwww数理計画系の研究室涙目だおwwwwwwwwww

Page 53: SVM&R with Yaruo!!#2
Page 54: SVM&R with Yaruo!!#2

言い忘れていた。

あなたが今回 Rで実装

したSVMだが、あのま

までは実用に堪えがた

いほど重い。

Page 55: SVM&R with Yaruo!!#2

それにうちの研究室で

は、SVMを発展させた

OCSVMや多クラスの

SVM、そして線形回帰

に応用させたSVRに取

り組むのがメイン

Page 56: SVM&R with Yaruo!!#2

なので今後は C++で

SVMを実装してもらう。

Page 57: SVM&R with Yaruo!!#2
Page 58: SVM&R with Yaruo!!#2

お前は何を言っているんだ

Page 59: SVM&R with Yaruo!!#2

ネタではない。 Rの

SVMパッケージでは対

応できないような応用

を行う為には実装が必

Page 60: SVM&R with Yaruo!!#2

 無   理

Page 61: SVM&R with Yaruo!!#2
Page 62: SVM&R with Yaruo!!#2

次回

やる夫で学ぶ Random Forest