機械学習を学ぶ 基礎編

Pythonで機械学習を学ぶために基礎を整理します。とにかくシンプルに、言葉を並べながら整理して、ゆくゆく書く記事とリンクさせていきます。

機械学習の概要

機械学習には、教師あり学習、教師なし学習、強化学習などがある。

  • 教師あり学習:説明変数から目的変数を予測するモデルを構築
  • 教師なし学習:訓練データそのものに着目し、パターンや示唆を発見
  • 強化学習:行動と結果に対する報酬によって、実現したい行動ルールを獲得

※機械学習の前に基本統計量や散布図を作成しデータ分析を行うべき

教師あり学習

目的変数(正解データ、従属変数)を説明するための変数を説明変数(特徴量、予測変数)と呼ぶ。y=f(x)はyが目的変数、xが説明変数。f(x)はモデル。

回帰(目的変数が数値)と分類(カテゴリに分類する)に分けられる。

アルゴリズムには、重回帰ロジスティック回帰k近傍法決定木SVMニューラルネットワーク、ランダムフォレスト、勾配ブースティングなどがある。

主な流れ

  1. モデル構築のためのクラスのインスタンス化
  2. データを説明変数と目的変数に分ける
  3. 訓練データとテストデータに分ける
  4. モデルの学習
  5. モデルの汎化性能の確認

説明変数を統計的に選択する方法として、変数増加法、変数減少法、ステップワイズ法などがある。また、選択の基準にRMSE、AIC(赤池情報量規準)、BIC(ベイズ情報量規準)などがある。

教師なし学習

多数のデータを類似のグループに分けるクラスタリング(探索的なデータ分析)が代表的な手法(k-means法など)。主成分分析、マーケットバスケット分析などがある。

強化学習

環境におけるエージェントの行動の結果を評価し、望ましい結果には高い報酬、望ましくない結果には低い報酬を与える。アプローチには動的計画法、モンテカルロ法、TD学習などがある。

Python モデルの評価・精度を上げる

機械学習ではモデルの選定、ハイパーパラメータ、データの量・質によって、精度が大きく変わります。正しい精度の測定法とチューニング方法(グリッドサーチなど)を確認します。

主なアプローチ

特徴量の扱い

学習不足の場合、特徴量を増やせないか、データを水増しできないかなどを試す。

過学習の場合、特徴量を次元削減を行う。特徴選択(特徴量のサブセットを選択する)、特徴抽出(PCAなどを行う)の2種類がある。(モデルの解釈を優先する場合、基本的に特徴選択を選ぶ)

モデルの種類を整理する

プロファイリングモデルは、説明変数と目的変数で、同じ期間のデータで生成するモデル。

予測モデルは、説明変数と目的変数で、別の期間のデータで生成するモデル。

より実践的な内容に向け、ファイナス機械学習の読書記録もまとめています。