Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習概論 講義テキスト

113,309 views

Published on

2015/04/14 初期バージョン
2015/04/16 ver1.4(参考資料追加、k平均法の解説追加など)
2015/04/20 ver1.5(最大対数尤度関数の評価、混合分布によるクラスタリングを追加)
2015/04/21 ver1.6(EM法のアルゴリズム説明を追加)
2015/04/24 ver1.7(その他の性能指標を追加)
2015/05/19 ver1.8(ギリシャ文字ベクトルフォントの修正、その他リファクタリング)
2015/05/25 ver1.9(EM法の初期データ画像を追加)
2015/06/07 ver2.1(セミナー用に修正)
2015/06/24 ver2.2(EM法の説明を追加)
2016/09/01 ver2.3(誤字修正)
2016/12/27 ver1.0 タイトルを変更
2016/07/07 ver1.4 Update

Published in: Technology
  • Be the first to comment

機械学習概論 講義テキスト

  1. 1. CodeZine Academy ITエンジニアのための 「機械学習理論」入門 (講義テキスト) Ver1.4 2017/06/22 中井悦司 (Twitter @enakai00)
  2. 2. 2 CodeZine Academy 目次 ■ 第1部:データサイエンス入門 - データサイエンスと機械学習 - 機械学習アルゴリズムの分類 ■ 第2部:回帰分析 - 誤差関数(最小二乗法)による回 帰分析 - オーバーフィッティングの検出 - 最尤推定による回帰分析 ■ 第3部:線形判別法 - パーセプトロン - ロジスティック回帰 - 学習モデルの評価(ROC曲線) - 線形多項分類器 ■ 第4部:教師なし学習 - k平均法によるクラスタリング - 混合分布とEM法によるクラスタリ ング ■ 参考資料
  3. 3. 3 CodeZine Academy 第1部 データサイエンス入門
  4. 4. 4 CodeZine Academy データサイエンスと機械学習
  5. 5. 5 CodeZine Academy データサイエンスの全体像 データに基づいた ビジネス判断 機械学習 過去のデータ 過去のデータ過去のデータ 分析に意味のある データを選別 判断ルール 判断ルール 判断ルール ビジネスとして意味のある 判断指標への変換 学習アルゴリズムの選定 これらすべてが データサイエンス の対象
  6. 6. 6 CodeZine Academy データサイエンスの全体像 データに基づいた ビジネス判断 機械学習 過去のデータ 過去のデータ過去のデータ 分析に意味のある データを選別 判断ルール 判断ルール 判断ルール ビジネスとして意味のある 判断指標への変換 学習アルゴリズムの選定 データの準備 データのモデル化 ビジネス適用と 結果の評価
  7. 7. 7 CodeZine Academy データサイエンスの全体像 データに基づいた ビジネス判断 機械学習 過去のデータ 過去のデータ過去のデータ 分析に意味のある データを選別 判断ルール 判断ルール 判断ルール ビジネスとして意味のある 判断指標への変換 学習アルゴリズムの選定 データの準備 データのモデル化 ビジネス適用と 結果の評価 ビジネスの理解 データの理解 分析理論の理解
  8. 8. 8 CodeZine Academy ビジネスにおけるデータサイエンスの役割 ■ データ分析を通して「ビジネス判断の質を向上」すること。 - 「未来のビジネス判断」に役立つ指標を「過去のデータ」から導きだすこと。 - 具体的なビジネス判断を「数値的根拠」を持って提案することが大切。 ■ 例:台風が近づいているので、過去の台風の際にコンビニでどのような商品 が売れたか分析したデータサイエンティストはどんな結果を出すべきか? - 水が通常よりも2割多く売れた。 ● 水の在庫を増やせばいいの?売り切れてなかったら関係ないよね。 - 「アナ雪」のDVDが爆発的に売れた。 ● その時はたまたま「アナ雪」が人気だったからでしょ。 - コロッケが通常の10倍売れて、小さな店舗では品切れが続出した。 ● 10倍売れても十分なコロッケを確保・・・・万一売れ残ったら廃棄するのか? - ビールが通常の3倍売れて、小さな店舗では品切れが続出した。 ● ビールの在庫が少ない店舗は、3倍売れても十分な在庫を確保しよう。でもそれで 在庫確保にかけたコスト以上に儲かるの?
  9. 9. 9 CodeZine Academy データサイエンスにおける機械学習の役割 ■ 決められたアルゴリズムにしたがって、過去のデータから「判断基準(判断 ルール)」を決定する手法。 - どのようなアルゴリズムを用いるかは、データサイエンティストが判断。 - 得られたルールの妥当性の評価も大切。過去のデータを正しく判断できるからと 言って、将来のデータを正しく判断できるとは限らない。 - 過去のデータは、「分析のために必要なデータ」として集めているとは限らない。 分析に意味のあるデータを選定するのもデータサイエンティストの役割 ■ 機械学習をビジネスに活かすにはデータサイエンティストとしての「知見」 が必要 - 対象ビジネスの理解:ビジネスに役立つ結果がでないと意味がない。 - 分析データの理解:データは単なる数字の集まりではない。 - 分析理論の理解:データとビジネスを結びつける中核となる知識。 本セミナーのテーマ
  10. 10. 10 CodeZine Academy (イケテナイ)機械学習の例 ■ 次の例は、データサイエンティストの活動として、どこに問題があるので しょうか? ■ 例:携帯電話の契約更新時に解約しそうなユーザーを判別 - 過去に契約更新を迎えたユーザーのデータを元に、新たに契約更新を迎えるユー ザーが解約しそうかどうかを判定するルールを作る。 - 使用するアルゴリズムは、「決定木(けっていぎ)」を用いる。 動物の種類を決定する決定木の例 えら呼吸 肺呼吸 魚類 鳥類 爬虫類 卵生 胎生 恒温 変温 発生形態 呼吸方法 哺乳類 体温
  11. 11. 11 CodeZine Academy (イケテナイ)機械学習の例 ■ データサイエンティストは、次のようなデータを収集しました。 - Yes: 解約したユーザー - No : 解約しなかったユーザー (*) Data Science for Business(Foster Provost, Tom Fawcett)より引用
  12. 12. 12 CodeZine Academy (イケテナイ)機械学習の例 ■ 機械学習ライブラリーに先のデータを入力し て計算すると、右図の決定木が得られまた。 ■ この結果を「解約の恐れがあるユーザーを判 定するルール」として事業部門に提出しまし た。 ■ 事業部門では、契約更新が近づいたユーザー が解約しそうかどうかを判定するアプリケー ションを作って、販売店に提供した上で、解 約防止キャンペーンに役立てるように指示し ました。 ■ その結果・・・??? (*) Data Science for Business(Foster Provost, Tom Fawcett)より引用
  13. 13. 13 CodeZine Academy 機械学習アルゴリズムの分類
  14. 14. 14 CodeZine Academy 機械学習アルゴリズムの分類(代表例) ■ Classification / Class probability estimation(分類) - 既存データを複数のクラスに分類して、新規データがどのクラスに属するかを予想 する。特定のクラスを予想する他、各クラスに属する確率を計算する方法もある。 ● 携帯の機種変更時に「どの機種を選択するか」を予測する。 ● 特別割引キャンペーンのDMを送ったら「申し込む/申し込まない」を予測する。 ● 新規メールが「スパムである確率」を計算する。 ■ Regression(回帰分析) - 既存データの背後にある「関数」を推測して、具体的な「数値」を予測する。 ● 新規サービスを提供したら「何人のユーザー」が利用するか予測する。 ● 広告宣伝費を2倍にしたら売上は「何倍」になるか予測する。 ■ Similarity matching - 新規データが既存データの「どれと似ているか」を予測する。 ● 新規顧客は、既存のどの顧客と似ているかを予測する。
  15. 15. 15 CodeZine Academy 機械学習アルゴリズムの分類(代表例) ■ Clustering - 既存データについて、具体的な指標を与えず、自然に分類されるグループを発見す る。一般には、自然なグループを発見した後に、それぞれのグループの特性を他の アルゴリズムで分析する。 ● 既存顧客をグループに分けて、それぞれのグループに提供する製品/サービスを 決定する。 ■ Co-occurrence grouping - 既存データから、同時に発生する事象を発見する。 ● 「Xを買った人はYも買っています」 ■ Reinforcement learning(強化学習) - エージェントが環境との相互作用の中でデータを収集して学習を行う。 ● 囲碁プログラムがコンピューター同士の対局から有効な手筋を発見する。 ● 自動運転プログラムがランダムな運転を通じて、正しく進む方法を発見する。
  16. 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 本パートでは、これらを使って直接 にアルゴリズムを実装したコードを 使用します。
  17. 17. 17 CodeZine Academy 第2部 回帰分析
  18. 18. 18 CodeZine Academy 誤差関数(最小二乗法)による回帰分析
  19. 19. 19 CodeZine Academy 回帰分析の例題 ■ 学習に使用するデータ(トレーニングセット) -          + 「標準偏差 0.3 の正規 分布ノイズ(*1) 」 - の範囲を等分した10個の観測点      から、10個の値     を取得 (N = 10)。 (*1) およそ ±0.3 の範囲に散らばる乱数の事 ■ 解くべき問題 - トレーニングセット        の背後 にある関数を推測して、次に観測点 x から 得られる値を予測する。 ±0.3 標準偏差 0.3 の正規分布 トレーニングセット 確率
  20. 20. 20 CodeZine Academy 多項式近似と誤差関数による推定 ■ 背後にある関数は M 次多項式と仮定して、係数      を決定します。 ■ それぞれの観測データ        について、   と  の二乗誤差を 計算して、その合計(誤差関数)を与えます。 ■ 誤差関数が最小になるように係数      を決定します。
  21. 21. 21 CodeZine Academy (参考)勾配ベクトルとグラフの傾きの関係 ■ 多変数関数 h の勾配ベクトル   は、グラフの傾きが最大 になる方向に対応しており、 その大きさはグラフの傾きに 一致します。
  22. 22. 22 CodeZine Academy 多項式近似と誤差関数による推定 ■ 前ページの方程式は解析的に解けて、下記の結果が得られます。 ※ 証明は「ITエンジニアための機械学習理論入門・第2章」を参照 ■ 補足 - 誤差関数から計算される下記の値を「平方根平均二乗誤差(Root Mean  Square Error)と呼びます。各データの平均的な誤差に相当します。
  23. 23. 23 CodeZine Academy 多項式近似の実行結果 ■ 多項式の次数が上がると、平方根平均二乗誤差は減少していきます。 - M = 9 は、10個のパラメータを持つので10個の観測データを正確に再現します。
  24. 24. 24 CodeZine Academy オーバーフィッティングの検出
  25. 25. 25 CodeZine Academy オーバーフィッティングの検出 ■ 先ほどの M = 9 の例は、観測データは正確に再現していますが、未知のデータ の「予測性能」が高いかどうかは分かりません。 - トレーニングセットだけに固有の特徴を拾ってしまい、予測性能の一般性が失われる ことを「オーバーフィッティング」と呼びます。 ■ 機械学習を行う際は、学習用のデータ(トレーニングセット)とは別に検証用 のデータ(テストセット)を残しておき、テストセットに対する予測性能を見 て、オーバーフィッティングの発生を検出します。 - 次数 M を増やしていった際の「トレーニングセット」と「テストセット」それぞれの 「平方根平均二乗誤差」の変化の様子を見ます。 トレーニングセット テストセット 全データ
  26. 26. 26 CodeZine Academy オーバーフィッティングの検出 ■ ここでは、トレーニングセットとは独立に取得したテストセット       があるものとして、検証します。 - 観測点     は同じですが、正規分布のノイズがあるので、取得値     は 異なります。) ■ 右図のように、M = 3 を超えると テストセットの誤差は減少しなく なります。 - つまり、M = 4 以上はオーバー フィッティングが発生しています。
  27. 27. 27 CodeZine Academy クロスバリデーションについて ■ 機械学習に利用できるデータが与えられた場合、トレーニングセットとテスト セットの分け方は自由です。全データを N 分割して、N 個のそれぞれのパート をテストセットとした学習・検証を繰り返す方法があります。 パート2 パート3 パ ト1ー パート5 パート4 パート1テストセット トレーニング セット 学習結果 誤差 パート1 パート3 パ ト1ー パート5 パート4 パート2 学習結果 誤差 パート1 パート2 パ ト1ー パート5 パート4 パート3 学習結果 誤差 パート1 パート2 パ ト1ー パート5 パート3 パート4 学習結果 誤差 パート1 パート2 パ ト1ー パート4 パート3 パート5 学習結果 誤差 誤差の平均や分散から、 最適なパラメータ数を決定
  28. 28. 28 CodeZine Academy オーバーフィッティングの発生理由 ■ 一般に観測データ量に対して、モデルのパラメータが多すぎるとオーバー フィッティングが発生します。 ■ 逆に言うとオーバーフィッティングの発生の仕方は、データ数に依存します。 下記は N = 100 のデータを用いて学習した結果です。 - M = 3 を超えると誤差はほぼ一定の 0.3 で落ち着きます。もともと標準偏差 0.3 のノ イズを持ったデータなので、0.3 程度の誤差は必ず残ります。
  29. 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 の例で実際に計算された係数      の値を見ると下表のようにな ります。 ■ そこで、適当な定数 λ を用いて、下記のように修正した誤差関数を最小にする という条件で係数を決めると、次数が高くでもオーバーフィッティングが発生 しにくくなります。 - 最適な λ の値は、試行錯誤で決める必要があります。
  30. 30. 30 CodeZine Academy 最尤推定による回帰分析
  31. 31. 31 CodeZine Academy 回帰分析の例題 ■ 学習に使用するデータ(トレーニングセット) -          + 「標準偏差 0.3 の正規 分布ノイズ(*1) 」 - の範囲を等分した10個の観測点      から、10個の値     を取得 (N = 10)。 (*1) およそ ±0.3 の範囲に散らばる乱数の事 ■ 解くべき問題 - トレーニングセット        の背後 にある関数を推測して、次に観測点 x から 得られる値を予測する。 ±0.3 標準偏差 0.3 の正規分布 トレーニングセット 確率
  32. 32. 32 CodeZine Academy 尤度(ゆうど)関数による推定 ■ 「誤差関数による回帰分析」では、誤差関数を最小とするように係数を決定し ましたが、誤差関数のとり方によって結果は変わります。 - 「平均二乗誤差」は計算が簡単なのでよく使われるだけで、本質的にこれを採用する べき理由はありません。どのような誤差関数がベストかは、問題ごとに試行錯誤する 必要があります。 ■ ここでは誤差関数の代わりに、ある「確率」を考えて係数を決定します。 - この方法では、データに含まれる「ノイズ」の大きさも推定できるようになります。 ■ この後の記法として、平均 μ 、分散 σ2 の正規分布を次の記号で表します。 - これは、およそ μ ± σ にちらばる乱数です。 ±σ 確率 μ
  33. 33. 33 CodeZine Academy 前提条件 ■ 今回使用する観測データ        は、「何らかの関数 y(x) に従うが、 未知のノイズが含まれている」と予めわかっているものとします。 - ビジネス上のデータ分析では、一定のデータの性質が予めわかっていることもよくあ ります。(分析するデータの性質を理解することもデータサイエンティストの役割で したね。) ■ 何らかの関数 y(x) は、最小二乗法と同様に M 次多項式と仮定します。 ■ さらに、未知のノイズを分散  の正規分布と仮定すると、係数 w が決まった 後、次に観測点 x から値 t が得られる確率は次式になります。(次ページも参 照。) 太文字はベクトル(行列)表記
  34. 34. 34 CodeZine Academy 個々のデータが得られる確率 ■ トレーニングセットに含まれる個々のデータについて、「そのデータが得られ る確率」は、下図のように計算されます。 平均 y、標準偏差 σ の正規分布
  35. 35. 35 CodeZine Academy 尤度関数の計算 ■ ここで、係数 w が決まったものとして、「観測データとして、 トレーニングセット       と同じものが得られる確率」を考えます。 誤差関数と同じものが現れた!
  36. 36. 36 CodeZine Academy 尤度関数を最大化するパラメータを決定 ■ 先に求めた確率は、パラメータ (w, β) によって値が変わります。トレーニング セットが得られる確率をパラメータの関数とみなしたものを「尤度関数」と呼 びます。 ■ ここで次のような仮説を立てます。 「観測されたデータ(トレーニングセット)は、        最も発生確率が高いデータに違いない!」 ■ この仮説が正しいものとして、尤度関数が最大になるようにパラメータ (w, β) を決定する手法を「最尤推定」と呼びます。 - 計算上は、次の対数尤度関数を最大するパラメータを求めます。
  37. 37. 37 CodeZine Academy (参考)対数関数の性質 x 最大 ⇔ y 最大
  38. 38. 38 CodeZine Academy 尤度関数を最大化するパラメータを決定 ■ 実際に計算してみると、次のことが分かります。 - w についての偏微分係数は、誤差関数の偏微分係数に等しく、パラメータ w は、誤差関数を最小化する w と同じ結果になります。 - β についての偏微分係数からは、次の結果が得られます。これは、観測デー タの平方根平均二乗誤差を標準偏差の推定値とすることを意味します。 ■ 最尤推定により、次に得られる観測値について、予測の誤差を含めて推測する ことが可能になります。 ⇒ ∴
  39. 39. 39 CodeZine Academy 標準偏差を含む推定結果 ■ 破線のグラフは、推定された標準偏差の幅を表します。多項式の次数が上がる と、標準偏差は減少していきます。 - M = 9 では、オーバーフィッティングにより標準偏差が 0 と推定されています。
  40. 40. 40 CodeZine Academy - 尤度関数    は、「トレーニングセットが得 られる確率」ですので、これが大きいほど、「ト レーニングセットによく当てはまるモデル」と言 えます。 最尤推定の「当てはまり具合」の評価 ■ 「誤差関数による回帰分析」では、「平方根平均二乗誤差(Root Mean  Square Error)   」の値で、フィッティングの「当てはまり具合」を 判別しました。 - 関数の次数 M を上げるに従って、トレーニングセットに対する    は減少を続 けますが、テストセットに対しては一定値で安定しました。 ■ 最尤推定で同様のことを行う際は、「最大対数尤度(Maximum Log Likelihood)    」の変化を観察します。
  41. 41. 41 CodeZine Academy もう少し簡単な最尤推定の例 ■ 少し単純化した例として、単一の観測点 x から複数の観測データを取得して、 それを元にその点における正規分布の平均と分散を推定してみます。 - 平均 μ、分散 1/β とすると、尤度関数と対数尤度関数は次のようになります。 - 対数尤度関数の μ、β による偏微分係数が 0 になる条件から計算すると下記が得られま す。これは、観測データの平均と分散を未知の正規分布の平均と分散の推定値として 採用することを表します。
  42. 42. 42 CodeZine Academy もう少し簡単な最尤推定の例 - データ数が少ないと不正確な結果 ですが、特に分散が小さく推定さ れています。 - データ数が少ないと出現確率の低 い「裾野」のデータが得られない ため、裾野の広がりが捉えられな いことに起因します。 ■ 実際に数値計算で確かめると図のような結果が得られます。緑の曲線が本来 の正規分布で、赤の曲線が推定された正規分布です。
  43. 43. 43 CodeZine Academy ■ 一般に、何らかの理屈に基づいて得られた推定値の計算方法を「推定量」と 呼びます。 - 先ほどの問題では、最尤推定に基づいて次の推定量が得られました。 ■ 推定量から計算される値(推定値)は、必ずしも真の値(真の母数)に一致 するわけではありませんが、次の性質を持つ推定量は「よい性質を持つ」と 考えられます。 - 観測データ数 N が大きくなると、推定値は真の値に近づく(一致推定量) - 観測を繰り返して何度も推定値を計算した場合、推定値の平均は真の値に近づく(不 偏推定量) 一致推定量と不偏推定量 :標本平均 :標本分散
  44. 44. 44 CodeZine Academy 不偏性のある推定量とない推定量の比較 真の母数 データ数 N 真の母数に対して、 偏った推定値が得られる 真の母数 データ数 N 真の母数のまわりに、 均等に推定値が得られる 不偏性のある推定量 不偏性のない推定量
  45. 45. 45 CodeZine Academy 標本分散と不偏分散の違い データ数 N データ数 N 標本分散 不偏分散 ■ 先ほどの例では、標本分散は真の母数よりも小さい値が得られやすく不偏性 のない推定量になっています。 - 分母を    に修正することで不偏分散になることが知られています。
  46. 46. 46 CodeZine Academy 第3部 線形判別法
  47. 47. 47 CodeZine Academy パーセプトロン
  48. 48. 48 CodeZine Academy 線形判別法の例題 ■ 学習に使用するデータ(トレーニングセット) - (x, y) 平面上の N 個のデータポイント - データポイントは、2タイプに分かれて おり、     にラベル付けされている。 ■ 解くべき問題 - 2タイプのデータを分割する直線を求める。 - きれいに分割できない場合は、何らかの意味 で「最善」の分割を与える。 トレーニングセットと 判別直線の例 ●:t = 1 ×:t = -1
  49. 49. 49 CodeZine Academy パーセプトロンの考え方 ■ 分割直線を次の式で表します。 ■ この時、この平面は次の2つの領域に分 割されます。 -            なら正解 -             なら正解 ■ これより、「正しく判別されていない 点」では、次の関係が成り立ちます。 - 分割直線から点が離れるほど(誤っ た領域の内部に入り込むほど)、こ の値の絶対値は大きくなります。 x y ●:t = 1 ×:t = -1
  50. 50. 50 CodeZine Academy 誤差関数の定義 ■ そこで、次の「誤差関数」を定義して、これをなるべく小さくする係数 w を求 めることにします。 ※ n の和は判定を誤っている点についてのみ取ります。 ■ ここで、計算の便宜上、次のような記号で式を表します。 bias項
  51. 51. 51 CodeZine Academy 誤差関数を最小化する手順 ■ ある点 w において、EP (w) の値を減らす方向のベクトルは、この関数の「勾 配」で決まります。 ■ これは、「ある w において、誤って判定された点     があった場合、 ベクトル    の方向に w を修正すると、EP (w) の値を減らすことができる」 と解釈できます。(直感的には。) ■ 厳密に議論すると、誤って判定された点について、1つずつ順番に次の式で w の値を修正していくことを何度も繰り返すと、(完全な分割が可能な場合は) いつかは正しい分割線が得られることが証明されています。
  52. 52. 52 CodeZine Academy パーセプトロンのアルゴリズムに関する補足 ■ 関数の最小値を与えるパラメータを求める際に、このように、関数が小さくな る方向に修正を繰り返す手法を「確率的勾配降下法」と言います。 ■ パーセプトロンの場合、完全な分割ができない問題だと w の修正はいつまで たっても終わらない(誤って判定される点はなくならない)ので、適当な回数 で修正を打ち切って、その時点の w を答えとします。 ■ 完全な分割が可能な場合でも、何回ほど繰り返せば正しい分割線に到達するか (収束の速度)は分かりません。特に最後の答えとなる直線が「原点の近くを 通らない場合」は、収束が極端に遅くなります。 - このような場合は、下記の「bias項」を「データ群の座標値の平均的な大きさ」に近 い定数に修正することで収束速度が改善されます。(理由は次ページ以降を参照) bias項
  53. 53. 53 CodeZine Academy (補足)パラメータ修正の幾何学的説明 ■ 原点を通る直線でデータが分類できると最初から分かっている場合、分割線 は、次のように取れます。 ■ この時、分割線上の点を x として、     より、w は法線の方向を表して おり、パラメータの修正は、法線の方向を調整していることが分かります。
  54. 54. 54 CodeZine Academy (補足)bias項の幾何学的理解 ■ ここで説明したパーセプトロンの計算は、一般に (x, y, z) 空間のサンプル群を 「原点を通る平面            で分割する」 アルゴリズムと考えることができます。 - その上で、「すべてのデータが z = 1 の平面に乗っている」という特別な場合を考える と、bias項を 1 にした先の計算式が得られます。この意味では、bias項は任意の定数 にとれます。 - ただし、サンプル群の (x, y) 座標値にくらべ て極端に小さいと、「原点を通る平面」を極 端に傾ける必要があります。このため、「微 調整」が難しくなり、収束速度が遅くなりま す。
  55. 55. 55 CodeZine Academy パラメータの収束状況 ■ 数値計算でいくつかのパターンを観測すると、典型例として次のような結果が 得られます。 - 左図のように完全に分離できない場合は、パラメータは変動を続けますが、 右図のように完全に分離できる場合は、パラメータは収束していることが分 かります。
  56. 56. 56 CodeZine Academy ロジスティック回帰
  57. 57. 57 CodeZine Academy 線形判別法の例題 ■ 学習に使用するデータ(トレーニングセット) - (x, y) 平面上の N 個のデータポイント - データポイントは、2タイプに分かれて おり、     にラベル付けされている。 ■ 解くべき問題 - 2タイプのデータを分割する直線を求める。 - きれいに分割できない場合は、何らかの意味 で「最善」の分割を与える。 トレーニングセットと 判別直線の例 ●:t = 1 ×:t = 0 ※ パーセプトロンの例題と本質的に同じですが、計算上の都合で t の値が異なります。
  58. 58. 58 CodeZine Academy ロジスティック回帰の考え方 ■ ロジスティック回帰では、分割線を次 式で与えます。ここまでは、パーセプ トロンと同じです。 ■ パラメータ w を決定するために「最 尤推定」を用います。 ■ つまり、回帰分析と同様に、あるデー タが得られる「確率」を決めて、ト レーニングセットが得られる確率を最 大にします。 x y ●:t = 1 ×:t = 0
  59. 59. 59 CodeZine Academy ロジスティック関数による確率 ■ 点 (x, y) で新たに取得したデータが「t = 1」で ある確率を P(x, y) とします。 ■ 右図において分割線から右上に進むと P は大 きくなり、左下に進むと P は小さくなると考 えられます。 ■ そこでこの確率を次式で定義します。 - σ(a) は、右図のように 0 から 1 になめらかに増 加する関数です。 -       の分割線上では、確率はちょうど 0.5 になります。 ●:t = 1 ×:t = 0 :ロジスティック関数
  60. 60. 60 CodeZine Academy ロジスティック回帰における尤度関数 ■ 前ページで定義した確率     を元にして、トレーニングセット          が得られる確率を計算してみます。 - 点    から    のデータが得られた場合、それが起きる確率は: - 点    から    のデータが得られた場合、それが起きる確率は: - これら2つは、(技巧的ですが)次のように1つの式にまとめられます。 ■ 従って、トレーニングセットが得られる確率(尤度関数)は次式になります。
  61. 61. 61 CodeZine Academy ロジスティック回帰のIRLS法 ■ 次の対数尤度関数を最大にするパラメータ        を決定します。 ■ この最大値問題の解は、パーセプトロンと同様に、一定のルールでパラメータ の値をアップデートしていくことで得られることが証明されます。 - 証明は「ITエンジニアのための機械学習理論入門・第5章」を参照 : Iterative reweighted least squares
  62. 62. 62 CodeZine Academy パーセプトロンとロジスティック回帰の比較 ■ 青線はロジスティック回帰で、赤線はパーセプトロンによる結果です。 - パーセプトロンは、一度、完 全に分離できるとそれ以上は パラメータの調整を行わない 点に注意して、結果を比較し てみてください。
  63. 63. 63 CodeZine Academy (補足)特徴量の正規化/標準化について ■ 機械学習の特徴量として用いるデータには、スケールの任意性があります。 - 例:身長を cm の単位で入力するのか m の単位で入力するのか。 ■ トレーニングセットに含まれるデータに一定の変換を施して、値のばらつきを 抑える手法を「特徴量の正規化/標準化(Feature Scaling)」と呼びます。 - 予測処理を行う際は、予測データに対しても同じ変換を行ってから学習済みモデルに 入力します。具体的には、次のような手法があります。 ● 平均 0、分散 1 にそろえる(はずれ値の影響を受けにくい) ● 最大 1、最小 0 にそろえる
  64. 64. 64 CodeZine Academy 学習モデルの評価(ROC曲線)
  65. 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. 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. 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. 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. 69 CodeZine Academy ROC曲線によるしきい値の決定 ■ さまざまなしきい値に対する、TP rate と FP rate の値をグラフ上にプロット したものを「ROC曲線」と言います。 - ROCグラフから、「最適なしきい値」の検討ができます。 ■ 理想は左上(TP=1, FP=0)ですので、 「ROCグラフがどれだけ左上に近づいている か」は、その判定法そのものの評価基準とな ります。 - ROC曲線の下側の面積(AUC: Area under the curve)が大きいほど優秀な判定法と言えます。 理想の判定法 すべてを「陽性」 と判定する すべてを「陰性」 と判定する 一定確率でランダムに 「陽性」と判定する
  70. 70. 70 CodeZine Academy ROC曲線によるモデルの評価 ■ 下記の例におけるROC曲線の違いは、対応する分割線の図と比較して理解する ことができます。 - 左の例は比較的よく分類されているので、ROC曲線は左上に近づいています。 - 右の例は分類精度がよくないので、ROC曲線は左上に近づけていません。
  71. 71. 71 CodeZine Academy その他の性能指標(メトリック) ■ ROC曲線では、TP rateとFP rateをグラフ化しましたが、その他にも下図のよ うな性能指標(メトリック)が考えられます。 - 特に「Accuracy」は、単純な「正答率」とみなせるので分かりやすい反面、誤った判 断の原因にもなります。 - 極端に偏りのあるデータに対しては、「Recall」と「Precision」が分かりやすい指標 となります(次ページの例を参照)。 陽性と判断した中で、 本当に陽性だった割合陽性の中で、正しく 検出できた割合
  72. 72. 72 CodeZine Academy 偏りの大きいデータの注意点 ■ 「大部分が陰性で陽性はごくわずか」というデータでは、すべてを陰性と判断 するだけで高い Accuracy が得られます。 - 多くの場合、次の2つが有用な指標となります。 ● Recall:陽性のデータをどれだけの割合で正しく検出できたか ● Precision:陽性と判断した中でどれだけが本当に陽性だったか ■ このようなデータでは、「真陰性(TN)」の値は極端に大きくなりやすいため、真陰性 (TN)の値を計算式に含む指標は、よい指標とはなりません。(モデルの特性を変えて も値があまり変わらない。) FP TP TN FN Precision TP Rate / Recall FP Rate    予測 実際
  73. 73. 73 CodeZine Academy 偏りの大きいデータの注意点 ■ 「現実世界では大部分が陰性のデータ」では、(珍しい)陽性データのみが蓄 積されて、解析用のデータでは陽性データの割合が多くなることがあります。 - 図の2種類の分類器は、解析用データと現実世界のデータで「Accuracy」が逆転しま す。単なる数値の大小だけではなく、「判別の目的」に応じて各指標を見る必要があ ります。 TNTP TN FN TP FP TP TN FP 解析用データ 現実世界のデータ 分類器A(高TP Rate重視) 分類器B(低FP Rate重視) 誤判定 部分 TN FN TP 誤判定 部分
  74. 74. 74 CodeZine Academy 線形多項分類器
  75. 75. 75 CodeZine Academy 線形多項分類器の仕組み ■ 関数       のグラフを描くと、図 のように「斜めに配置した板」で    平面が分割されることがわかります。 ■ 同様に、3つの1次関数を用意して、 「どの関数が一番大きいか」で平面を3 分割することができます。
  76. 76. 76 CodeZine Academy ソフトマックス関数による確率への変換 ■ 点    が i 番目の領域である確率を次式で定義します。 ■ これは、    の大小関係を確率に変換したもので、次の条件を満たすこと がすぐにわかります。
  77. 77. 77 CodeZine Academy 誤差関数の計算 ■ n 番目のデータ  の正解ラベルは、次の 1-of-K ベクトルで与えられます。 - 正解を k として、k 番目の要素  のみが 1 になっています。 ■ 今のモデルでこのデータが得られる確率は    なので、全データが得ら れる確率は次式になります。 ■ 次式で誤算関数 E を定義すると、「確率 P 最大 ⇔ 誤差関数 E 最小」が成り 立ちます。 正解 k の所のみ1になる
  78. 78. 78 CodeZine Academy ソフトマックス関数による画像分類 ■ たとえば、28x28ピクセルのグレイスケール画像は、各ピクセルの値を一列 にならべると、784次元空間の点とみなすことができます。 ■ 大量の画像データを784次元空間にばらまくと、類似画像は互いに近くに集 まると考えられないでしょうか? - ソフトマックス関数で784次元空間を分割することで、画像を分類できるかも知れま せん。
  79. 79. 79 CodeZine Academy ソフトマックス関数による画像分類 ■ 実行結果を見ると、「ピクセルの配置」のみを特徴 量とした分類には限界があることがわかります。 ■ 一般には、画像フィルターで事前に特徴量を抽出し た後に、線形多項分類器に入力するなどの手法が用 いられます。 - CNN(畳み込みニューラルネットワーク)では、画像 フィルターそのものを学習対象のパラメーターとして学 習処理を行います。 正解例    不正解例 学習済みのフィルターを適用した画像の例 (1枚の画像から64種類の画像を生成)
  80. 80. 80 CodeZine Academy 第4部 教師なし学習
  81. 81. 81 CodeZine Academy k平均法によるクラスタリング
  82. 82. 82 CodeZine Academy 教師なし学習モデル ■ パーセプトロンやロジスティック回帰では、事前に分類された「トレーニング セット」を元にして、未知のデータを分類する「ルール」を決定しました。 ■ 一方、下図のように、もともと分類されていないデータが与えられたとして、 これを「自然なグループ」に分類することができるでしょうか? - この例の場合は「心の目」で分類することもできますが、平面にプロットできない(3 次元以上の)データの場合は、機械的に分類する手法が望まれます。 ■ 一般に「分類指標」が事前に与えられ ていないデータを用いた機械学習を 「教師なし学習」と呼びます。 - この例は、教師なし学習の中でも、「ク ラスタリング」と呼ばれる問題です。
  83. 83. 83 CodeZine Academy k平均法によるクラスタリング ■ 比較的シンプルなクラスタリングのアルゴリズムに「k平均法」があります。 事前にグループ数を「k 個」と特定して分類します。 ■ 次のようなアルゴリズムです。 - (1) k個の「代表点」をランダムに選びます。 - (2) データに含まれる各点を「もっとも近い代表点」のグループに属するものとして、 k個のグループに分類します。 - (3) それぞれのグループの重心(座標の 平均値)を各グループの新たな「代表 点」とします。 - (4) 新たな代表点を用いて、(2) の処理 を行います。 - これを何度も繰り返すと、「代表点」 と「グループの重心」が一致して、代 表点が変化しなくなるので、それを最 終的なグループ分けとします。
  84. 84. 84 CodeZine Academy k平均法の数学的根拠 ■ k平均法のアルゴリズムは、次のように理解することができます。 ■ まず、次の記号を定義します。 - 分類するデータ群をベクトル表記で     とします。 - 各点が属するグループ       を次の記号で示します。 - グループ k の代表点を  とします。 ■ 各点について、属するグループの代表点からの距離(の2乗)を合計します。 - 「J の値が小さい方がより適切なグループ分け(および代表点のとり方)である」とし て、J が小さくなるように   と  を修正していきます。    がグループ k に属する場合       それ以外
  85. 85. 85 CodeZine Academy k平均法の数学的根拠 ■ (1)  の修正 - 各点  について、     が最も小さいグループを選択するように  を修正し ます。この操作で、J が大きくなることはあり得ません。 ■ (2)  の修正 - J は、 の2次関数で下に凸なので、微係数が 0 という条件で(与えられた   の下で)最小化されます。       より、 - これは、各グループの重心に他なりません。この操作で、J が大きくなることはあり得 ません。 ■ (1) (2)を繰り返すと、有限回の繰り返しの後に、J は極小値に達します。 - 各点をグループ分けする方法は有限通りである事に注意します。J は減少を続けるので 同じ配置に戻ることはありません。
  86. 86. 86 CodeZine Academy k平均法による「画像の減色処理」の選択 ■ k平均法を用いて、「画像の減色処理」を行うことができます。 ■ 画像データに対して、次のように、k平均法を適用します。 - 画像ファイルの各ピクセルの色を (R, G, B) 表記したものを3次元ベクトルの集合と見 なします。k 個の代表点を選択する処理は、k 個の「代表色」を選択していると考えら れます。 - 代表色が決定された後に、各ピクセルの色をそれが属するグループの代表色に置き換 えることで、画像の減色処理を行います。
  87. 87. 87 CodeZine Academy カラー写真における色の分布の例 ■ 下図は、カラー写真画像のそれぞれのピクセルを「RGB値のベクトル空間」に 配置した例です。
  88. 88. 88 CodeZine Academy k平均法による「代表色」の選択 ■ オリジナルの画像(左)を k = 3 で変換すると右図になります。 - 各グループの「平均値」として代表色が決まるため、ピクセル数の多い色が代表色と して選ばれやすくなります。この例では、「赤」「白」「緑」が代表色になっている ことが分かります。
  89. 89. 89 CodeZine Academy 混合分布とEM法によるクラスタリング
  90. 90. 90 CodeZine Academy 「手書き文字」の自動分類 ■ 図のような多数の「手書き数字」(モノクロ2階調)のデータが与えられた際 に、これらを自動的に分類する方法を考えます。 ■ k平均法で「代表点」を決定したものと同じ考え方で、それぞれの手書き数字 を代表する「手書き文字生成器」を用意することで分類を実施します。
  91. 91. 91 CodeZine Academy 「手書き文字生成器」の最尤推定 手書き文字生成器 生成されたサンプル ■ 次のような架空の「手書き文字生成器」を想定します。 - 図の「Master」は 0, 1(白, 黒)のピクセルからなるビットマップ画像をランダムに 生成します。色の濃い所ほど、「1(黒)」になる確率が高くなります。 - この生成器から多数のビットマップ画像を生成することで、不規則な手書き風文字を 生成することができます。 ■ 一方、多数の手書き文字のトレーニングセットが与えられた際に、これらを生 成する「Master」を逆に計算で求めることができます。 - K 種類の文字がまざっている場合は、K 種類の生成器が背後にあると仮定して、これ らが「トレーニングセットと同じサンプルを発生する確率 P」を考えます。 - さまざまな「生成器のセット」中で、P を最大にするセットを探し出します。つま り、P に対する最尤推定を実施します。 Master
  92. 92. 92 CodeZine Academy EM法による混合分布の最尤推定 ■ 「生成器のセット」は、次のような考え方で決定します。 - K 個の生成器とそれぞれの生成器を選択する確率     を想定します。 - 新しい文字を生成するときは、確率     に基づいて生成器を1つ選択して、その 生成器から文字を生成します。 - 「上記の操作を600回繰り返した時に、トレーニングセットと同じ600文字が得られる 確率」を考えて、これを最大にする生成器と確率     を求めます。 - ランダムに用意した生成器を「EM法」と呼ばれるアルゴリズムで修正していくこと で、上記の確率を最大化(厳密には極大化)する生成器が得られます。 ■ ビットマップの生成器は、統計学 的には、各ピクセルの「0,1」を 乱数で決める「ベルヌーイ分布」 に分類されます。 - 特にこの例は、K 個のベルヌーイ分 布を混ぜた「混合ベルヌーイ分布」 になります。 生成器がEM法でアップデートされる様子
  93. 93. 93 CodeZine Academy EM法の直感的な説明 ■ 最初の「生成器」はランダムに作成します。 ■ トレーニングセットの各画像について、現在の生成器と類似度(生成器から得られる確 率)を計算して、類似度に比例した割合で画像を合成して、それを新たな「生成器」と します。 ■ これを繰り返すことで、それぞれの生成器は、特定の文字の画像に近づいていきます。 現在の生成器 次に得られる生成器 現在の生成器との 類似度の割合で合成する ・・・ ・・・ ・・・ トレーニングセット の画像データ
  94. 94. 94 CodeZine Academy EM法のアルゴリズム ■ ドット数 D のビットマップ画像において、各ピクセルが1(黒)になる確率を 並べたベクトルを          、生成される画像のピクセル(0, 1) を並べたベクトルを          として、このような画像が得られる 確率は次になります。 ■ この記法を用いると、K 個の生成器は、K 個の確率ベクトル     で表現 されます。同じく、トレーニングセットとなる N 個の画像は、ピクセルを並べ たベクトル      で表現されます。 ■ この時、トレーニングセットと同じものが 生成される確率は次式になります。
  95. 95. 95 CodeZine Academy EM法のアルゴリズム ■ それぞれの生成器を選択する確率を     とした時、画像  が生成器   から得られる確率は次式になります。 ■ ランダムに決定した       を用いて   を計算した後、新しい         を次式で再計算します。 ■ この計算を繰り返すと、前ページの P を極大化する       が得られる ことが証明されます。
  96. 96. 96 CodeZine Academy 手書き文字の学習例 ■ 図は、実際の機械学習で得られた「生成器」のセットです。 - 「3」「6」「0」の手書き文字を600個集めたサンプルを使って学習しています。 - 右上の「0」は誤判定されていますが、これは、左下の「0」の生成器は横幅が広く、 細長い「0」を生成する確率が低いためです。(確率的には、左上の「3」の生成器か らの方が生成されやすいと判定されています。) 学習で得られた 生成器のセット 左の生成器から発生する確率が 最も高いと判定された実際の手書き文字
  97. 97. 97 CodeZine Academy 手書き文字の学習例 ■ 先ほどと同じサンプルを K = 4 で学習すると、図の結果が得られます。 - 「真円の0」と「縦長の0」に対応する別々の生成器が得られました。これは、手書き の「0」は、潜在的に「真円の0」と「縦長の0」の2種類に分類されると解釈すること ができます。 2種類の「0」が 区別されている。
  98. 98. 98 CodeZine Academy 参考資料
  99. 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
  100. 100. 100 CodeZine Academy メモとしてお使いください
  101. 101. CodeZine Academy Thank You!

×