Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
やる夫で学ぶ SVM with R 発表者: y_benjo
自己紹介
<ul><li>Twitter id : y_benjo (便所) </li></ul>
<ul><li>http://d.hatena.ne.jp/repose </li></ul>
<ul><li>今回は「やる夫で学ぶSVM with R」 </li></ul><ul><li>「SVMって何?」というところから、Rでの簡単な実装まで </li></ul><ul><li>全てフィクションです </li></ul>
イントロダクション 08年春
さて、機械学習の研究室に 入ったはいいけど 機械学習がわからないお…
というかここって一体 何をするところなんだお? 学習? AI ?人口知能?長門? かっこよさげな名前だけで研究 室を選んだのが間違いだったお ……
機械学習とはパターン認識 の一分野。 簡潔な言い方をすると、 ここは、どのようにデータ を分類するかという事に取 り組んでいる研究室。
急に変なのが出てきた! あんた誰だお?
私は長門有希。 研究室の M2 にして 今回の案内役。
一見無秩序に思える大量の データからいかに関係性を 見出すか、その為にどのよ うな手法が有効か。その手 法を考えるのが機械学習。
とりわけこの研究室では SVM について熱心に取り 組んでいる。 あなたの卒論・修論も、 おそらく SVM に関する内 容になるだろう
SVM って何だお? やる夫の知識は 2 年生の 「統計 2 」で止まってる んだお…
SVM は Support Vector  Machine と呼ばれる手法。 長くなるので次のスライド に
SVMとは
SVM とは Support Vector  Machine の略称です。 データ群を 2 クラスに分類する超平 面を引くことによってデータを分類 してしまおう という手法です。 具体例を挙げてみましょう。
例えば、このような点の集合があっ た場合、超平面はこのように引かれ ます。 このような分離を、超平面は線形な ので、「 線形分離 」と言います。
次にこのような場合、超平面は直線 状にならず、曲線状になってしまい ます。 このような分離を「 非線形分離 」と 呼びます。
ここで、気をつけてほしいことが あります。 さきほどの例では、超平面は直線に なっていましたが、これはデータが 2 次元のベクトルだからです(デー タが 3 次元なら超平面は平面)。 通常、データは d 次元なので「 超平 面 」という名が付け...
非線形分離の場合、 SVM は カーネル トリック という手法を使わなければ なりません。 その詳細は後述するとして、今回は 線形分離が可能なデータ集合を考え、 それを分離する SVM について取り上 げます。
『超平面』を引くことにより データを線形分離します!
だっておwwwwwwww 『超平面』とかどこの中二 病だおwwwwwwww 線を一本引くだけならやる 夫にも楽勝だおwwwww wwwwwwwwww
 
そこまで言うならあなたに SVM を実装 してもらう
Hello,World ですら友達の をコピペしたのにコンパイ ルエラーが出まくって先生 も諦めたレベルだお!? いきなり何を言い出すんだ お!? やる夫はプログラミングな んて全くできないお!
大丈夫、実装する言語には R を使ってもらう。 R なら行列操作も容易。
それに今回は線形分離だけ を行う SVM を作ってくれ ればいい。 カーネルメソッドはまた次 の機会( Tsukuba.R#3 ) にでも。
いやいや次とかないから
とりあえず数式を出し て欲しいお。 それを見ないと何とも 言えないお…(数式を 見たからといって実装 は無理だろうけど…)
SVMの簡単な理論
ここからは数式の説明に入りま す。ちょっとだけギリシャ文字 が出てきますが、適当に聞き流 しながら雰囲気を掴んでくださ い。 興味ない人はスルーしてハート マン軍曹が出てくるスライドだ け見てくれればおk
SVM は先ほど述べたように、 2 つのクラスを分割する「超平 面」 と呼ばれるものを引くアル ゴリズムです。 ではそれを定式化してみましょ う。
さて、今データ点を 2 次元のベ クトル として考え、このように 分布しているとしましょう。
この時、これらのデータを「 訓 練集合 」と呼びます。そして同 時に「 教師信号 」というものも 考えます。
いいか、これからお前ら 屑を教育してやる!!! じっくりかわいがってや る!泣いたり笑ったり出 来なくしてやる! その日まではウジ虫だ! 地球上で最下等の生命体 だ !
訓練集合 に対して教師信号を つまり、 訓練集合の各 データがクラス 1 なら 1 、 クラス 2 ならー 1 を取る ! 糞単純な話だ!わかった か! 念のため言っておくが各 データは d 次元のベクト ルだ!
訓練集合と教師信号の組 み合わせを        とし、これを「 学習デー タ 」と呼ぶことにする! 何故「学習」かというと、 これらのデータを元に超 平面が計算 されるからだ。 だから、学習データが糞 ならそこから得られる超 平面はまるでそび...
では赤い点をクラス 1 、青い点 をクラス 2 としましょう。
そして、このように分離する超 平面の存在を仮定します。 この時、超平面は( w,b )という形で表されます。
「 超平面が (w,b) で表される 」 というのは、超平面に一番近い データ集合において となります。ここで、新たな データ集合が与えられた場合は、 等号が等号付き不等号に変わり ます。
そして、 各訓練集合から超平面 までの距離 を γ とし、これを 幾 何マージン と呼ぶことにしま しょう。
この時、幾何マージン γ は で表されます。マージンは、 超 平面と各訓練集合との距離 を示 していますから、 マージンは大 きければ大きいほど良い という 事になります。
ここで、次のような最大化問題 を考えます。 Max:     -> Min: s.t (∵教師信号の定義より)
寝てる奴は起きろ!これ から要点だけまとめてや る! 1)SVM は超平面=境界 を引く! 2) その時、境界からの距 離をマージンと呼ぶ! 3) マージンはできるだけ 大きくする!
よしお前ら、お前らの仕 事はこの マージン最大化 問題を解く事 だ! それまでじっくり可愛 がってやる!泣いたり 笑ったりできなくしてや る! わかったか、ウジ虫!
……… ハッ!
無理だお!!!! 数理計画の授業で死に 掛けたやる夫には無理 すぎて死ぬお!!!
問題無い。そこで R を使う。 他のプログラミング言語で あればニュートン法や最急 降下法を使うところだが、 R なら二次計画のパッケー ジが用意されている。
ならきっとどうにかなるお…… 色々ぐぐりながらやってみるお
とりあえずこの式をラグラン ジュの未定乗数法を使って凸二 次計画問題に変形して… ここ説明すんのだるいので省く お。
二次計画を解くための R のパッ ケージは quadprog 、関数は solve.QP() らしいお…えーっと … 使い方は…っと…
Solve a Quadratic Programming Problem Description: This routine implements the dual method of Goldfarb and Idnani (1982, 1...
と、とにかく…引数に合うよう に式を変形させて…条件式はそ のまま使えそうだから使って…
を、行列表現に書き換えれば 後半部分はそれぞれ、 x_i ・ x_j を要素に持つ行列Xと、 y_iy_j を要素に持つ行列Yに書き換え て… X*Y ってやれば要素が な行列が出来るハズだお…
やったらエラー吐くお! つうか半正定値行列になら ないお!!!
… kernlab パッケージの ipop も使えなかったし…
……
 
 
 
Upcoming SlideShare
Loading in …5
×

SVM&R with Yaruo!!

19,815 views

Published on

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

Published in: Technology, Business
  • Be the first to comment

SVM&R with Yaruo!!

  1. 1. やる夫で学ぶ SVM with R 発表者: y_benjo
  2. 2. 自己紹介
  3. 3. <ul><li>Twitter id : y_benjo (便所) </li></ul>
  4. 4. <ul><li>http://d.hatena.ne.jp/repose </li></ul>
  5. 5. <ul><li>今回は「やる夫で学ぶSVM with R」 </li></ul><ul><li>「SVMって何?」というところから、Rでの簡単な実装まで </li></ul><ul><li>全てフィクションです </li></ul>
  6. 6. イントロダクション 08年春
  7. 7. さて、機械学習の研究室に 入ったはいいけど 機械学習がわからないお…
  8. 8. というかここって一体 何をするところなんだお? 学習? AI ?人口知能?長門? かっこよさげな名前だけで研究 室を選んだのが間違いだったお ……
  9. 9. 機械学習とはパターン認識 の一分野。 簡潔な言い方をすると、 ここは、どのようにデータ を分類するかという事に取 り組んでいる研究室。
  10. 10. 急に変なのが出てきた! あんた誰だお?
  11. 11. 私は長門有希。 研究室の M2 にして 今回の案内役。
  12. 12. 一見無秩序に思える大量の データからいかに関係性を 見出すか、その為にどのよ うな手法が有効か。その手 法を考えるのが機械学習。
  13. 13. とりわけこの研究室では SVM について熱心に取り 組んでいる。 あなたの卒論・修論も、 おそらく SVM に関する内 容になるだろう
  14. 14. SVM って何だお? やる夫の知識は 2 年生の 「統計 2 」で止まってる んだお…
  15. 15. SVM は Support Vector Machine と呼ばれる手法。 長くなるので次のスライド に
  16. 16. SVMとは
  17. 17. SVM とは Support Vector Machine の略称です。 データ群を 2 クラスに分類する超平 面を引くことによってデータを分類 してしまおう という手法です。 具体例を挙げてみましょう。
  18. 18. 例えば、このような点の集合があっ た場合、超平面はこのように引かれ ます。 このような分離を、超平面は線形な ので、「 線形分離 」と言います。
  19. 19. 次にこのような場合、超平面は直線 状にならず、曲線状になってしまい ます。 このような分離を「 非線形分離 」と 呼びます。
  20. 20. ここで、気をつけてほしいことが あります。 さきほどの例では、超平面は直線に なっていましたが、これはデータが 2 次元のベクトルだからです(デー タが 3 次元なら超平面は平面)。 通常、データは d 次元なので「 超平 面 」という名が付けられています。
  21. 21. 非線形分離の場合、 SVM は カーネル トリック という手法を使わなければ なりません。 その詳細は後述するとして、今回は 線形分離が可能なデータ集合を考え、 それを分離する SVM について取り上 げます。
  22. 22. 『超平面』を引くことにより データを線形分離します!
  23. 23. だっておwwwwwwww 『超平面』とかどこの中二 病だおwwwwwwww 線を一本引くだけならやる 夫にも楽勝だおwwwww wwwwwwwwww
  24. 25. そこまで言うならあなたに SVM を実装 してもらう
  25. 26. Hello,World ですら友達の をコピペしたのにコンパイ ルエラーが出まくって先生 も諦めたレベルだお!? いきなり何を言い出すんだ お!? やる夫はプログラミングな んて全くできないお!
  26. 27. 大丈夫、実装する言語には R を使ってもらう。 R なら行列操作も容易。
  27. 28. それに今回は線形分離だけ を行う SVM を作ってくれ ればいい。 カーネルメソッドはまた次 の機会( Tsukuba.R#3 ) にでも。
  28. 29. いやいや次とかないから
  29. 30. とりあえず数式を出し て欲しいお。 それを見ないと何とも 言えないお…(数式を 見たからといって実装 は無理だろうけど…)
  30. 31. SVMの簡単な理論
  31. 32. ここからは数式の説明に入りま す。ちょっとだけギリシャ文字 が出てきますが、適当に聞き流 しながら雰囲気を掴んでくださ い。 興味ない人はスルーしてハート マン軍曹が出てくるスライドだ け見てくれればおk
  32. 33. SVM は先ほど述べたように、 2 つのクラスを分割する「超平 面」 と呼ばれるものを引くアル ゴリズムです。 ではそれを定式化してみましょ う。
  33. 34. さて、今データ点を 2 次元のベ クトル として考え、このように 分布しているとしましょう。
  34. 35. この時、これらのデータを「 訓 練集合 」と呼びます。そして同 時に「 教師信号 」というものも 考えます。
  35. 36. いいか、これからお前ら 屑を教育してやる!!! じっくりかわいがってや る!泣いたり笑ったり出 来なくしてやる! その日まではウジ虫だ! 地球上で最下等の生命体 だ !
  36. 37. 訓練集合 に対して教師信号を つまり、 訓練集合の各 データがクラス 1 なら 1 、 クラス 2 ならー 1 を取る ! 糞単純な話だ!わかった か! 念のため言っておくが各 データは d 次元のベクト ルだ!
  37. 38. 訓練集合と教師信号の組 み合わせを        とし、これを「 学習デー タ 」と呼ぶことにする! 何故「学習」かというと、 これらのデータを元に超 平面が計算 されるからだ。 だから、学習データが糞 ならそこから得られる超 平面はまるでそびえたつ 糞だ!ジジイのファック の方がまだ気合が入って る!
  38. 39. では赤い点をクラス 1 、青い点 をクラス 2 としましょう。
  39. 40. そして、このように分離する超 平面の存在を仮定します。 この時、超平面は( w,b )という形で表されます。
  40. 41. 「 超平面が (w,b) で表される 」 というのは、超平面に一番近い データ集合において となります。ここで、新たな データ集合が与えられた場合は、 等号が等号付き不等号に変わり ます。
  41. 42. そして、 各訓練集合から超平面 までの距離 を γ とし、これを 幾 何マージン と呼ぶことにしま しょう。
  42. 43. この時、幾何マージン γ は で表されます。マージンは、 超 平面と各訓練集合との距離 を示 していますから、 マージンは大 きければ大きいほど良い という 事になります。
  43. 44. ここで、次のような最大化問題 を考えます。 Max:    -> Min: s.t (∵教師信号の定義より)
  44. 45. 寝てる奴は起きろ!これ から要点だけまとめてや る! 1)SVM は超平面=境界 を引く! 2) その時、境界からの距 離をマージンと呼ぶ! 3) マージンはできるだけ 大きくする!
  45. 46. よしお前ら、お前らの仕 事はこの マージン最大化 問題を解く事 だ! それまでじっくり可愛 がってやる!泣いたり 笑ったりできなくしてや る! わかったか、ウジ虫!
  46. 47. ……… ハッ!
  47. 48. 無理だお!!!! 数理計画の授業で死に 掛けたやる夫には無理 すぎて死ぬお!!!
  48. 49. 問題無い。そこで R を使う。 他のプログラミング言語で あればニュートン法や最急 降下法を使うところだが、 R なら二次計画のパッケー ジが用意されている。
  49. 50. ならきっとどうにかなるお…… 色々ぐぐりながらやってみるお
  50. 51. とりあえずこの式をラグラン ジュの未定乗数法を使って凸二 次計画問題に変形して… ここ説明すんのだるいので省く お。
  51. 52. 二次計画を解くための R のパッ ケージは quadprog 、関数は solve.QP() らしいお…えーっと … 使い方は…っと…
  52. 53. Solve a Quadratic Programming Problem Description: This routine implements the dual method of Goldfarb and Idnani (1982, 1983) for solving quadratic programming problems of the form 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
  53. 54. と、とにかく…引数に合うよう に式を変形させて…条件式はそ のまま使えそうだから使って…
  54. 55. を、行列表現に書き換えれば 後半部分はそれぞれ、 x_i ・ x_j を要素に持つ行列Xと、 y_iy_j を要素に持つ行列Yに書き換え て… X*Y ってやれば要素が な行列が出来るハズだお…
  55. 56. やったらエラー吐くお! つうか半正定値行列になら ないお!!!
  56. 57. … kernlab パッケージの ipop も使えなかったし…
  57. 58. ……

×