More Related Content More from Etsuji Nakai (20) 機械学習概論 講義テキスト14. 14
CodeZine Academy
機械学習アルゴリズムの分類(代表例)
■
Classification / Class probability estimation(分類)
- 既存データを複数のクラスに分類して、新規データがどのクラスに属するかを予想
する。特定のクラスを予想する他、各クラスに属する確率を計算する方法もある。
●
携帯の機種変更時に「どの機種を選択するか」を予測する。
●
特別割引キャンペーンのDMを送ったら「申し込む/申し込まない」を予測する。
●
新規メールが「スパムである確率」を計算する。
■
Regression(回帰分析)
- 既存データの背後にある「関数」を推測して、具体的な「数値」を予測する。
●
新規サービスを提供したら「何人のユーザー」が利用するか予測する。
●
広告宣伝費を2倍にしたら売上は「何倍」になるか予測する。
■
Similarity matching
- 新規データが既存データの「どれと似ているか」を予測する。
●
新規顧客は、既存のどの顧客と似ているかを予測する。
16. 16
CodeZine Academy
データ分析に利用できるオープンソースのツール
■
Jupyter Notebook
- ブラウザー上で、Pythonのコードを対話的に実行するツール
■
Pythonのデータ解析ライブラリ
●
NumPy : ベクトルや行列を扱うライブラリ
●
SciPy : 科学計算用ライブラリ
●
matplotlib : グラフ作成ライブラリ
●
pandas : Rに類似のデータフレームを提供
●
scikit-learn : 機械学習用ライブラリ
●
TensorFlow:ニューラルネットワークの機械学習ライブラリ
※ 本コースの演習環境は、下記の手順で準備しています。
●
Jupyter演習環境の準備手順
●
http://enakai00.hatenablog.com/entry/2016/11/18/134724
本パートでは、これらを使って直接
にアルゴリズムを実装したコードを
使用します。
25. 25
CodeZine Academy
オーバーフィッティングの検出
■
先ほどの M = 9 の例は、観測データは正確に再現していますが、未知のデータ
の「予測性能」が高いかどうかは分かりません。
- トレーニングセットだけに固有の特徴を拾ってしまい、予測性能の一般性が失われる
ことを「オーバーフィッティング」と呼びます。
■
機械学習を行う際は、学習用のデータ(トレーニングセット)とは別に検証用
のデータ(テストセット)を残しておき、テストセットに対する予測性能を見
て、オーバーフィッティングの発生を検出します。
- 次数 M を増やしていった際の「トレーニングセット」と「テストセット」それぞれの
「平方根平均二乗誤差」の変化の様子を見ます。
トレーニングセット テストセット
全データ
29. 29
CodeZine Academy
オーバーフィッティングを意図的に抑える手法
- M = 9 の高次の項は絶対値が突出し
て大きくなっています。これは、
パラメータの過剰調整であり、
オーバーフィッティングの兆候と
考えられます。
Table of the coefficients
M=0 M=1 M=3 M=9
0 -0.02844 0.498661 -0.575134 -0.528572
1 NaN -1.054202 12.210765 151.946893
2 NaN NaN -29.944028 -3569.939743
3 NaN NaN 17.917824 34234.907567
4 NaN NaN NaN -169228.812728
5 NaN NaN NaN 478363.615824
6 NaN NaN NaN -804309.985246
7 NaN NaN NaN 795239.975974
8 NaN NaN NaN -426702.757987
9 NaN NaN NaN 95821.189286
■
N = 10 の例で実際に計算された係数 の値を見ると下表のようにな
ります。
■
そこで、適当な定数 λ を用いて、下記のように修正した誤差関数を最小にする
という条件で係数を決めると、次数が高くでもオーバーフィッティングが発生
しにくくなります。
- 最適な λ の値は、試行錯誤で決める必要があります。
33. 33
CodeZine Academy
前提条件
■
今回使用する観測データ は、「何らかの関数 y(x) に従うが、
未知のノイズが含まれている」と予めわかっているものとします。
- ビジネス上のデータ分析では、一定のデータの性質が予めわかっていることもよくあ
ります。(分析するデータの性質を理解することもデータサイエンティストの役割で
したね。)
■
何らかの関数 y(x) は、最小二乗法と同様に M 次多項式と仮定します。
■
さらに、未知のノイズを分散 の正規分布と仮定すると、係数 w が決まった
後、次に観測点 x から値 t が得られる確率は次式になります。(次ページも参
照。)
太文字はベクトル(行列)表記
51. 51
CodeZine Academy
誤差関数を最小化する手順
■ ある点 w において、EP
(w) の値を減らす方向のベクトルは、この関数の「勾
配」で決まります。
■
これは、「ある w において、誤って判定された点 があった場合、
ベクトル の方向に w を修正すると、EP
(w) の値を減らすことができる」
と解釈できます。(直感的には。)
■
厳密に議論すると、誤って判定された点について、1つずつ順番に次の式で w
の値を修正していくことを何度も繰り返すと、(完全な分割が可能な場合は)
いつかは正しい分割線が得られることが証明されています。
59. 59
CodeZine Academy
ロジスティック関数による確率
■
点 (x, y) で新たに取得したデータが「t = 1」で
ある確率を P(x, y) とします。
■
右図において分割線から右上に進むと P は大
きくなり、左下に進むと P は小さくなると考
えられます。
■
そこでこの確率を次式で定義します。
- σ(a) は、右図のように 0 から 1 になめらかに増
加する関数です。
- の分割線上では、確率はちょうど
0.5 になります。
●:t = 1
×:t = 0
:ロジスティック関数
65. 65
CodeZine Academy
ロジスティック回帰による確率の推定
■
ロジスティック回帰では、「個々の観測点で
得られるデータが t = 1 に属する確率」が得
られます。
■
これを利用すると、トレーニングセットにつ
いて「確率順リスト」が作成できます。
●:t = 1
×:t = 0
この方向に
確率が大きくなる
x y type probability
0 25.100600 15.215185 1 0.972372
1 25.716642 10.509214 1 0.957894
2 26.328260 9.368392 1 0.955292
3 20.965230 6.646373 1 0.906886
4 16.940683 7.185182 1 0.876261
5 15.384313 4.033190 0 0.814820
6 -4.292937 19.269243 1 0.776546
7 19.822191 -3.042080 1 0.760062
...
66. 66
CodeZine Academy
ロジスティック回帰の現実問題への適用
■
これまでに考えてきた下記の「分割線」は、「t = 1 の確率が 0.5」の境界線に
なります。
■
現実の問題において、観測点 (x, y) の新たなデータのタイプを推定する際は、
必ずしも「確率 0.5」を堺に判定する必要はありません。
- 例1:「あるウィルスに感染しているか」を示すトレーニングセットにロジスティッ
ク回帰を適用して、検査結果の数値 (x, y) から t = 1 である(ウィルスに感染してい
る)確率 P(x, y) を求められるようになりました。医師であるあなたは、確率 P(x, y) の
値がいくら以上の人に精密検査を勧めるでしょうか?
- 例2:競馬の予想屋であるあなたは、馬の属性 (x, y) と勝敗 t を示すトレーニングセッ
トにロジスティック回帰を適用して、属性 (x, y) から t = 1 である(次のレースで勝
つ)確率 P(x, y) を求められるようになりました。「絶対勝つ馬の極秘情報」には、確
率 P(x, y) の値がいくら以上の馬を含めるでしょうか?
67. 67
CodeZine Academy
真陽性率と偽陽性率のトレードオフ
■
一般に、判定のしきい値(t = 1 と判断する最低確率)は、TP rate(True
Positive Rate: 真陽性率)と FP rate(False Positive Rate: 偽陽性率)のト
レードオフを考慮して設定します。
- TP Rate : 「陽性と判定した中で本当に陽性だった数」÷「陽性の総数」
- FP Rate : 「陽性と判定した中で本当は陰性だった数」÷「陰性の総数」
■
感染者20名を含む1000人が検査を受け
て、50名が陽性と判定されたとして:
- 本当に陽性だったのは15人
⇒ TP rate = 15/20 = 0.75
- 実際は陰性だったのは35人
⇒ FP rate = 35/980 ≒ 0.04
Classifier metrics in a nutshell
http://enakai00.hatenablog.com/entry/20150205/1423086735
68. 68
CodeZine Academy
真陽性率と偽陽性率のトレードオフ
■
理想の判定は、TP rate = 1(感染者は全部見つける)かつ FP rate = 0(誤っ
て感染者とは判定しない)ですが、一般には次のトレードオフが発生します。
- しきい値を下げると TP rate が上がる代わりに FP rate も上がる。
- しきい値を上げると FP rate が下がる代わりに TP rate も下がる。
x y type probability
0 25.100600 15.215185 1 0.972372
1 25.716642 10.509214 1 0.957894
2 26.328260 9.368392 1 0.955292
3 20.965230 6.646373 1 0.906886
4 16.940683 7.185182 1 0.876261
5 15.384313 4.033190 0 0.814820
6 -4.292937 19.269243 1 0.776546
7 19.822191 -3.042080 1 0.760062
-----
8 12.615442 -4.103175 0 0.591393
9 15.223528 -6.948369 1 0.577949
10 10.978713 -7.110957 1 0.475399
11 26.402198 -21.755863 0 0.450887
12 -7.920640 -3.024727 0 0.192805
13 -19.024978 6.163114 0 0.181953
14 1.152526 -14.663486 1 0.140983
15 6.027717 -20.457424 0 0.123408
16 -16.228075 -3.017577 0 0.099239
17 -28.237444 2.175471 0 0.058384
18 -6.533585 -19.910959 0 0.044175
...
陽性判定陰性判定
真陽性(TP)
しきい値
偽陽性(FP)
しきい値を上げると
偽陽性(FP)が減るが
真陽性(TP)も減る
しきい値を下げると
真陽性(TP)が増えるが
偽陽性(FP)も増える
69. 69
CodeZine Academy
ROC曲線によるしきい値の決定
■
さまざまなしきい値に対する、TP rate と FP rate の値をグラフ上にプロット
したものを「ROC曲線」と言います。
- ROCグラフから、「最適なしきい値」の検討ができます。
■
理想は左上(TP=1, FP=0)ですので、
「ROCグラフがどれだけ左上に近づいている
か」は、その判定法そのものの評価基準とな
ります。
- ROC曲線の下側の面積(AUC: Area under the
curve)が大きいほど優秀な判定法と言えます。
理想の判定法
すべてを「陽性」
と判定する
すべてを「陰性」
と判定する
一定確率でランダムに
「陽性」と判定する
77. 77
CodeZine Academy
誤差関数の計算
■
n 番目のデータ の正解ラベルは、次の 1-of-K ベクトルで与えられます。
- 正解を k として、k 番目の要素 のみが 1 になっています。
■
今のモデルでこのデータが得られる確率は なので、全データが得ら
れる確率は次式になります。
■
次式で誤算関数 E を定義すると、「確率 P 最大 ⇔ 誤差関数 E 最小」が成り
立ちます。
正解 k の所のみ1になる
92. 92
CodeZine Academy
EM法による混合分布の最尤推定
■
「生成器のセット」は、次のような考え方で決定します。
- K 個の生成器とそれぞれの生成器を選択する確率 を想定します。
- 新しい文字を生成するときは、確率 に基づいて生成器を1つ選択して、その
生成器から文字を生成します。
- 「上記の操作を600回繰り返した時に、トレーニングセットと同じ600文字が得られる
確率」を考えて、これを最大にする生成器と確率 を求めます。
- ランダムに用意した生成器を「EM法」と呼ばれるアルゴリズムで修正していくこと
で、上記の確率を最大化(厳密には極大化)する生成器が得られます。
■
ビットマップの生成器は、統計学
的には、各ピクセルの「0,1」を
乱数で決める「ベルヌーイ分布」
に分類されます。
- 特にこの例は、K 個のベルヌーイ分
布を混ぜた「混合ベルヌーイ分布」
になります。
生成器がEM法でアップデートされる様子
94. 94
CodeZine Academy
EM法のアルゴリズム
■
ドット数 D のビットマップ画像において、各ピクセルが1(黒)になる確率を
並べたベクトルを 、生成される画像のピクセル(0, 1)
を並べたベクトルを として、このような画像が得られる
確率は次になります。
■
この記法を用いると、K 個の生成器は、K 個の確率ベクトル で表現
されます。同じく、トレーニングセットとなる N 個の画像は、ピクセルを並べ
たベクトル で表現されます。
■
この時、トレーニングセットと同じものが
生成される確率は次式になります。
99. 99
CodeZine Academy
参考資料
■
『ITエンジニアのための機械学習理論入門』 中井 悦司(著)、技術評論社(2015)
- ロジスティック回帰をはじめとする、機械学習の基本的なアルゴリズムについて、数学的な背景を
含めて解説しています。
■
『戦略的データサイエンス入門』 Foster Provost、Tom Fawcett(著)、竹田 正和(監訳/翻
訳)、古畠 敦、瀬戸山 雅人、大木 嘉人、藤野 賢祐、宗定 洋平、西谷 雅史、砂子 一徳、市川 正和、
佐藤 正士(翻訳)、オライリージャパン(2014)
- データサイエンスのビジネス適用という観点から、より広い視点で機械学習の考え方を学ぶことが
できます。
■
『データサイエンス講義』 Rachel Schutt、Cathy O'Neil(著)、瀬戸山 雅人、石井 弓美子、河内
崇、河内 真理子、古畠 敦、木下 哲也、竹田 正和、佐藤 正士、望月 啓充(翻訳)、オライリージャ
パン(2014)
- 機械学習に限定しない、より広い意味でのデータサイエンスの手法や考え方を学ぶことができま
す。
■
その他には「データサイエンスに関する初心者向けの参考書」を参照
- http://enakai00.hatenablog.com/entry/2017/02/20/124112