Pythonではじめる機械学習ー2章まとめ
長らく更新が空いてしまいました。
読んだ本を忘れないように、章ごとにまとめていきます。
今回はPythonではじめる機械学習の2章(教師あり学習)です。
もっと細かい部分を見たい場合は書籍を見てください。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- 作者:Andreas C. Muller,Sarah Guido
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
概要
教師あり学習
- 学習用データとして、入力データと出力データのセットを用いる
- クラス分類(classification)と、回帰(regression)に大別される
- クラス分類
あらかじめ定められた選択肢の中からクラスラベルを予測する(ex.スパムメールの判別) - 回帰
連続値を予測する(ex.年収の予測)
- クラス分類
モデルの複雑さ
教師あり機械学習アルゴリズム
- k-最近傍法(k-NN)
- 予測したいデータに近い個の学習用データポイントを参考に多数決で出力を決める
- 線形回帰
- で表される線形関数で予測を行う
- 高次元のデータセットに適する
- リッジ回帰
- Lasso
- ロジスティック回帰
- シグモイド関数()をベースに予測モデルを作成
- で表される
- 2値分類に利用される
- SVM
- ナイーブベイズクラス分類器
- 決定木
- 非常に高速で、データのスケールを考慮する必要が無い。
- 可視化が可能で説明しやすい
- 決定木を拡張させたものに以下がある。
- ランダムフォレスト
- ほとんどの単一の決定木よりも高速で、頑健で、強力
- データのスケールを考慮する必要が無いが、高次元の疎なデータには不適
- XGBoost
- ランダムフォレストよりも時間がかかるが、予測は早く、メモリ使用量も小さい
- パラメータに敏感だが、強力で、Kaggleでもよく使用される
- LightGBM
- XGBoostと同じ勾配ブースティングの一種。XGBoostよりも計算時間が短い傾向がある
- 決定木の構造が複雑になりやすく、過学習しやすい
- ニューラルネットワーク
- 非常に複雑なモデルを構築できる
- 大規模データセットに有効
- データのスケールを調整する必要があり、パラメータに敏感
後々、各アルゴリズムの詳細説明記事を書いていこうと思う。
精度比較(分類)
titanicデータセットでいくつかのアルゴリズムの精度を比較した。
実装の詳細はこちらを参照。
brskun.hatenablog.com
以下に各アルゴリズムの精度結果を示す。