READ ME

機械学習を学ぶにあたり

Pythonを使ってデータ分析や機械学習を学びつつ、同時にアウトプットしていこうという企画です。Pythonのライブラリとしては、表計算のPandas,数値計算のnumpy,機械学習のscikit-learn,視覚化のmatplotlib,seaborn、スクレイピングのBeautifulSoupあたりが対象です。機械学習の原理原則はまずは1冊の本から学んでいきたいと思います。

機械学習をどう解釈するか

機械学習は人工知能(AI)のサブセットである。人工知能は、いろんな定義があるだろうけど「機械によって再現されるヒトの知性」と理解しておく。サブセットにあたる機械学習は、人工知能を実現するための1つのアプローチ。機械学習の目的は「予測」に尽きる。データからパターンを発見して学習しモデル化する。未知データに遭遇したらモデルを使って「予測」する。予測が仕事なので、重要なのは精度。予測が当たるモデルがいいモデル。データからパターンを発見する点では、統計学と近い。近いけれど、違いがある。機械学習は「精度」が重要、統計学はそのパータンを「説明」が重要、と理解している。

機械学習をどう学ぶか

まずは1冊、基準となる教科書を指定します。例えば評価が高い本には『Pythonで動かして学ぶ! あたらしい機械学習の教科書』や『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』などがあります。その中から、以下に本を選びました。

日本語版 :
Python 機械学習プログラミング 達人データサイエンティストによる理論と実践

英語版 :
Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow

この領域の勉強となると英語が必須なので単語帳代わりに同時に読み進めていきます。基本的な機械学習のアルゴリズムから、ニューラルネットワーク(CNN/RNN)まで対象で、また理論や数学的背景、Pythonコーディングの実装を丁寧に解説しているので、入門編としては十分じゃないでしょうか。2016年度の米国の機械学習関連ランキング本では1位だったようです。

この本を当面の勉強の中心に据えて、分からないことは他の情報源から補足しつつ、最終章まで一旦は終わらせてみたいと思います。この本は自習ノートの位置づけですが、オンラインの環境であることから、これから機械学習を学ぶ同じ環境の方にとって多少なりとも役立てれば嬉しいです😄 他の方のレビューを読む限り、この本(に限らずでしょうが)を途中で放棄するのは、機械学習の基礎知識が無い、Pythonのライブラリへの知識がない、数学的なバックグラウンドがかけているといった理由が考えられます。そのあたりは類書を読みながら行間を埋めていこうと思います。なのでこの勉強ログは本書を辿りつつ、類書による補強が施されながら書かれていくことになります。


機械学習をどこまで学ぶか

この本(及び類書など)を通じて機械学習の基礎は学べるはずですが、それが断片的な知識にならぬよう、事前に学ぶ範囲を書き出しておきたいと思います。学びたい知識が以下で、それを本書で潰していくというスタイルです。本書はおそらく1と4がメインで、2と3は手薄だと思います。

  1. プログラミングの知識
    • Python
    • Pandas,numpy,scikit-learn,matplotlib,seaborn,TensorFlow,keras
  2. 数学の知識
    • 微分、積分、ベクトル、行列、確率
  3. 統計学の知識
    • 標準偏差、分散、確率分布、推定、検定
  4. 機械学習の知識(基礎)
    • 機械学習の種類(教師あり、教師なし、強化学習)
    • データの前処理、特徴量設計、学習と評価
    • 単回帰分析、重回帰分析、最小二乗法、パーセプトロン、ロジスティック回帰
    • 決定木、ランダムフォレスト、サポートベクターマシン、K-means
    • scikit-learn,TensoFlow,Kerasなどのフレームワークの知識
    • 特定のフレームワークのモデル構築の流れ(scikit-learnとする)
      1. データ収集と前処理(欠損値や外れ値の扱いなど)
      2. 特徴量の設計
      3. モデルの選択と学習
      4. モデルの評価(交差検定、混合行列など)