Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
集合知 プログラミング #9 高度な分類手法: カーネルメソッドとSVM (前半) 2013.4.2 集合知プログラミング勉強会 #TokyoCI @komiya_atsushi https://github.com/komiya-atsushi/TokyoCI-study
Slide 2
Slide 2 text
Agenda 1. 線形分類 2. 今回のお題 3. 基礎的な線形分類 4. データを線形分類しやすくする 「9.5 データのスケーリング」 までとします
Slide 3
Slide 3 text
By eschipul http://www.flickr.com/photos/eschipul/2957264066/ 線形分類
Slide 4
Slide 4 text
線形分類 •教師あり学習・クラス分類 •数値的な「特徴 (変数)」と「クラス」を持 つたくさんのデータをもとに、それらを二 つに分ける境界「超平面」を求める •超平面の「あちら」なのか「こちら」なの かを識別し、クラス分類を予測する
Slide 5
Slide 5 text
線形分類 •教師あり学習・クラス分類 •数値的な「特徴 (変数)」と「クラス」を持 つたくさんのデータをもとに、それらを二 つに分ける境界「超平面」を求める •超平面の「あちら」なのか「こちら」なの かを識別し、クラス分類を予測する 「超平面」とか、ちょっと何 言っちゃってんのあんた・・・
Slide 6
Slide 6 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105
Slide 7
Slide 7 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 【解決したい問題】 体積と重量から、 コインの真贋を明らかにしたい
Slide 8
Slide 8 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 【解決したい問題】 体積と重量から、 コインの真贋を明らかにしたい クラス 特徴
Slide 9
Slide 9 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 体積
Slide 10
Slide 10 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 重量
Slide 11
Slide 11 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 本物のコインと
Slide 12
Slide 12 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 ニセモノの コインを
Slide 13
Slide 13 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 分断する超平面 (線)を引く
Slide 14
Slide 14 text
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 いかにして、綺麗に分離できる 超平面を求められるか? が課題
Slide 15
Slide 15 text
非線形/線形分離不可能
Slide 16
Slide 16 text
非線形/線形分離不可能 二つのエリアに分かれて しまっている
Slide 17
Slide 17 text
非線形/線形分離不可能 ここに超平面を 引くと…
Slide 18
Slide 18 text
非線形/線形分離不可能 これらの分類 誤りが発生する
Slide 19
Slide 19 text
非線形/線形分離不可能 とはいえここに 超平面を引いても…
Slide 20
Slide 20 text
非線形/線形分離不可能 こんどはこちらが 分類誤りとなる
Slide 21
Slide 21 text
非線形/線形分離不可能 世の中には直線では 割り切れない問題もあるんだよ…
Slide 22
Slide 22 text
非線形/線形分離不可能 世の中には直線では 割り切れない問題もあるんだよ… この問題はこの後発表の大平さんが 解消してくれるはず…!
Slide 23
Slide 23 text
By paris20vt http://www.flickr.com/photos/21334906@N08/6259402565/ 今回のお題
Slide 24
Slide 24 text
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列)
Slide 25
Slide 25 text
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) 特徴 クラス
Slide 26
Slide 26 text
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) つまりは「ツ◯◯イ」とか 「オ◯◯◯ト」などの裏側で動かすと よい感じなシステムですねきっと!
Slide 27
Slide 27 text
男性・女性それぞれの年齢の散布図
Slide 28
Slide 28 text
男性・女性それぞれの年齢の散布図 • 緑色の丸印が適した組み合わせ • 赤の + 印が適していない組み合わせ 男性の年齢 女性の年齢
Slide 29
Slide 29 text
男性・女性それぞれの年齢の散布図 これでは線形分類できませんね…
Slide 30
Slide 30 text
今回のお題の特徴 •非線形である •変数(特徴)が相互に影響を与え合っ ている •変数が独立でない
Slide 31
Slide 31 text
今回のお題の特徴 •非線形である •変数(特徴)が相互に影響を与え合っ ている •変数が独立でない 与えられたデータの意味を考えず 解釈せずにそのまま分類器に かけることは、良い考えではない
Slide 32
Slide 32 text
基礎的な 線形分類
Slide 33
Slide 33 text
線形分類 •小難しいことを考える前に、簡単に作 れる線形分類器を作ってみましょう! •二つのクラスの平均をとり、平均の中 央に超平面を引くことにします •とっても荒っぽいですが、まあ、やって みましょう
Slide 34
Slide 34 text
単純化した問題で考えてみる
Slide 35
Slide 35 text
単純化した問題で考えてみる • 緑色の丸印が適した組み合わせ • 赤の + 印が適していない組み合わせ
Slide 36
Slide 36 text
単純化した問題で考えてみる 適していない クラスの平均 適している クラスの平均
Slide 37
Slide 37 text
単純化した問題で考えてみる 両クラスの平均の 真ん中に超平面を引く
Slide 38
Slide 38 text
単純化した問題で考えてみる 適していると 判断する領域 適していないと 判断する領域
Slide 39
Slide 39 text
単純化した問題で考えてみる 適していると 判断する領域 適していないと 判断する領域 超平面を引いたはいいが「あちら」と 「こちら」はどうやって判別するの?
Slide 40
Slide 40 text
ベクトルのなす角を見る M0 M1
Slide 41
Slide 41 text
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心
Slide 42
Slide 42 text
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心 M1 -M0
Slide 43
Slide 43 text
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心 O M1 -M0
Slide 44
Slide 44 text
ベクトルのなす角を見る M0 M1 C O
Slide 45
Slide 45 text
ベクトルのなす角を見る M0 M1 C O
Slide 46
Slide 46 text
ベクトルのなす角を見る M0 M1 C O M1 +M0
Slide 47
Slide 47 text
ベクトルのなす角を見る M0 M1 C O M1 +M0 (M1 +M0 )/2
Slide 48
Slide 48 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 49
Slide 49 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 50
Slide 50 text
ベクトルのなす角を見る M0 M1 X1 X2 C C-X1 C-X2
Slide 51
Slide 51 text
ベクトルのなす角を見る M0 M1 X1 X2 C 赤色のベクトルと緑色のベクトルが なす角に着目してみよう!
Slide 52
Slide 52 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 53
Slide 53 text
ベクトルのなす角を見る M0 M1 X1 X2 C < 90°
Slide 54
Slide 54 text
ベクトルのなす角を見る M0 M1 X1 X2 C < 90° 適している!
Slide 55
Slide 55 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 56
Slide 56 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 57
Slide 57 text
ベクトルのなす角を見る M0 M1 X1 X2 C > 90°
Slide 58
Slide 58 text
ベクトルのなす角を見る M0 M1 X1 X2 C > 90° 適していない!
Slide 59
Slide 59 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 60
Slide 60 text
ベクトルのなす角を見る M0 M1 X1 X2 C 角度が < 90° であれば「適している」 > 90° であれば「適していない」 と判断することができる!!!
Slide 61
Slide 61 text
ベクトルのなす角を見る M0 M1 X1 X2 C では、どうやって角度を 把握すればよいのか…?
Slide 62
Slide 62 text
ベクトルのなす角を見る M0 M1 X1 X2 C 角度が 90° を超えたか、 超えてないかのどちらかが 分かればそれで十分!
Slide 63
Slide 63 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 64
Slide 64 text
ベクトルのなす角を見る M0 M1 X1 X2 C
Slide 65
Slide 65 text
ベクトルのなす角を見る M0 M1 X1 X2 C cosθ の値が正か負かで 角度が 90° より大/小が分かる
Slide 66
Slide 66 text
ベクトルのなす角を見る M0 M1 X1 X2 C ベクトルの 内積を計算しましょう!
Slide 67
Slide 67 text
ベクトルの内積 • ∙ = cos
Slide 68
Slide 68 text
ベクトルの内積 • ∙ = cos a・b が正か負かで 判断できる
Slide 69
Slide 69 text
ベクトルの内積 • ∙ = cos • ∙ = + • = , , = ( , )
Slide 70
Slide 70 text
ベクトルの内積 • ∙ = cos • ∙ = + • = , , = ( , ) 角度は分からないけど、 内積を計算すれば目的は 果たせる
Slide 71
Slide 71 text
クラス分類をする式 M0 M1 X1 X2 C = (( − ) ∙ ( − ))
Slide 72
Slide 72 text
By Glyn Lowe Photoworks http://www.flickr.com/photos/glynlowe/8494249683/ データを線形分類 しやすくする
Slide 73
Slide 73 text
問題設定(おさらい) •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列)
Slide 74
Slide 74 text
問題設定(おさらい) •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) 数値ではないので、 線形分類するには扱いにくい…
Slide 75
Slide 75 text
カテゴリデータを数値化する •「Yes/No」→ 1 / -1 に置き換える •「趣味」→ 一緒の趣味を数え上げる •男性:fashion, opera, tv, travel •女性:soccer, fashon, tv, movies •値は 2 •「住所」→ ジオコーディング&距離計算 •今回は geopy + Bing Maps API を利用
Slide 76
Slide 76 text
カテゴリデータを数値化する •「Yes/No」→ 1 / -1 に置き換える •「趣味」→ 一緒の趣味を数え上げる •男性:fashion, opera, tv, travel •女性:soccer, fashon, tv, movies •値は 2 •「住所」→ ジオコーディング&距離計算 •今回は geopy + Bing Maps API を利用 これが最適なやり方か どうかは別
Slide 77
Slide 77 text
スケーリング •「Yes/No」は -1~1、「趣味」は 0~、 「住所は」0~ •変数ごとに尺度が異なる •すべての変数を 0~1 の間に収める
Slide 78
Slide 78 text
分類結果・精度 • 精度の測定方法 • matchmaker.csv の全 500 件を訓練データとして利用 • 同じく全 500 件をそのまま評価データとして利用 • 測定対象 • スケーリングなし • スケーリングあり • おまけ:AROW • 利用する特徴 • 年齢のみ • 年齢・子供 • 年齢・子供・喫煙 • 年齢・子供・喫煙・趣味 • すべて(上記+住所)
Slide 79
Slide 79 text
分類結果 スケールなし スケールあり AROW 年齢のみ 279/500 (55.8%) 279/500 (55.8%) 299/500 (59.8%) 年齢/子供 279/500 (55.8%) 297/500 (59.4%) 354/500 (70.8%) 年齢/子供/喫煙 279/500 (55.8%) 294/500 (58.8%) 314/500 (62.8%) 年齢/子供/喫煙/趣味 279/500 (55.8%) 294/500 (58.8%) 312/500 (62.4%) すべて (上記+住所) 278/500 (55.6%) 294/500 (58.8%) 292/500 (58.4%)
Slide 80
Slide 80 text
分類結果 スケールなし スケールあり AROW 年齢のみ 279/500 (55.8%) 279/500 (55.8%) 299/500 (59.8%) 年齢/子供 279/500 (55.8%) 297/500 (59.4%) 354/500 (70.8%) 年齢/子供/喫煙 279/500 (55.8%) 294/500 (58.8%) 314/500 (62.8%) 年齢/子供/喫煙/趣味 279/500 (55.8%) 294/500 (58.8%) 312/500 (62.4%) すべて (上記+住所) 278/500 (55.6%) 294/500 (58.8%) 292/500 (58.4%) …何とも微妙な結果 ですね!
Slide 81
Slide 81 text
By Alex Balan http://www.flickr.com/photos/alexbalan/3717404335/ まとめ
Slide 82
Slide 82 text
まとめ •線形分類の考え方 •超平面で分離する •ベクトルの内積(ドット積)を利用して 判別する •どの特徴を利用/選択するのかによって、 分類結果の精度が大きく変わる •データをよく観察しよう!
Slide 83
Slide 83 text
Thanks ! & Any questions? Photo by tjuel http://www.flickr.com/photos/tjuel/5805421265/