More Related Content
Similar to Sakusaku svm (20)
Sakusaku svm
- 2. 自己紹介
● ID:AntiBayesian
● あんちべ!とお呼び下さい
● 専門:テキストマイニング、自然言語処理
● 職業:某ATMが○○な銀行で金融工学研究員とか
いう胡散臭い素敵なことしてる
● 自然言語処理職大絶賛募集中!!!!
● math.empress@gmail.com
2
- 4. Postする前に
ウケルかどうか
判定してみたよ
あんちべのすべらない話
~俺のツイートがこんなにウケないはずがない~
http://www.slideshare.net/AntiBayesian/ss-8487534
4
- 6. 正例、負例の例
● スパムアカウントかどうか見分けたい
➢
正例:スパムアカウント、負例:非スパムアカウント
● デマ情報かどうか判別したい
➢ 正例:デマtweet、負例:正しいtweet
● 正例・負例は逆でも良い(正:非スパム、負:スパム
等)。抽出したいものを正例にするケースが多い
● 重要なのは、やりたいことに応じてデータを収集
し、クラスを適切に設定すること
6
- 7. やりたいことを決めよう!
● 自分のtweetがウケルか予測したい!
● もう渾身のネタが滑るのは嫌だ!!!
● じゃあデータは何が必要???
● 正例:☆が沢山ついてるtweet、負例:☆ついてな
いtweetにすると良いのでは???
7
- 8. 学習データを集めよう
● 正例:favstarから人気tweetを取得
● 負例:twitter Streaming APIから適当にサンプリン
グ
● 正例負例、各々約3万件ずつチョイス
● 正例には1、負例には-1クラスタグを付ける
※Tweetを取得するツール作ったよ!
http://d.hatena.ne.jp/AntiBayesian/20110702
8
- 11. テストデータ
● 実際に分類をしたいデータ
● クラスタグは仮置きする
※今回は精度を実感しやすくするため、fav, nonfav
が判明しているものをテストデータに用いる。具体的
には、favstar, StreamingAPIから取得したデータのう
ち、6月末までのもの約3万件を学習データに、7月以
降のもの約200件をテストデータに用いる。favの
tweetがどれ位の精度でfavに分類されるか見る
- 15. 分類器って何???
● 正負例から各々の特徴を抽出・学習して、与えた
データの正負を自動で判別してくれるもの
– 正負のデータ(答え)が予め用意されてる学習を、教師有り学
習と言う
● 様々な分類器がある
●
ナイーブベイズ
●
決定木
● パーセプトロン
● SVM(サポートベクターマシーン)
● 今回はSVMを使うよ!
15
- 16. なぜSVMを使うの???
● 現在大変よく使われてる手法
● 超パワフル
● テキストデータは高次元になりがち。SVMは高次
元の分類に強み
● 沢山の種類・工夫が既にあり、探せば良いのが幾
らでも見つかる
● “超平面”とか”次元の呪い”とか”カーネルトリック”
とか、出てくる単語が格好良くて中二病をくすぐる
16
- 17. SVMとは???
● データを高次元に写像して分類する手法
“サポートベクターマシンは、本来は線形分離不可能な問題には適用で
きない。 しかし、再生核ヒルベルト空間の理論を取り入れたカーネル関
数を用いてパターンを有限もしくは無限次元の特徴空間へ写像し、特
徴空間上で線形分離を行う手法が 1992年に Vladimir Vapnik らに
よって提案された。 これにより、非線形分類問題にも優れた性能を発揮
することがわかり、近年特に注目を集めている。
なお、カーネル関数を取り入れた一連の手法では、どのような写像が行
われるか知らずに計算できることから、カーネルトリック (Kernel Trick)
と呼ばれている”
by Wikipedia
17
- 21. 高次元へ写像して分離してみる
● 2次元のデータを無理やり3次元に持ってくる
● 縦軸×横軸から高さ軸を作って3次元にしてみた
これが超平面だ!
青丸:第1, 3象限の縦軸×横軸→高さ軸正
赤丸:第2,4象限の縦軸×横軸→高さ軸負
21
- 22. SVMすごい!!!!
● 高次元に写像すれば、線形分離不可能なものも分
類出来る!
● かっこいい!
● つおい!!!
● すごい!!!
●
使ってみるしかない!!!!
● じゃあ数式見て実装しよう!!!
22
- 24. SakuSaku-SVM作ったよ!
● GUIテキストマイニング用ツール
● 前処理とSVMが実行可能
● SVMエンジンはliblinear(高速な線形分類器)
● 分かち書きはtinySegmenter
● WndowsXP、.NET Framework3.0以上で動作
● http://www24.atpages.jp/antibayesian/app/の
SSSVM.zipをDL
24
- 25. SS-SVM前処理で生成されるファイル
● テキストの統計処理
● 2gram:学習データのバイグラム
● WordSet:学習データに含まれる単語
● WordCount:学習データの単語頻度(昇順
● SVM用ファイル
● SVM_train:SVM学習用
● SVM_test:SVMテスト用
25
- 28. SVMの結果の見方
● Accuracy.txt
● 仮置きのタグとSVM分類で付与したタグのマッチング
率。今回は仮置きタグが正しいとみなせる状況であるた
め、精度と考えて差し支えない
● Output.txt
● 各行のtweetが正負どちらに判定されたか、タグで表わ
される。n行目に1と出力されていた場合、n行目の
tweetは1クラス(今回の例ではfav tweet)に分類された
という意味
28
- 29. やってみた結果
● 調整したら86%の精度でfav, nonfav分類出来た
● nonfav側に分類されがちな感じ
– なぜかを考えてみよう!
● favなのにnonfavと分類されたtweetは、他所への
リンク物が多い。そりゃ分類難しいわ…
● nonfavなのにfavに分類されたtweet、結構面白い
– ゴルゴ 「俺の後ろから押すなよ絶対に押すなよ」
– 母『暑くてスルメになりそう』…スルメ?w
●
割とイケル気がしてきた
29
- 31. まとめ
● tweetからスパム判定とか色んなことが出来る
● やりたいことに応じて、何が正負例データに該当す
るかよく考えなくてはならない
● SVMという高次元・非線形分離にも対応したパワ
フルな分類器がある
● SS-SVMを使うと、テキストの前処理からSVM実行
までマウスクリックだけで出来る
● 簡単にSVM出来るんだから、もうやるっきゃない!
31