61
やややややや SVM with R やややy_benjo

SVM&R with Yaruo!!

Embed Size (px)

DESCRIPTION

Tsukuba.R#2http://d.hatena.ne.jp/repose

Citation preview

Page 1: SVM&R with Yaruo!!

やる夫で学ぶ SVM with R

発表者: y_benjo

Page 2: SVM&R with Yaruo!!

自己紹介

Page 3: SVM&R with Yaruo!!

• Twitter id : y_benjo (便所)

Page 4: SVM&R with Yaruo!!

•http://d.hatena.ne.jp/repose

Page 5: SVM&R with Yaruo!!

•今回は「やる夫で学ぶ SVM with R」

•「 SVMって何?」というところから、 Rでの簡単な実装まで

•全てフィクションです

Page 6: SVM&R with Yaruo!!

イントロダクション  08年春

Page 7: SVM&R with Yaruo!!

さて、機械学習の研究室に入ったはいいけど機械学習がわからないお…

Page 8: SVM&R with Yaruo!!

というかここって一体何をするところなんだお?学習? AI ?人口知能?長門?かっこよさげな名前だけで研究室を選んだのが間違いだったお……

Page 9: SVM&R with Yaruo!!

機械学習とはパターン認識の一分野。簡潔な言い方をすると、ここは、どのようにデータを分類するかという事に取り組んでいる研究室。

Page 10: SVM&R with Yaruo!!

急に変なのが出てきた!あんた誰だお?

Page 11: SVM&R with Yaruo!!

私は長門有希。研究室のM2にして今回の案内役。

Page 12: SVM&R with Yaruo!!

一見無秩序に思える大量のデータからいかに関係性を見出すか、その為にどのような手法が有効か。その手法を考えるのが機械学習。

Page 13: SVM&R with Yaruo!!

とりわけこの研究室ではSVMについて熱心に取り組んでいる。あなたの卒論・修論も、おそらく SVMに関する内容になるだろう

Page 14: SVM&R with Yaruo!!

SVM って何だお?やる夫の知識は 2 年生の「統計 2 」で止まってるんだお…

Page 15: SVM&R with Yaruo!!

SVMは Support Vector Machineと呼ばれる手法。長くなるので次のスライドに

Page 16: SVM&R with Yaruo!!

SVMとは

Page 17: SVM&R with Yaruo!!

SVMとは Support Vector Machineの略称です。データ群を 2クラスに分類する超平面を引くことによってデータを分類してしまおうという手法です。具体例を挙げてみましょう。

Page 18: SVM&R with Yaruo!!

例えば、このような点の集合があった場合、超平面はこのように引かれます。このような分離を、超平面は線形なので、「線形分離」と言います。

Page 19: SVM&R with Yaruo!!

次にこのような場合、超平面は直線状にならず、曲線状になってしまいます。このような分離を「非線形分離」と呼びます。

Page 20: SVM&R with Yaruo!!

ここで、気をつけてほしいことがあります。さきほどの例では、超平面は直線になっていましたが、これはデータが2次元のベクトルだからです(データが 3次元なら超平面は平面)。

通常、データは d次元なので「超平面」という名が付けられています。

Page 21: SVM&R with Yaruo!!

非線形分離の場合、 SVMはカーネルトリックという手法を使わなければなりません。その詳細は後述するとして、今回は線形分離が可能なデータ集合を考え、それを分離する SVMについて取り上げます。

Page 22: SVM&R with Yaruo!!

『超平面』を引くことによりデータを線形分離します!

Page 23: SVM&R with Yaruo!!

だっておwwwwwwww『超平面』とかどこの中二病だおwwwwwwww

線を一本引くだけならやる夫にも楽勝だおwwwwwwwwwwwwwww

Page 24: SVM&R with Yaruo!!
Page 25: SVM&R with Yaruo!!

そこまで言うならあなたにSVMを実装してもらう

Page 26: SVM&R with Yaruo!!

Hello,World ですら友達のをコピペしたのにコンパイルエラーが出まくって先生も諦めたレベルだお!?

いきなり何を言い出すんだお!?やる夫はプログラミングなんて全くできないお!

Page 27: SVM&R with Yaruo!!

大丈夫、実装する言語にはRを使ってもらう。Rなら行列操作も容易。

Page 28: SVM&R with Yaruo!!

それに今回は線形分離だけを行う SVMを作ってくれればいい。カーネルメソッドはまた次の機会( Tsukuba.R#3)にでも。

Page 29: SVM&R with Yaruo!!

いやいや次とかないから

Page 30: SVM&R with Yaruo!!

とりあえず数式を出して欲しいお。それを見ないと何とも言えないお…(数式を見たからといって実装は無理だろうけど…)

Page 31: SVM&R with Yaruo!!

SVMの簡単な理論

Page 32: SVM&R with Yaruo!!

ここからは数式の説明に入ります。ちょっとだけギリシャ文字が出てきますが、適当に聞き流しながら雰囲気を掴んでください。興味ない人はスルーしてハートマン軍曹が出てくるスライドだけ見てくれればおk

Page 33: SVM&R with Yaruo!!

SVM は先ほど述べたように、 2つのクラスを分割する「超平面」と呼ばれるものを引くアルゴリズムです。ではそれを定式化してみましょう。

Page 34: SVM&R with Yaruo!!

さて、今データ点を 2 次元のベクトルとして考え、このように分布しているとしましょう。

Page 35: SVM&R with Yaruo!!

この時、これらのデータを「訓練集合」と呼びます。そして同時に「教師信号」というものも考えます。

Page 36: SVM&R with Yaruo!!

いいか、これからお前ら屑を教育してやる!!!じっくりかわいがってやる!泣いたり笑ったり出来なくしてやる!その日まではウジ虫だ!地球上で最下等の生命体だ !

Page 37: SVM&R with Yaruo!!

訓練集合に対して教師信号を

lxxxx ,...,, 21

2

1

1

1

cx

cxy

i

ii

つまり、訓練集合の各データがクラス 1なら1、クラス 2ならー 1を取る!糞単純な話だ!わかったか!念のため言っておくが各データは d次元のベクトルだ!

Page 38: SVM&R with Yaruo!!

訓練集合と教師信号の組み合わせを       とし、これを「学習データ」と呼ぶことにする!何故「学習」かというと、これらのデータを元に超平面が計算されるからだ。

だから、学習データが糞ならそこから得られる超平面はまるでそびえたつ糞だ!ジジイのファックの方がまだ気合が入ってる!

ll yxyxyx ,,...,,,, 2211

Page 39: SVM&R with Yaruo!!

では赤い点をクラス 1、青い点をクラス 2としましょう。

Page 40: SVM&R with Yaruo!!

そして、このように分離する超平面の存在を仮定します。この時、超平面は( w,b )という形で表されます。

Page 41: SVM&R with Yaruo!!

「超平面が (w,b)で表される」というのは、超平面に一番近いデータ集合において

2

1

1

1

cx

cxbxw・

となります。ここで、新たなデータ集合が与えられた場合は、等号が等号付き不等号に変わります。

Page 42: SVM&R with Yaruo!!

そして、各訓練集合から超平面までの距離を γとし、これを幾何マージンと呼ぶことにしましょう。

Page 43: SVM&R with Yaruo!!

この時、幾何マージン γは

で表されます。マージンは、超平面と各訓練集合との距離を示していますから、マージンは大きければ大きいほど良いという事になります。

2

1

w

Page 44: SVM&R with Yaruo!!

ここで、次のような最大化問題を考えます。

Max:    →Min:

s.t

(∵教師信号の定義より)

1bxwy ii ・

2

1

www・

Page 45: SVM&R with Yaruo!!

寝てる奴は起きろ!これから要点だけまとめてやる!

1)SVM は超平面=境界を引く!2)その時、境界からの距離をマージンと呼ぶ!3)マージンはできるだけ大きくする!

Page 46: SVM&R with Yaruo!!

よしお前ら、お前らの仕事はこのマージン最大化問題を解く事だ!それまでじっくり可愛がってやる!泣いたり笑ったりできなくしてやる!

わかったか、ウジ虫!

Page 47: SVM&R with Yaruo!!

………ハッ!

Page 48: SVM&R with Yaruo!!

無理だお!!!!数理計画の授業で死に掛けたやる夫には無理すぎて死ぬお!!!

Page 49: SVM&R with Yaruo!!

問題無い。そこで Rを使う。

他のプログラミング言語であればニュートン法や最急降下法を使うところだが、Rなら二次計画のパッケージが用意されている。

Page 50: SVM&R with Yaruo!!

ならきっとどうにかなるお……

色々ぐぐりながらやってみるお

Page 51: SVM&R with Yaruo!!

とりあえずこの式をラグランジュの未定乗数法を使って凸二次計画問題に変形して…

ここ説明すんのだるいので省くお。

Page 52: SVM&R with Yaruo!!

二次計画を解くための Rのパッケージは quadprog、関数はsolve.QP()らしいお…えーっと…使い方は…っと…

Page 53: SVM&R with Yaruo!!

Solve a Quadratic Programming ProblemDescription:This routine implements the dual method of Goldfarb and Idnani(1982, 1983) for solving quadratic programming problems of theform min(-d^T b + 1/2 b^T D b) with the constraints A^T b >= b_0.Usage:solve.QP(Dmat, dvec, Amat, bvec, meq=0, factorized=FALSE)…

日本語でおk

Page 54: SVM&R with Yaruo!!

と、とにかく…引数に合うように式を変形させて…条件式はそのまま使えそうだから使って…

Page 55: SVM&R with Yaruo!!

を、行列表現に書き換えれば後半部分はそれぞれ、 x_i ・ x_jを要素に持つ行列Xと、 y_iy_jを要素に持つ行列Yに書き換えて… X*Yってやれば要素が

l

jijijiji

l

ii xxyy

1,1 2

1max

jiji xxyy

な行列が出来るハズだお…

Page 56: SVM&R with Yaruo!!

やったらエラー吐くお!つうか半正定値行列にならないお!!!

Page 57: SVM&R with Yaruo!!

…kernlab パッケージのipop も使えなかったし…

Page 58: SVM&R with Yaruo!!

……

Page 59: SVM&R with Yaruo!!
Page 60: SVM&R with Yaruo!!
Page 61: SVM&R with Yaruo!!