ナード戦隊データマン

データサイエンスを用いて悪と戦うぞ

モデル作成までの典型的なプロセス [機械学習]

機械学習アルゴリズムを用いてモデルを作成するとき、irisのようなきれいなデータが最初からあるわけではなく、しかも汎化性能なども考慮してモデルを作成しなければなりません。ここでは、少し単純化してモデルを作成するまでのプロセスを書きます。

プロセス図

f:id:mathgeekjp:20170815165234p:plain

プロセスの説明

まず、問題そのものを理解しなければなりません。例えば、広告クリック率が一定以上の客を見つけたい場合、この率を期待利益を正にするような率として考えます。これは、ビジネス課題の理解と関係しています。

つぎに、使えるデータを特定します。多くの場合、新たなデータを収集するコストをかけずに、既存のデータを活用します。データベースを用いることが多いでしょう。

そして、データベースからデータを取得したら、そのデータを分析に適した形にしなければなりません。以下のような整形が考えられます。

  • RやSPSSからデータが正常に読み込まれるようにする。
  • 欠損値を処理する。
  • フィールド名を指定する。
  • データ型を特定する。

また、フィルターによって特徴選択する場合は、この段階でスクリーニングを行います。言い換えれば、役に立ちそうな特徴を選び出すということです。あるいは、新しい特徴を計算によって定義する場合もあります。複数の特徴を用いて一つの特徴を算出すると、フィールド数が減ります。

このようにして生まれたデータは、訓練データとテストデータに分けられます。k-fold交差検証を行う場合、k回分の訓練データとテストデータに振り分けます。

訓練データは機械学習アルゴリズムに入力されます。機械学習アルゴリズムでは、パラメータ設定を行う場合があります。(例えば、nnetのニューロン数)。訓練データは予測変数を持っているため、モデル作成時には予測変数を独立変数から除外し、対象フィールドとして定義します。

このようにして生成されたモデルは、検証のためにテストデータを入力します。これを精度分析ということがあります。高い精度で分類できていても、偶然そうなった可能性があるので、交差検証により、k回別の訓練データ・テストデータの組で行い、平均精度を算出します。

精度分析の結果、精度が低ければ別のアルゴリズムを選択するか、パラメータの設定を変えるか、問題を再度検討して別のデータを収集できないかを検討します。

ほかに必要なプロセスはないのか

まず、このプロセスは「視覚化」や「探索」といった行為が抜けています。よい特徴を選択するために、「探索的データ分析(EDA)」を行ったり、生成されたモデルを人間の目から評価するためにレポートやグラフを出力します。

また、ここではモデル作成が目的となっていますが、モデルではなく、予測結果を出力することが目的となる場合や、モデルをシステムに組み込むことが目的となる場合もあるでしょう。

ちなみに

データマイニングの標準プロセスとしてCRISP-DMが知られています。

f:id:mathgeekjp:20170815171128p:plain

CRISP-DMはより抽象的な全体像を示しています。

参考

  1. The Data Science Process, Rediscovered
  2. docs.microsoft.com

3.Cross Industry Standard Process for Data Mining - Wikipedia