SlideShare a Scribd company logo
Goodfind Engineer 番外編
SVMって名前かっこいいですよね
1日で学ぶ,SVM講座
〜サポートベクターマシーン〜
目次
• 目次
1. 機械学習のアプローチ方法
2. SVMとは?
3. 集合知の本でやってること
4. まとめ
以下時間があったら(てかやります)
1. 線形SVMの理論(ハードマージンSVM)
2. ソフトマージンSVM
3. 非線形SVM(カーネルトリック)
はじめに
• SVMだけで本が一冊書けてしまうので、今日
は本当に触りだけで許してください
作者: ネロクリスティアニーニ,ジョン
ショー‐テイラー,Nello
Cristianini,John Shawe‐Taylor,大北
剛
出版社/メーカー: 共立出版
発売日: 2005/03
通称赤本.読みづらいらしいので,右
側の黄色のPRMLのがオススメ.
SVMとは?
• (教師あり学習)パターン認識手法の1つ
• 一番認識性能が優れた学習モデルの1つ
• 実用例
– スパム検知,画像認識,文字認識,構文解析
(CaBoCha),テキスト分類etc...
• 具体例
– 顔の表情認識、軍事データセットを使用した新入
の検知,タンパク質の構造をシーケンスから予測
機械学習のアプローチ方法
1. 識別関数
– 入力データを見て、特定のクラスに属するよう識
別(パーセプトロン、ニューラルネットワーク、
SVM)
2. 識別モデル
– 入力データからクラス事後確率をモデル化して
識別(CRF:Conditional Random Fields)
3. 生成モデル
– 入力データがどのような分布で生成させたもの
かをモデル化して識別(ナイーブベイズ)
集合知の本でやっていること(線形分類)
デートサイトの男女
の年齢とマッチする
かしないかのデータ.
新しいデータが
●or☓の判別を行い
たい.
●の平
均
簡単な解答
xとyの平均を求め,
どちらのクラスに距
離が近いかを求める
+の平均
集合知の本でやっていること(線形分類)
●の平
均
簡単な解答
xとyの平均を求め,
どちらのクラスに距
離が近いかを求める
+の平均
新たに直線を引く.
直線は両クラスの中間
・左側ほどマッチしない
・右側ほどマッチする
これが分類のための
境界線(超平面)!
集合知の本でやっていること(線形分類)
• 内積で考えるともっと分類の判定に用いる
計算量が減ります
M0をマッチする,M1をマッチしな
いクラスの平均点とする.中間点
をCとする.
・分類したい点とのベクトルを考
え,内積が正ならM0,負ならM1に
分類できる.
集合知の本でやっていること(線形分類)
• 注意点
– これはあくまで線形分類器であり,境界線を探す
だけのものです. 誤判別ももちろん含まれる.
• 学習サンプルに複数のベクトルデータを持た
せても可能(9.4-9.5)
– 定性データ(性別)も定量化(1,0)したり,スケール
が異なるデータも,正規化すれば扱える
集合知の本でやっていること(非線形分類)
さて、問題です。
Q:左の図の境界線はどうやって引くんでしょうか??
(どちらのクラスも平均が同じ所...)
解けた人は今日の昼ごはんタダ!?
Ans. xとyを2乗したグラ
フで境界線を考える!!
集合知の本でやっていること(非線形分類)
• しかし,実際は点の変換を行うのは,難しい場
合が多い
• 次元が増えてしまうと更に複雑になり,なかな
か変換できない
• カーネルトリック
– 元データを線形写像で高次元に変換し,高次元で
内積を計算し,元のデータに返す作業.
– これで非線形も対応可能で超すごいんです!!
集合知の本でやっていること(非線形分類)
カーネルトリックのイメージ図です
(計算式は後ほど)
何が嬉しいかというと,関数の中身が分からなくてもカーネス関数(高次
元での内積のこと)がわかれば計算できる所.
さて、いよいよSVMの正体に迫ろう!!(9.7)
新しいクラス分類を考える
この例ではクラスの平均
による境界線を求めてい
るが...。
誤判別が境界線の上で
ちょいと起こっている.
境界線に近いのが該当す
る点が原因...
※多くの誤判別は境界線
付近で起こりやすい.
さて、いよいよSVMの正体に迫ろう!!(9.7)
では,境界線はどうやって引くべきなのか?
Ans.
境界線から各クラスの近傍
点までの距離を最大化する.
(マージンの最大化)
あとで公開
さて、いよいよSVMの正体に迫ろう!!(9.7)
では,境界線はどうやって引くべきなのか?
Ans.
境界線から各クラスの近傍
点までの距離を最大化する.
(マージンの最大化)
この直線を超平面という.
マージン上の点だけが境界線
を定めるのに使用される.
↓
他の点は不必要.
↓
マージン付近に存在するこれ
ら点をサポートベクターと呼
ぶ!
マージン
サポートベクター(超平面
を求めるのに使用)
集合知の本でやっていること(まとめ)
• まとめ
– サポートベクターを使い,超平面を求めるのが
SVM
– 超平面を求める⇔マージンの最大化
– 基本は線形分類だが,カーネルトリックを用いるこ
とで非線形にも対応.
オススメの本
言語処理のための機械学習入門
(自然言語処理シリーズ)
[単行本]
高村 大也 (著)
パター...ry)
わかりやすいパターン認識 [単行本]
石井 健一郎 (著)
集合知の本でやっていること
• 集合知の本のチャプターはこれで終了です
が...
• 内容があまりにもフワッとしすぎて,流石に
SVMの理論をあまり知らずに使用するのは
よくないのでは?(私もよくわかりません)
• もうちょっと理論も一緒に見てみましょう.SVM
は機械学習で超大事なポイントの1つです!
集合知の本でやっていること
こちらのスライドシェアがオススメです。

More Related Content

Viewers also liked

Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
Naotaka Yamada
 
NLP2012
NLP2012NLP2012
NLP2012
Yuki Nakayama
 
Hackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford reportHackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford report
Takahiro Okada
 
入門パターン認識と機械学習12章
入門パターン認識と機械学習12章入門パターン認識と機械学習12章
入門パターン認識と機械学習12章
hiro5585
 
MMDs 12.3 SVM
MMDs 12.3 SVMMMDs 12.3 SVM
MMDs 12.3 SVM
mfumi
 
Coursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector MachinesCoursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector Machines
TIS株式会社
 
SVM -R-
SVM -R-SVM -R-
SVM -R-
Yuu Kimy
 
サポートベクトルマシン入門
サポートベクトルマシン入門サポートベクトルマシン入門
サポートベクトルマシン入門
Wakamatz
 
Packages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージPackages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージ
Hiroki K
 
データマイニング勉強会3
データマイニング勉強会3データマイニング勉強会3
データマイニング勉強会3Yohei Sato
 
20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」tetsuro ito
 
とりあえず機械学習をやってみた
とりあえず機械学習をやってみたとりあえず機械学習をやってみた
とりあえず機械学習をやってみた
suzuki333333333
 
SVM&R with Yaruo!!
SVM&R with Yaruo!!SVM&R with Yaruo!!
SVM&R with Yaruo!!
guest8ee130
 
10分で分かるr言語入門ver2.7
10分で分かるr言語入門ver2.710分で分かるr言語入門ver2.7
10分で分かるr言語入門ver2.7Nobuaki Oshiro
 
Mathematicaで 機械学習してみた
Mathematicaで機械学習してみたMathematicaで機械学習してみた
Mathematicaで 機械学習してみた
Yu(u)ki IWABUCHI
 
MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法
Taikai Takeda
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集Hikaru Takemura
 

Viewers also liked (20)

Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
 
NLP2012
NLP2012NLP2012
NLP2012
 
Hackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford reportHackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford report
 
Nttr study 20130206_share
Nttr study 20130206_shareNttr study 20130206_share
Nttr study 20130206_share
 
入門パターン認識と機械学習12章
入門パターン認識と機械学習12章入門パターン認識と機械学習12章
入門パターン認識と機械学習12章
 
MMDs 12.3 SVM
MMDs 12.3 SVMMMDs 12.3 SVM
MMDs 12.3 SVM
 
Coursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector MachinesCoursera machine learning week7: Support Vector Machines
Coursera machine learning week7: Support Vector Machines
 
SVM -R-
SVM -R-SVM -R-
SVM -R-
 
サポートベクトルマシン入門
サポートベクトルマシン入門サポートベクトルマシン入門
サポートベクトルマシン入門
 
Packages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージPackages for data wrangling データ前処理のためのパッケージ
Packages for data wrangling データ前処理のためのパッケージ
 
データマイニング勉強会3
データマイニング勉強会3データマイニング勉強会3
データマイニング勉強会3
 
SVM
SVMSVM
SVM
 
20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」
 
とりあえず機械学習をやってみた
とりあえず機械学習をやってみたとりあえず機械学習をやってみた
とりあえず機械学習をやってみた
 
SVM&R with Yaruo!!
SVM&R with Yaruo!!SVM&R with Yaruo!!
SVM&R with Yaruo!!
 
10分で分かるr言語入門ver2.7
10分で分かるr言語入門ver2.710分で分かるr言語入門ver2.7
10分で分かるr言語入門ver2.7
 
Mathematicaで 機械学習してみた
Mathematicaで機械学習してみたMathematicaで機械学習してみた
Mathematicaで 機械学習してみた
 
MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 

集合知第7回

Editor's Notes

  1. 特徴空間がX=(サッカー、野球、政治、選挙)であり、Aさんが100単語発したある時の特徴ベクトルがX_A(50, 30, 15, 5)だとします。この場合、識別関数では、単に「サッカーという単語が出現した回数は50回である」とだけ考えます。対して、生成モデルでは「Aさんは特徴空間Xにおいて、サッカーという単語が出現したのは100回中50回なので、サッカーの出現確率は0.5だ」というように確率分布まで考えます。前者は、Aさんがさらに100単語発したときサッカーが何回出現するかを全く考慮していません。後者は、Aさんがさらに100単語発するなら、サッカーは50回程度出現するだろう」と考えます。「生成モデル」という名が表すように、「どのような確率分布でデータが生成されたのか?」というモデルを立てて識別するため、単に実際観測されたデータだけではなく、データが観測された背景まで考慮するので、データに欠損がある場合など、識別に有利に働く場合があります
  2. もともとX1はMoにちかいからM0に分類されるべき,そんでベクトル計算すると正になるから正解なのがわかる。
  3. 今回は年齢だけだったが、別にいろいろでーたあってもok! 黒板で説明しよう。