カジュアル勉強会 @仙台
Excelで機械学習入門 第3回
株式会社 エクテック
データサイエンティスト
第10回までの流れ
1回~3回 4回~10回
AI周辺の
基本知識
最適化の基本
推論の基本
重回帰分析
機械学習
サポートベクタマシン
ナイーブベイズ
ニューラルネットワーク
RNN/BPTT
強化学習/Q学習
前段
勉強会に参加する以上...
『なにか』を
持って帰って欲しい
『すべて』は難しいけれど
気になった、興味をもった
キーワードでも良いので
⼿元に持って帰って
いただけると幸いです
環境について
(Surroundings)
Excel 2013, 2016
Google Spreadsheets
本日のアジェンダ
1. 遺伝的アルゴリズム
2. ベイズの定理
前回のやり残し
『数式ばかりで、わかりづらい』
m(λ, μ) ≦ m0 ≦
1
2
(x + y ) + λ(-x-y+2) + μ(x-y+2)
2 2
≦
1
2
(x + y )
2 2
これの意味するものは...
m(λ, μ) ≦ m0 ≦
1
2
(x + y ) + λ(-x-y+2) + μ(x-y+2)
2 2
≦
1
2
(x + y )
2 2
m(λ, μ) ≦ m0 ≦
1
2
(x + y ) + λ(-x-y+2) + μ(x-y+2)
2 2
≦
1
2
(x + y )
2 2
(λ=1, μ=1)
m(λ, μ) ≦ m0 ≦
1
2
(x + y ) + λ(-x-y+2) + μ(x-y+2)
2 2
≦
1
2
(x + y )
2 2
最⼩値2 (x=0, y=2)
最⼩値2 (x=0, y=2)
遺伝的アルゴリズム
ηと勾配降下法の注意点
ηが⼤きすぎると
ηが⼩さすぎると
明確な、確実な⽅法はない
地道に
試⾏錯誤で⾒つけ出す
η(ステップ幅)
試⾏錯誤以外にないか??
極⼩値 最⼩値
最適化問題の難しいところ
最⼩の値を求めたいのに
実は極⼩の値を求めてしまう
最⼩の値を求めたいのに
実は極⼩の値を求めてしまう
『局所解問題』
遺伝的アルゴリズムで
最⼩値問題を解く
16
3
x
3
f(x) = x -
4
+ 6x
2
この関数の、最⼩値とそのときの x
を求めたいとします
極⼩値
最⼩値
答えを先に⾔ってしまうと
最⼩値 -9 (x=3のとき)
これを
遺伝的アルゴリズムで解いてみる
遺伝的アルゴリズムとは?
『選択』『交叉』
『突然変異』
遺伝⼦表現
データ
(解の候補) 個体を複数⽤意
遺伝⼦表現
データ
(解の候補)
個体を選択
個体を複数⽤意
評価(関数)で
優先度を付加する
遺伝⼦表現
データ
(解の候補)
個体を選択
個体を複数⽤意
交叉する
配列の⼀部を組み換え
評価(関数)で
優先度を付加する
遺伝⼦表現
データ
(解の候補)
個体を選択
突然変異
個体を複数⽤意
交叉する
配列の⼀部を組み換え
配列の⼀部を
乱数で置き換え
評価(関数)で
優先度を付加する
遺伝⼦表現
データ
(解の候補)
個体を選択
突然変異
個体を複数⽤意
交叉する
配列の⼀部を組み換え
配列の⼀部を
乱数で置き換え
評価(関数)で
優先度を付加する
遺伝的アルゴリズム
16
3
x
3
f(x) = x -
4
+ 6x
2
この関数の、最⼩値とそのときの x
を求めたいとします
遺伝⼦表現
ランダムに、x を選択する
7, 9, 12, 13
ランダムに、x を選択する
7, 9, 12, 13
“0111”, “1001”, “1100”, “1101”
2進数表記して「個体」とします
個体を選択
これらが、どれほど環境(関数f(x))
に適しているか
f(0111) = 865.7
f(1001) = 3159.0
f(1100) = 12384.0
f(1101) = 17857.7
今回は、
「最⼩値を求める」=
「値が⼩さいほど環境に適している」
これらが、どれほど環境(関数f(x))
に適しているか
f(0111) = 865.7
f(1001) = 3159.0
f(1100) = 12384.0
f(1101) = 17857.7
”0111”, “1001”
”0111”, “1001”
これら以外は、捨てる(淘汰)
交叉する
優れた「個体」を作るために
『交叉』します
優れた「個体」を作るために
『交叉』します
最も単純な、
『⼀点交叉』を⽤いる
01 | 11 10 | 01
01 | 01 10 | 11
(親)
(⼦)
交叉
“0111”, “1001”, “1100”, “1101”
(現世代)
“0111”, “1001”, “0101”, “1011”
(次世代)
突然変異
01 11
01 10
その個体の
ランダムな箇所
にランダムな値
に書き換える
遺伝⼦表現
データ
(解の候補)
個体を選択
突然変異 交叉する
『選択』→『交叉』→『突然変異』
このサイクルを何度も繰り返す
(今回の場合は、10回以内で最⼩が出てくる)
遺伝的アルゴリズム
AIの分野では、頻繁に利⽤される⼿法
ベイズの定理
ベイズ理論・ベイズ推論
21世紀に⼊って
⾶躍的に発展した理論分野の⼀つ
出発点は、「ベイズの定理」
条件付き確率
⽇本⼈の成⼈男⼥の割合は順に 49%, 51%です。
また、喫煙率は男性が 28%, ⼥性が 9%です。
成⼈⽇本⼈から無作為に1⼈を抽出したとき、
男性である事象を M, ⼥性である事象を F、
喫煙者である事象を Sとします。
(2018年総務省統計局及びJT調査)
成⼈⽇本⼈の全体(P)
M 49% F 51%
M
28%
F
9%
S
P(M) = 0.49, P(F) = 0.51, P(S|M) = 0.28, P(S|F) = 0.09
さて、全体からみた男性喫煙率は?
全体からみた⼥性喫煙率は?
はたまた、Sの割合は?
乗法定理
P(A∩B) = P(A)P(B|A)
P(A∩B) 事象A, Bが同時に起こる確率
P(B|A) 条件付き確率
P(M) = 0.49, P(F) = 0.51,
P(S|M) = 0.28, P(S|F) = 0.09
P(S∩M) = P(M∩S) = P(M)P(S|M)
=0.49 ✖ 0.28 = 0.14,
P(S∩F) = P(F∩S) = P(F)P(S|F)
=0.51 ✖ 0.09 = 0.046,
P(S) = P(S∩M) + P(S∩F)
=0.14 + 0.046 = 0.186
乗法定理から、ベイズの定理へ
P(B|A)P(A)
P(B)
P(A|B) =
ベイズの定理
証明してみましょう...!
乗法定理
P(A∩B) = P(A)P(B|A)
P(A∩B) 事象A, Bが同時に起こる確率
P(B|A) 条件付き確率
2つの事象A, Bについて
次の式が成⽴します
P(A∩B) = P(A)P(B|A)
P(B∩A) = P(B)P(A|B)
A∩B A∩B
B A B A
P(B∩A) = P(B)P(A|B)P(A∩B) = P(A)P(B|A)
P(A∩B) = P(B∩A)なので
P(B)P(A|B) = P(A)P(B|A)
P(B) ≠ 0を仮定すれば
P(B|A)P(A)
P(B)
P(A|B) =
証明終
ベイズの定理を
データサイエンスの⽬線から⾒ると
ある仮定H(Hypothesis)のもとで
事象D(Data)が得られるとき、次の関係が成り⽴つ
P(D|H)P(H)
P(D)
P(H|D) =
ある仮定Hが成⽴する
→ 結果として、データDが得られる
と解釈してみる
最初のお題を、
データサイエンスっぽいお題に
⽇本⼈から無作為に抽出した1⼈が喫煙の習慣を
持つと答えました。この⼈が男性である確率は?
(⽐率は、最初のお題と同じ)
求めたい確率は、P(M|S)
SをデータDとして、Mを仮説Hとすると
⽇本⼈から無作為に抽出した1⼈が喫煙の習慣を
持つ、という仮説H
それが男性である、という結果D
P(D|H)P(H)
P(D)
P(M|S) =
P(D|H)P(H)
P(D)
P(M|S) =
P(S) = P(D) = 0.18,
P(S|M)P(M) = P(D|H)P(H) = 0.14
0.14
0.18
P(M|S) = = 0.78
原因の確率
H D
P(D|H)
仮定(原因) 結果(データ)
⼀般的には、「原因があって結果」である
H D
P(D|H)
仮定(原因) 結果(データ)
D H
P(H|D)
結果(データ) 仮定(原因)
ベイズの定理
結果であるデータから、
”原因の確率”を得ることができる(ベイズ推論)
現実問題に、即していきます
原因H1 原因H2 原因H3
データD
それぞれ独⽴した原因H1, H2, H3
からデータDが⽣まれるものとする
D
H1 H2 H3
D∩H1 D∩H2 D∩H3
P(D) = P(D∩H1) + P(D∩H2) + P(D∩H3)
P(D) = P(D∩H1) + P(D∩H2) + P(D∩H3)
P(D) = P(D|H1)P(H1) +
P(D|H2)P(H2) + P(D|H3)P(H3)
※乗法定理 P(A∩B) = P(A)P(B|A)
P(D) = P(D|H1)P(H1) +
P(D|H2)P(H2) + P(D|H3)P(H3)
P(D|H1)P(H1)
P(D)
P(H1|D) =
ベイスの定理を使って、原因H1に注⽬してみる
=
P(D|H1)P(H1)
P(D|H1)P(H1) + P(D|H2)P(H2) + P(D|H3)P(H3)
P(D|H1)P(H1)
P(D|H1)P(H1) + P(D|H2)P(H2) + P(D|H3)P(H3)
データD の原因として3つ考えた場合の、
“原因H1の確率”を表現している
⼀般化して、データDがあり、
原因が {H1, H2, …, Hn}のn個あるとすれば、
データDが得られたとき、その原因が Hiである
確率は下記のように表現できる
P(Hi|D) =
P(D|Hi)P(Hi)
P(D|H1)P(H1) + P(D|H2)P(H2) + … + P(D|Hn)P(Hn)
周辺尤度
原因H1 原因Hi 原因Hn
データD
P(H1) P(Hi) P(Hn)
P(Hi|D)P(D|Hi)
P(D|H1) P(D|Hn)
原因H1 原因Hi 原因Hn
データD
P(H1)
P(D|H1)
P(Hn)
P(D|Hn)
P(Hi)
P(D|Hi) P(Hi|D)
事前確率
尤度 事後確率
壺の問題
外からは区別のつかない2つの壺 a, bがあります。
壺 aには⽩⽟が2個、⾚⽟が3個、
壺 bには⽩⽟が4個、⾚⽟が8個⼊っています。
いま、壺 a, b のいずれか1つがあり、その壺から
⽟1個を取り出したら、⽩⽟だったと⾔います。
このとき、その壺が aである確率を求めましょう。
また bである確率も求めましょう。
壺 a 壺 b
Ha Hb
壺aから⽟を取り出す 壺bから⽟を取り出す
W: 取り出した⽟が⽩⽟である
求める確率は、
取り出された⽟が⽩のとき
壺aから取り出された確率 P(Ha|W)
壺bから取り出された確率 P(Hb|W)
ベイズの定理から
P(W|Ha)P(Ha)
P(W|Ha)P(Ha) + P(W|Hb)P(Hb)
P(Ha|W) =
P(W|Hb)P(Hb)
P(W|Ha)P(Ha) + P(W|Hb)P(Hb)
P(Hb|W) =
尤度 P(W|Ha), P(W|Hb)
P(W|Ha) = 「壺aから取り出された⽟が⽩であ
る確率」 = 2 / (2 + 3) = 2 / 5
P(W|Hb) = 「壺bから取り出された⽟が⽩であ
る確率」 = 4 / (4 + 8) = 1 / 3
事前確率 P(Ha), P(Hb)
問題⽂の中には、壺a, 壺bがどのような
割合で選ばれるかの情報はない
『等確率』として考えてみる
(理由不⼗分の原則)
P(Ha) = P(Hb) = 1/2
2/5 ✖ 1/2
2/5 ✖ 1/2 + 1/3 ✖ 1/2
P(Ha|W) =
1/3 ✖ 1/2
2/5 ✖ 1/2 + 1/3 ✖ 1/2
P(Hb|W) =
以上の値を代⼊すればOK
= 6/11
= 5/11
新しいデータを追加することで
より正確な確率が導き出されていく
AIの根幹である
ディープラーニングや機械学習の基礎
EoF

Casual learning machine learning with_excel_no3