Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
集合知プログラミング勉強会 #TokyoCI #9 高度な分類手法:カーネルメソッドと SVM
Search
KOMIYA Atsushi
April 02, 2013
Technology
0
970
集合知プログラミング勉強会 #TokyoCI #9 高度な分類手法:カーネルメソッドと SVM
第9回集合知プログラミング勉強会 (
http://atnd.org/events/38219
) の発表資料です。
KOMIYA Atsushi
April 02, 2013
Tweet
Share
More Decks by KOMIYA Atsushi
See All by KOMIYA Atsushi
#JJUG Java における乱数生成器とのつき合い方
komiya_atsushi
5
5k
#JJUG Fork/Join フレームワークを効率的に正しく使いたい
komiya_atsushi
0
430
[#JSUG] SmartNews における container friendly な Spring Boot アプリケーション開発
komiya_atsushi
1
11k
Java のデータ圧縮ライブラリを極める #jjug_ccc #ccc_c7
komiya_atsushi
4
4.4k
#devsumi 自然言語処理・機械学習によるファクトチェック業務の支援
komiya_atsushi
1
4.1k
SmartNews Ads における機械学習の活用とその運用 #mlops
komiya_atsushi
3
19k
GBDT によるクリック率予測を高速化したい #オレシカナイト vol.4
komiya_atsushi
5
1.2k
Maven central repository の artifact をランキングする #渋谷java
komiya_atsushi
0
1.2k
確率的データ構造を Java で扱いたい! #JJUG
komiya_atsushi
6
2.2k
Other Decks in Technology
See All in Technology
コンテナ・K8s研修 - 後半 Kubernetes 基礎&ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
1
120
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
150
テストケースの自動生成に生成AIの導入を試みた話と生成AIによる今後の期待
shift_evolve
0
180
ABEMAにおけるLLMを用いたコンテンツベース推薦システム導入と効果検証
cyberagentdevelopers
PRO
1
700
Classmethod流のPlatform Engineering / classmethod-platform-engineering-devio2024
tomoki10
0
470
ACRiルーム最新情報とAMD GPUサーバーのご紹介
anjn
0
150
Git 研修 Advanced【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
200
DDDにおける認可の扱いとKotlinにおける実装パターン / authorization-for-ddd-and-kotlin-implement-pattern
urmot
4
390
サービスの持続的な成長と技術負債について
siva_official
PRO
10
4.4k
コンテナ・K8s研修 - 前半 コンテナ基礎・ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
プレイドにおけるDatadog APMの活用方法
plaidtech
PRO
2
120
累計ダウンロード数1億8000万を超えるアプリケーションプラットフォームのレガシーシステム脱却とモダン化への道
kmitsuhashi
0
120
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
18
1.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
277
13k
Ruby is Unlike a Banana
tanoku
96
10k
10 Git Anti Patterns You Should be Aware of
lemiorhan
652
58k
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
17
8.7k
Visualization
eitanlees
139
14k
WebSockets: Embracing the real-time Web
robhawkes
59
7.2k
How To Stay Up To Date on Web Technology
chriscoyier
784
250k
Happy Clients
brianwarren
94
6.5k
YesSQL, Process and Tooling at Scale
rocio
166
14k
BBQ
matthewcrist
82
9k
Transcript
集合知 プログラミング #9 高度な分類手法: カーネルメソッドとSVM (前半) 2013.4.2 集合知プログラミング勉強会 #TokyoCI @komiya_atsushi
https://github.com/komiya-atsushi/TokyoCI-study
Agenda 1. 線形分類 2. 今回のお題 3. 基礎的な線形分類 4. データを線形分類しやすくする 「9.5
データのスケーリング」 までとします
By eschipul http://www.flickr.com/photos/eschipul/2957264066/ 線形分類
線形分類 •教師あり学習・クラス分類 •数値的な「特徴 (変数)」と「クラス」を持 つたくさんのデータをもとに、それらを二 つに分ける境界「超平面」を求める •超平面の「あちら」なのか「こちら」なの かを識別し、クラス分類を予測する
線形分類 •教師あり学習・クラス分類 •数値的な「特徴 (変数)」と「クラス」を持 つたくさんのデータをもとに、それらを二 つに分ける境界「超平面」を求める •超平面の「あちら」なのか「こちら」なの かを識別し、クラス分類を予測する 「超平面」とか、ちょっと何 言っちゃってんのあんた・・・
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 【解決したい問題】 体積と重量から、 コインの真贋を明らかにしたい
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 【解決したい問題】 体積と重量から、 コインの真贋を明らかにしたい クラス 特徴
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 体積
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 重量
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 本物のコインと
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 ニセモノの コインを
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 分断する超平面 (線)を引く
わかりやすくいうと… CodeIQ「金貨の真贋を見分けよう」https://codeiq.jp/ace/naoyat/q105 いかにして、綺麗に分離できる 超平面を求められるか? が課題
非線形/線形分離不可能
非線形/線形分離不可能 二つのエリアに分かれて しまっている
非線形/線形分離不可能 ここに超平面を 引くと…
非線形/線形分離不可能 これらの分類 誤りが発生する
非線形/線形分離不可能 とはいえここに 超平面を引いても…
非線形/線形分離不可能 こんどはこちらが 分類誤りとなる
非線形/線形分離不可能 世の中には直線では 割り切れない問題もあるんだよ…
非線形/線形分離不可能 世の中には直線では 割り切れない問題もあるんだよ… この問題はこの後発表の大平さんが 解消してくれるはず…!
By paris20vt http://www.flickr.com/photos/21334906@N08/6259402565/ 今回のお題
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列)
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) 特徴 クラス
問題設定 •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) つまりは「ツ◯◯イ」とか 「オ◯◯◯ト」などの裏側で動かすと
よい感じなシステムですねきっと!
男性・女性それぞれの年齢の散布図
男性・女性それぞれの年齢の散布図 • 緑色の丸印が適した組み合わせ • 赤の + 印が適していない組み合わせ 男性の年齢 女性の年齢
男性・女性それぞれの年齢の散布図 これでは線形分類できませんね…
今回のお題の特徴 •非線形である •変数(特徴)が相互に影響を与え合っ ている •変数が独立でない
今回のお題の特徴 •非線形である •変数(特徴)が相互に影響を与え合っ ている •変数が独立でない 与えられたデータの意味を考えず 解釈せずにそのまま分類器に かけることは、良い考えではない
基礎的な 線形分類
線形分類 •小難しいことを考える前に、簡単に作 れる線形分類器を作ってみましょう! •二つのクラスの平均をとり、平均の中 央に超平面を引くことにします •とっても荒っぽいですが、まあ、やって みましょう
単純化した問題で考えてみる
単純化した問題で考えてみる • 緑色の丸印が適した組み合わせ • 赤の + 印が適していない組み合わせ
単純化した問題で考えてみる 適していない クラスの平均 適している クラスの平均
単純化した問題で考えてみる 両クラスの平均の 真ん中に超平面を引く
単純化した問題で考えてみる 適していると 判断する領域 適していないと 判断する領域
単純化した問題で考えてみる 適していると 判断する領域 適していないと 判断する領域 超平面を引いたはいいが「あちら」と 「こちら」はどうやって判別するの?
ベクトルのなす角を見る M0 M1
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心 M1 -M0
ベクトルのなす角を見る M0 M1 「適している」 の中心 「適していない」 の中心 O M1 -M0
ベクトルのなす角を見る M0 M1 C O
ベクトルのなす角を見る M0 M1 C O
ベクトルのなす角を見る M0 M1 C O M1 +M0
ベクトルのなす角を見る M0 M1 C O M1 +M0 (M1 +M0 )/2
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C C-X1 C-X2
ベクトルのなす角を見る M0 M1 X1 X2 C 赤色のベクトルと緑色のベクトルが なす角に着目してみよう!
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C < 90°
ベクトルのなす角を見る M0 M1 X1 X2 C < 90° 適している!
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C > 90°
ベクトルのなす角を見る M0 M1 X1 X2 C > 90° 適していない!
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C 角度が < 90° であれば「適している」
> 90° であれば「適していない」 と判断することができる!!!
ベクトルのなす角を見る M0 M1 X1 X2 C では、どうやって角度を 把握すればよいのか…?
ベクトルのなす角を見る M0 M1 X1 X2 C 角度が 90° を超えたか、 超えてないかのどちらかが
分かればそれで十分!
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C
ベクトルのなす角を見る M0 M1 X1 X2 C cosθ の値が正か負かで 角度が 90°
より大/小が分かる
ベクトルのなす角を見る M0 M1 X1 X2 C ベクトルの 内積を計算しましょう!
ベクトルの内積 • ∙ = cos
ベクトルの内積 • ∙ = cos a・b が正か負かで 判断できる
ベクトルの内積 • ∙ = cos • ∙ = + •
= , , = ( , )
ベクトルの内積 • ∙ = cos • ∙ = + •
= , , = ( , ) 角度は分からないけど、 内積を計算すれば目的は 果たせる
クラス分類をする式 M0 M1 X1 X2 C = (( − )
∙ ( − ))
By Glyn Lowe Photoworks http://www.flickr.com/photos/glynlowe/8494249683/ データを線形分類 しやすくする
問題設定(おさらい) •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列)
問題設定(おさらい) •一組の男性と女性の情報から、その二 人が適したカップルか否かを判断する •年齢(数値) •喫煙するか?(Yes/No) •子供が欲しいか?(Yes/No) •趣味(文字列・複数) •住んでいる場所(文字列) 数値ではないので、 線形分類するには扱いにくい…
カテゴリデータを数値化する •「Yes/No」→ 1 / -1 に置き換える •「趣味」→ 一緒の趣味を数え上げる •男性:fashion, opera,
tv, travel •女性:soccer, fashon, tv, movies •値は 2 •「住所」→ ジオコーディング&距離計算 •今回は geopy + Bing Maps API を利用
カテゴリデータを数値化する •「Yes/No」→ 1 / -1 に置き換える •「趣味」→ 一緒の趣味を数え上げる •男性:fashion, opera,
tv, travel •女性:soccer, fashon, tv, movies •値は 2 •「住所」→ ジオコーディング&距離計算 •今回は geopy + Bing Maps API を利用 これが最適なやり方か どうかは別
スケーリング •「Yes/No」は -1~1、「趣味」は 0~、 「住所は」0~ •変数ごとに尺度が異なる •すべての変数を 0~1 の間に収める
分類結果・精度 • 精度の測定方法 • matchmaker.csv の全 500 件を訓練データとして利用 • 同じく全
500 件をそのまま評価データとして利用 • 測定対象 • スケーリングなし • スケーリングあり • おまけ:AROW • 利用する特徴 • 年齢のみ • 年齢・子供 • 年齢・子供・喫煙 • 年齢・子供・喫煙・趣味 • すべて(上記+住所)
分類結果 スケールなし スケールあり 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%)
分類結果 スケールなし スケールあり 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%) …何とも微妙な結果 ですね!
By Alex Balan http://www.flickr.com/photos/alexbalan/3717404335/ まとめ
まとめ •線形分類の考え方 •超平面で分離する •ベクトルの内積(ドット積)を利用して 判別する •どの特徴を利用/選択するのかによって、 分類結果の精度が大きく変わる •データをよく観察しよう!
Thanks ! & Any questions? Photo by tjuel http://www.flickr.com/photos/tjuel/5805421265/