機械学習 ロジスティック回帰モデル 講義課題視聴レポート (現場で潰しが効くディープラーニング講座)

### ロジスティック回帰モデル
##### 分類問題
- 入力された数値から、そのデータが所属するクラスを分類する問題
- 入力としてm次元のベクトルを使い、0か1(そのクラスに所属するかどうか)を出力する。
    - 例)タイタニックデータ
        - 入力：乗客のデータ(年齢、性別、社会階級)
        - 出力：1または0(その乗客が生存したか否か)
- 分類問題を解くモデルの1つとしてロジスティック回帰モデルがある。

##### ロジスティック回帰モデル
- 入力した数値とパラメータの線形結合(線形回帰と同様)をシグモイド関数(後述)の入力とする。
- 入力されたデータに対し、そのクラスに所属する確率が出力される。

##### シグモイド関数
- 出力が必ず0以上1以下となる関数
![無題8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/c5bc25e1-2f5e-8069-737f-0f8c965622c0.png)

- シグモイド関数の微分はシグモイド関数で表現することができる
![無題9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/89a1b9d5-1fd0-e364-498d-5f1663a2e5de.png)

- シグモイド関数の出力値が0.5以上であればクラスに所属する、それ以下であればクラスに所属しないと判断される。

##### 最尤推定
- 尤度とはあるデータを得たときに、分布のパラメータがどの程度ありえそうか(尤もらしいか)を表現したもの。そして最も適切な尤度を求めることを最尤推定という。
    - 例)表の出る確率が50％ではないコインでコイントスを行った結果、表が4回裏が1回出た。このコインの表が出る確率は？
        - コイントスを行って得たデータをもとに、コインが表になる確率を最尤推定を使って求める問題。
- パラメータθに従う確率分布の密度関数を、確率変数xを定数、θを変数として置き換えた関数を尤度関数と呼ぶ。この尤度関数を最大化するθを求めることで最尤推定を行う。
![無題10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/71bc2f08-51d5-6fe6-ce2f-cd6b305af508.png)

- 各学習データの分類に関しての同時確率を最大化させるパラメータを推定パラメータとする。
![無題11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/402c9ae5-6b8c-fa3d-51b5-d63d26af44cd.png)

- 尤度関数をそのままの形で最大化しようとすると、0以上1以下の掛け算の連続となり値が小さくなり続ける、などのもんだいが発生する。そのため対数尤度関数の最大化を行う方法をとる。(対数関数は値が無限に増加し続ける単調増加関数なので、尤度関数の最大化と対数尤度関数の最大化は同じように考えることができる。)さらに平均二乗誤差の最小化と同じように考えるため、対数尤度関数にマイナスをかけて最小化問題として解くのが一般的。
![無題12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/9e707574-29fb-f72b-30d2-f58621e348cc.png)


##### 勾配降下法
- 平均二乗誤差の微分が0になる値は解析で求めることができるが、対数尤度関数の微分が0になる値を解析的に求めることは困難。そこで勾配降下法を使う。
- 勾配降下法とは反復学習によりパラメータを少しづつ最適な方向に近づけるアプローチである。現在のパラメータから尤度関数の微分と学習率の積を引いた値を新しいパラメータとする。
- 学習率はパラメータの収束のしやすさを調整するもの
![無題13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/389a2756-2fd0-cc5a-5209-3cd0603ba35a.png)
![無題14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/71064aff-48e8-bad6-a638-6114ce7636f6.png)

- 勾配降下法はパラメータを更新するために学習データすべてのデータに対する和を求める必要がある。そのためデータ数が多くなるとメモリ不足や計算時間の増加などの問題が発生する。この問題を解決する方法として確率的勾配降下法がある。

#####確率的勾配降下法(SGD)
- 通常の勾配降下法と違いデータを1つずつランダムに選びパラメータを更新する。
- 勾配降下法と比べパラメータ更新に必要な計算量が少ないので、効率的に最適なパラメータを求めることができる。
- 欠点として外れ値の影響を受けやすいという点がある。

##### エポック
- すべての学習データで1回づつパラメータを更新するだけで学習が終わることは稀である。そのためすべての学習データに対し複数回学習する必要がある。このとき学習データの数に対する学習回数をエポックと呼ぶ。エポックごとに学習データをシャッフルして学習の偏りを減らしたり、エポックごとの予測精度を比較することで過学習や未学習の判断ができる。

##### ミニバッチ勾配降下法
- 学習データをm個ずつの塊(ミニバッチ)にわけて学習を行う方法。
- 確率的勾配降下法の欠点を補うことができる、確率的勾配降下法より計算に必要な資源を有効活用できるなどの利点がある。
- ミニバッチのサイズを1にすると確率的勾配降下法と同等となる。

##### 混同行列
- テスト用のデータ(正しい結果)とモデルの予測結果をマトリックスで表したもの。
    - 例)タイタニックデータ

|  | 正解:生存 | 正解:死亡 |
|:-:|:-:|:-:|
| 予測結果:生存  | True Positive  | False Positive  |
| 予測結果:死亡  | True Negative  | False Negative  |

- 正解率
     - 正解した数と予測した全テストデータ数の割合
     - テストデータに偏りがある場合は意味をなさない指標となる場合が多い。そのため適合率と再現率という指標を使う場合が多い。
            - 例)スパムメールの分類で80％がスパムメールで20％が通常のメールだった場合、すべてのメールをスパムメールだと判断するモデルの正解率は80％となってしまう。
- 適合率
      - 見逃しが多くてもより正確な予測をしたい場合に高めるとよい指標。
          - 例)通常のメールをスパムメールと判断されると困る場合は適合率を高めて、確実にスパムメールだと判断できるものだけを分類するようにする。
- 再現率
      - 誤りが多少多くても抜け漏れを少なくしたい場合重視する指標。
            - 例)命に関わる重大な病気の検診の場合、見逃す確率をなるべく減らすため再現率を高める。
- F値
      - 適合率と再現率はトレードオフの関係にある。どちらもバランスよく高める場合F値を用いる。適合率と再現率の調和平均で表す。
![無題15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/a9ccc0f3-b175-0166-1242-c4896081be2f.png)
##### ハンズオン
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/b8c9d246-42f6-2801-b7e7-2718a931be12.png)
![無題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/0d775f84-d7ae-97a1-138f-81a8646add8b.png)
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/5bd122b9-ebc0-5e27-91bd-711f328dcb74.png)
![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/e76f0552-42fd-8ca3-d16f-7eba16175a0b.png)
![無題4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/ad9217c7-a116-dc19-6396-a2a24d4c60e8.png)
![無題5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/20ffb4ac-1e74-dee8-2d70-4a0b6b66b6a9.png)
![無題6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/ee4dee8b-aef4-d76e-318f-cbb99758505d.png)
![無題7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/ef20c32b-2dfe-bc18-a2e9-735a500f31e7.png)
![無題8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/35533315-a198-031b-9f9c-ce4f01584611.png)
![無題9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/b8fa50e9-93a1-df9f-0180-6ff2f02fe25a.png)
![無題10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/089421aa-7c0f-0e26-caad-c7104619dce1.png)
![無題11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/b2181271-61c5-6e79-898e-321c142954ae.png)
![無題12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/85498442-35ed-b381-25c9-8cc6c365627d.png)
![無題13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/e1e5a6b4-41a3-be98-4104-5474bfb72848.png)
![無題14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/d190f473-d2e7-7476-d0e2-602d5e2978ab.png)
![無題15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/4af32f77-10f9-45c0-d2e0-df1cf78e9649.png)
![無題16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/66d9e5ce-cb8c-749b-1129-5eb4d8945164.png)
![無題17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/64c7651e-61cd-2dfa-d227-8769a06ef715.png)
![無題18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/140c6548-dbe4-c0b8-f092-45e3795df280.png)
![無題19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/178ff4d4-c135-41f8-5669-802912235cdc.png)
![無題20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/b9e0745e-6b2e-53e2-a1f1-386a3aed077f.png)
![無題21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/a63c6dce-7659-6e6e-27ec-fc0f76431914.png)
![無題22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/87b76a27-74cc-3905-345f-314a05ad03da.png)
![無題23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/0b114ced-e0d1-d30f-d081-76d5b2fdc9f9.png)
![無題24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440745/4edf45f8-35c7-1d94-4124-96d0ce88672f.png)

##### サマリーと考察
- まず初めに不要なカラムの削除、nullを中央値で埋める
- 次にチケットの価格だけで生死の予測モデルを作成
- その後、性別と階級をもとにモデルを作成
- 2つのモデルをクロスバリデーションで評価し、後者のモデルのほうが精度が高いことが判明
- 今回は年齢のnull値を中央値で埋めたが、機械学習モデルを使って適切な年齢を埋める方法もあると考えられる。
- 54行目のカテゴリーごとの生存率をみると同乗している人数によって生存率が変わるようなので、SibSpやParchを使うことでより精度が高くなると考える。

[次へ(主成分分析)](https://qiita.com/yuma-k105/items/ea2314b3e057b2c77e0b)