謎解き音ゲーマーのメモ

趣味に絡めて学んだ内容を記録するメモ帳

【読書ノート】やさしく学ぶ機械学習を理解するための数学のきほん

機械学習に興味を持っているが、きちんと学習した経験がなかったため、
機械学習の入門書の1つとして紹介されていた、本書を手に取りました。
『やさしく学ぶ 機械学習を理解するための数学のきほん アヤノ&ミオと一緒に少しずつ学ぶ 機械学習の理論と数学、実装まで』

やさしく学ぶ 機械学習を理解するための数学のきほん | マイナビブックス

  先日一通り読み終えたため、記録として本書の感想と自分のメモを記しておこうと思います。

本書の構成

全5章構成
1章は導入として、機械学習の基本的な紹介
2章では回帰問題、3章では分類問題を題材として、具体的なアルゴリズムの紹介
4章はモデルの評価について
5章で、2~4章の内容を実際にpythonを用いて実装する
という内容になっています。

読了時間

およそ10時間(4日かけて読みました)

1~4章までは、2日間で一気に読み終えました。
軽くメモを取りながら6時間程度だったと思います。

5章では、ソースコードを見ながら、実際に自分も実装・動作させながら2日かけて読みました。
5章だけで4時間かからない程度だったと思います。
Anacondaにデフォルトで入っているライブラリのみで動かせたので、このために環境を構築する必要はありませんでした。

感想

とても読みやすかったというのが一番の感想です。
2人の会話形式になっていて、文章量が多くないのですらすら読めました。

内容も、今まで機械学習にあまり触れたことがない人向けで、理解に苦労したところはあまりありませんでした。
理系として高校数学を学んでいた人であれば、数学面でも特に理解に苦しむことはないと思います。
(私も微分の計算から離れて久しいですが、思い出しながら読み進められました)

いきなり機械学習の分厚い本を読むのに抵抗がある人が、初めの一歩を踏むのにちょうどよいと思います。

読書メモ

私が本書を読みながらメモした内容です。
あくまで私のメモで、本書からコピペしたものではないので、間違っている点などがあるかもしれませんので、
内容の参考程度としてください。

2章 回帰

手順は、予測のための関数f(x)を定義して、そのパラメータθを学習データから求める

・用語
パラメータθ:未知数、推定数、求めていく値
目的関数:出力を最大/最小にしたい関数 これを果たすのを最適化問題という
学習率η:最急降下法の場合は、次のxの更新度合が決まる
ミニバッチ法:100個の学習データから一部抜き出した集合作ってパラメータの更新を繰り返すやり方

・最小二乗法
各学習データごとの誤差の和

最急降下法、勾配降下法
パラメータに対して微分を用いて更新式を求める。傾きを見てどちらに近づけるかを判断する
欠点として、全学習データで計算するため計算量が多くて遅い、局所解につかまる

多項式回帰
回帰関数の次数を増やすとよりフィットする、が過学習が発生するリスクも上がる
結局パラメータごとに更新式を求めるだけ

・重回帰
入力(変数)xをn個に->xをベクトルに

確率的勾配降下法
勾配降下法でパラメータ更新式ですべての誤差でやってたのを
1つor数個を毎回ランダムに選んで更新する

3章 分類

分類の目的は境界線(決定境界)を見つけること
実際は重みベクトルを学習によって見つけて、その法線ベクトル(重みベクトルに垂直な線)が境界線となる

そのほかの分類アルゴリズムSVMサポートベクタマシン
二値分類だけでなく多値分類も

・用語
識別関数:入力からラベルを出力する関数
ラベルの定義:更新式が単純になるようにきめてよい

パーセプトロン (単層パーセプトロン
複数の入力に対し重みをかけて総和を出力するモデル->ベクトル(入力と重み)同士の内積になる
重みベクトルの更新式がでる。ただのベクトル加算
欠点として、線形分離可能な問題しかとけない

・ロジスティック回帰
識別関数として、シグモイド関数を使用
シグモイド関数によって分類結果を確率として考えて決定
境界を定めるアルゴリズム
目的関数は、尤度関数L これを最大にするパラメータを探す
線形分離不可能な時の場合は、入力xの次数を増やしたθxを用いる

・対数尤度関数
尤度関数のままだと、数が小さくなりプログラム上の精度に課題、掛け算が計算しずらいなどのため、対数をとる

4章 評価

・交差検証
学習用とテスト用に分割するやり方。K分割交差検証はK分割してK-1が学習用、テスト用1を変えて繰り返す
回帰の場合は、テストデータに対して、平均二乗誤差(MSE)が少なければいい
分類の場合は、精度:Accuracyだけではだめ。
 適合率:Precision 決定境界の片方の領域だけ注目して評価
 再現率:Recall 片方のデータだけ注目して評価
これらの総合評価としてF値:Fmeasure どちらかが極端に低いと極端に低く出るような値 重みをつけないのがF1値で数学的には調和平均

正則化
過学習の対策の1つ
目的関数に正則化項を加える方法、パラメータが大きくなりすぎないようにする働き
目的関数に加えるので、そこから微分して求める更新式も変わる

・学習曲線
データの個数と精度の関係をプロットしたグラフ
未学習状態:ハイバイアス データ個数を増やすと学習用データでの精度が下がっていき上がらないテスト用データの精度に近づく状態
過学習状態:ハイバリアンス データ個数を増やしても学習用データの精度が高いまま、テスト用データの精度が上がらない状態