狠狠撸

狠狠撸Share a Scribd company logo
数式を使わない
機械学習超入門
?Support Vector Machine 解説编?
このスライドは
概念レベルでの理解を第一に、
厳密な定義?細かい説明?数式
などは省きます。
ご了承ください。
誰向け?
■ 機械学習面白そう!って思ってる人
■ でも数式とか怖くてう○ち漏らしちゃいそうな人
■ 僕です
■ あくまでもイメージ?概念レベルの適当な話なので実装するときは自分で
きちんと (できれば数式レベルで) 勉強することを強く推奨します
■ 簡単にするために説明を色々はしょってます
■ 専門家が見たら殴られそうな勢いではしょってます
そもそも機械学習って
なんやねん?
機械学習のキホン
機械学習とは…
「機械」が「学習」すること
■ あるデータを元に、いい感じの答えが出るよう色々な値を調節 (学習) する
– 与えられたデータセットを元に, パラメーターサーチをすることでモデルを学習する (最適化する)
■ これを何万回も試行錯誤しながら行う
■ 手計算で綺麗に出ない解をゴリゴリ求めることができる 近似的に求められる
■ 限りなく近い値を求めるだけなので, 完璧な解ではない 解析解ではない
調整 調整
機械学習ができること
■ 回帰 ■ 分類
データを元にいい感じのグラフを描く データを元にいい感じの境界線 (面) を
描く
etc…
機械学習ができること
■ 回帰 ■ 分類
データを元にいい感じのグラフを描く データを元にいい感じの境界線 (面) を
描く
etc…
今回はこっち
機械学習ができること
■ 回帰 ■ 分類
データを元にいい感じのグラフを描く データを元にいい感じの境界線 (面) を
描く… グループをデータだけで分類
etc…
今回はこっち
いまいちピンとこないなぁ…
分類って何? (1)
■ あるモノが持つデータを元に, 所属するグループを推測すること
– 特徴量を元にクラスを推測する
脂の量
肉
の
厚
さ
? 例えば「焼肉」
? お肉が「カルビ」か「ハラミ」かを分けたい
? 「脂の量」「お肉の厚さ」を基準にする
? カルビの方が脂多そう, ハラミの方が厚そう
? ちなみに筆者はハラミにニンニクを乗っけてサンチュで巻
くのが大好きです
カルビ
ハラミ
分類って何? (2)
■ 数値 (厚さ?脂) とグループ (カルビ/
ハラミ) が両方分かっているデータで
境界線 (面) を引く (SVMやLDAの場合)
■ 特徴量とラベルが分かっているデータ = トレーニン
グデータでモデルを生成する
■ K近傍法やニューラルネット (深層学習含む) に関して
はこの限りではありません
カルビ
ハラミ
分類って何? (3)
■ 数値 (厚さ?脂) しか分かっていない
肉がハラミかカルビかを推測する
■ 特徴量のみが分かっているデータ = 検証データ/テス
トデータのラベルをモデルに基づき推測する
カルビ
ハラミ
分類って何? (3)
■ 数値 (厚さ?脂) しか分かっていない
肉がハラミかカルビかを推測する
■ 特徴量のみが分かっているデータ = 検証データ/テス
トデータのラベルをモデルに基づき推測する
■ この時の判定率がモデルの優秀さを示す
指標となる
■ 右図では75%
カルビ
ハラミ
分類って何? (まとめ)
■ 「数値」と「グループ」を元に境界線 (面) を作成
■ 境界線を元に, 「数値」から「グループ」を推測
■ この時の判定率が良い境界線の引き方を見つける
■ トレーニングデータを用いてモデルを生成
■ モデルに基づき, 検証データ / テストデータのラベルを推測
■ ここまでは識別型機械学習の基本
■ Support Vector Machine はこれの一種
ここから専門用語
少しずつ増えます
Support Vector Machine (SVM) のキホン
SVMの基本 (1)
■ 識別面 (境界線) に近い点との距離を最大化する
■ この基準点をサポートベクター Support Vector という
脂の量
肉
の
厚
さ
脂の量
肉
の
厚
さ
調整
SVMの基本 (2)… 何で人気?
■ 2 クラス分類の手法の中では一番人気 (カルビ/ハラミは2クラス,カルビ/ハラミ/牛タンは3クラス)
■ 近い点だけを基準にする→外れ値に強い (赤)
平均 (青) を基準にした場合 SVM
SVMの基本 (3)… 何で人気?
■ 特徴量 (厚さ, 脂の量, 値段, 柔らかさ…) が増えても = 高次元になっても識別制度
が高い
■ 普通は高次元データには弱い…「次元の呪い」curse of dimensionality
■ とりあえずわかんなくてもダイジョブ
SVMの基本 (4)… 分け方
■ 識別面の引き方にも色々あります
■ カーネルトリックでググってみて, マジすげえから(https://www.youtube.com/watch?v=9NrALgHFwTo)
脂の量
肉
の
厚
さ
脂の量
肉
の
厚
さ
線形SVM 非線形SVM (ガウスカーネル)
機械学習とは…
「機械」が「学習」すること
■ あるデータを元に、いい感じの答えが出るよう色々な値を調節 (学習) する
– 与えられたデータセットを元に, パラメーターサーチをすることでモデルを学習する (最適化する)
■ これを何万回も試行錯誤しながら行う
■ 手計算で綺麗に出ない解をゴリゴリ求めることができる 近似的に求められる
■ 限りなく近い値を求めるだけなので, 完璧な解ではない 解析解ではない
機械学習とは…
「機械」が「学習」すること
■ あるデータを元に、いい感じの答えが出るよう色々な値を調節 (学習) する
– 与えられたデータセットを元に, パラメーターサーチをすることでモデルを学習する (最適化する)
■ これを何万回も試行錯誤しながら行う
■ 手計算で綺麗に出ない解をゴリゴリ求めることができる 近似的に求められる
■ 限りなく近い値を求めるだけなので, 完璧な解ではない 解析解ではない
調整 調整
どんな値を調節するの?
機械学習とは…
「機械」が「学習」すること
■ あるデータを元に、いい感じの答えが出るよう色々な値を調節 (学習) する
– 与えられたデータセットを元に, パラメーターサーチをすることでモデルを学習する (最適化する)
■ これを何万回も試行錯誤しながら行う
■ 手計算で綺麗に出ない解をゴリゴリ求めることができる 近似的に求められる
■ 限りなく近い値を求めるだけなので, 完璧な解ではない 解析解ではない
調整 調整
どんな値を調節するの?
調節する値 = (ハイパー)パラメーター
ハイパーって
かっこいいよね
SVMにおけるハイパーパラメーターとその意味
SVMのパラメーター (1)
■ C と γ (ガンマ)
■ C… 誤判定への厳しさ, 小さければ緩く大きければ厳しい
C… 小さい C… 大きい
SVMのパラメーター (1)
■ C と γ (ガンマ)
■ C… 誤判定への厳しさ, 小さければ緩く大きければ厳しい
C… 小さい C… 大きい
SVMのパラメーター (1)
■ C と γ (ガンマ)
■ C… 誤判定への厳しさ, 小さければ緩く大きければ厳しい
C… 小さい C… 大きい
緩すぎると
誤判定
厳しすぎると
他のデータに対応できない
SVMのパラメーター (2)
■ γ ガンマ… ガウスカーネルをどれだけ曲げるか
■ 線形カーネルを使うときは関係ない
γ… 小さい γ… 大きい
SVMのパラメーター (2)
■ γ ガンマ… ガウスカーネルをどれだけ曲げるか
■ 線形カーネルを使うときは関係ない
γ… 小さい γ… 大きい
SVMのパラメーター (2)
■ γ ガンマ… ガウスカーネルをそれだけ曲げるか
■ 線形カーネルを使うときは関係ない
γ… 小さい γ… 大きい
小さすぎると
識別面が上手く引けない
大きすぎると
他のデータに対応できない
SVMのパラメーター (3)
■ 小さすぎても大きすぎてもダメ
■ いい感じの値を見つけるのが機械学習の仕事
■ 「他のデータに対応できない」ことを
過学習 overfitting という
■ トレーニングデータの判定率は高いけど未知のデータの判定率が
低い = 汎化性能が低い
■ 機械学習は未知なデータもうまく判定するのが仕事
SVM のパラメーター まとめ
■ C… 誤判定への厳しさ, 小さければ緩く大きければ厳しい
■ γ ガンマ… ガウスカーネルをそれだけ曲げるか
■ Cとγが大きすぎると過学習が起きてしまう
■ いかに未知データに対応できるかがミソ
最悪な過学習
過学習,ダメ,ゼッタイ
テストデータと検証データ
交差検証
そもそも…
■ トレーニングデータで境界線を引き, テストデータで正答率を確かめる
トレーニングデータ テストデータ
じゃあ…
■ テストデータで一番判定率が良かったものを採用すればいいんじゃね?
トレーニングデータ テストデータ
じゃあ…
■ テストデータで一番判定率が良かったものを採用すればいいんじゃね?
トレーニングデータ テストデータ
ダメ、ゼッタイ。
テストデータへの過学習
■ テストデータの判定率を基準にモデルを選択している時点で過学習
■ テストデータはモデルの良さを示す. モデル选択の基準とは分けないとダメ
テストデータと検証データ
■ テストデータでの判定率… モデルの良さを示す, 最後の一回だけ使う
■ 検証データでの判定率… モデル選択の基準となる, 何回でも使って良い
テスト
1) テストデータ
を切り離す
2) モデルを選択
トレーニングデータ
検証データ
検証データ
トレーニングデータ
3) モデルの良さ
を計算
テスト
テストデータと検証データ
■ テストデータでの判定率… モデルの良さを示す, 最後の一回だけ使う
■ 検証データでの判定率… モデル選択の基準となる, 何回でも使って良い
テスト
1) テストデータ
を切り離す
2) モデルを選択
トレーニングデータ
検証データ
検証データ
トレーニングデータ
3) モデルの良さ
を計算
テスト
検証データでの判定率
モデルA: 70%
(C: 大, γ: 中)
モデルB: 85%
(C: 中. γ: 中)
テストデータと検証データ
■ テストデータでの判定率… モデルの良さを示す, 最後の一回だけ使う
■ 検証データでの判定率… モデル選択の基準となる, 何回でも使って良い
テスト
1) テストデータ
を切り離す
2) モデルを選択
トレーニングデータ
検証データ
検証データ
トレーニングデータ
3) モデルの良さ
を計算
テスト
検証データでの判定率
モデルA: 80%
(C: 大, γ: 中)
モデルB: 85%
(C: 中. γ: 中)
こちらを採用
テストデータと検証データ
■ テストデータでの判定率… モデルの良さを示す, 最後の一回だけ使う
■ 検証データでの判定率… モデル選択の基準となる, 何回でも使って良い
テスト
1) テストデータ
を切り離す
2) モデルを選択
トレーニングデータ
検証データ
検証データ
トレーニングデータ
3) モデルの良さ
を計算
テスト
検証データでの判定率
モデルA: 80%
(C: 大, γ: 中)
モデルB: 85%
(C: 中. γ: 中)
こちらを採用
テストデータの判定率
モデルB: 83%
→このモデルの性能: 83%
テストデータと検証データ – 諸注意
■ 検証データの判定率はモデルの良さではない, あくまでもモデル選択の基準
■ テストデータ=未知データを使うのは最後の一回のみ
– テストデータの判定率を基準にする = 未知データとしての意味を失くす
– テストデータの判定率を基準にする = テストデータにモデルを合わせている
– 未知データだからこそモデルの良さの指標になる
■ モデルは検証データに合わせてるので当然テストデータでは判定率が少し下がる
でもさ…
トレーニングデータ
めちゃくそ減らない?
ザッツライト
ホールドアウト検証と交差検証
Holdout-Validation
■ 普通に分ける
■ トレーニング:検証 = 1:1とか2:1とか
■ 一回きり
■ 使えるデータがドチャクソ減る
■ そこで…
検証トレーニング
テスト
ホールドアウト検証と交差検証
Cross-Validation (CV)
■ k-fold 交差検証ともいう
■ 3-fold (3等分) とか5-fold (5等分) とか
■ データを水増しできる!
■ 元のデータが少ない時に特に有効
■ K-fold CVで決まったパラメーターを用いて, テストデータ
に対しても交差検証をする external validation もある (両方
使うと nested cross-validationという)
■ External validationではテストデータの判定率の平均を取る
検証トレーニング
テスト
検証トレ トレ
…
検証 トレーニング
1-fold
2-fold
k-fold
でも…
実際どうやってパラメーターサーチ
するのさ?
これが最後のお話、
あともう一踏ん張り!
パラメーターサーチの手法
グリッドサーチ、ランダムサーチ、ベイズ最適化
パラメーターサーチ
グリッドサーチ
■ 各パラメーターを軸に取る
■ グリッド状に点を取り、しらみつぶしに
一個ずつ調べてく
■ 一番確実
■ 非現実的なレベルでめちゃんこ時間かかる
C
γ
パラメーターサーチ
ランダムサーチ
■ 各パラメーターを軸に取る
■ グリッド状に点を取り、適当にポコポコ
試してく
■ 時間短縮
■ でも確実性は低い
■ そこで!
C
γ
パラメーターサーチ
ベイズ最適化 is 最強
■ 各パラメーターを軸に取る
■ 何箇所か適当にポコポコ試してく
C
γ
丸の大きさ = 判定率
パラメーターサーチ
ベイズ最適化 is 最強
■ 各パラメーターを軸に取る
■ 何箇所か適当にポコポコ試してく
■ 良さげなところを中心に探す
■ 局所解に陥らないように他のところも
ランダムに探す (ちょっとだけ)
↑わからなかったら無視でいいです C
γ
丸の大きさ = 判定率
パラメーターサーチ
ベイズ最適化 is 最強
■ 各パラメーターを軸に取る
■ 何箇所か適当にポコポコ試してく
■ 良さげなところを中心に探す
■ 局所解に陥らないように他のところも
ランダムに探す (ちょっとだけ)
↑わからなかったら無視でいいです
■ めっちゃ効率的に見つかる
C
γ
丸の大きさ = 判定率
今日話したこと
お疲れ様です、あと1スライド!
今日話したこと
■ 機械学習のキホン
■ SVMの基本
■ SVMのハイパーパラメーター (Cとγ)
■ 過学習について
■ テストデータと検証データ
■ 交差検証
■ パラメーターサーチについて
■ 二郎の美味しさについて
用心棒 本号
ヤサイ アブラ
ニンニク 辛玉
これで終わりです!
お疲れ様でした!
最後2スライドあるやん… は禁句

More Related Content

数式を使わない機械学習超入門 ?Support Vector Machine 解説编?