Kaggleのチュートリアルから見る機械学習のフロー

今回の記事を書くにあたって、こちらの記事を参考にしました。

良くまとまっていて面白い記事なのでぜひ参考に!

このチュートリアルをやってみた感想を上記のように呟きました。ツイート通り、

1. データ把握
2. データ修正
3. 特徴量抽出
4. モデル適用
5. データ出力

というようになっていそうなのでそれぞれ見ていきます。

1. データ把握

こちらはどういうデータを扱っているかということを考えるフェーズになります。定性・定量データか連続・離散なのか。
また、このタイミングで予想すべき問題の性質も考えられるかと思います。
ざっくり、連続か非連続か。今回は教師あり学習だけに特化して考えるとその2つになり、前者の場合は回帰、後者の場合はクラス分類として進めることができます。

また、データの把握はそれ以外にも、ヒストグラムや統計データを使うことでも性質を把握することができます。

2. データ修正

記事中にもありますが、大抵のデータは完璧に揃っていることが多くありません。そのため、データを保管したり、クラスであれば数字を割り当てるなどのことが必要です。記事の例にはありませんでしたが、One-hot-vectorの形にするケースもあります。
(例 : C, Q, Sをそれぞれ[1 0 0], [0 1 0], [0 0 1]のベクトルで表す)

3. 特徴量抽出

どの特徴量を使って予測をするかを考えるフェーズです。
より予測すべきものと相関がありそうなのを選ぶべきかとは思いますが、個人的にはチューニングして特徴量を掴んでいくやり方が良いかと思います。

また、教師なし学習の場合は、2次元に変換するPCAの作業も必要です。

4. モデル適用

ここで、どのようなアルゴリズム・手法を使ってモデルを作っていくかを決めて、実装します。記事では決定木を使っていましたが、SVMを使って試してみました。(結果は記事に勝てずで、少し悔しい気持ちがあります)
先にも説明しましたが、解決したい問題によりどのような手法を使うかが分かれます。ざっくり、回帰・クラス分類に分かれます。

5. データ出力

こちらは確認する人がどういう形で評価したいかによっても変わります。
Kaggleの場合は最終的にどういう形でアップロードすべきかが書かれているのでそれに従いますが、実際はそういうのもないので評価方法から考える必要があります。


チュートリアルの記事を参考に一般的な機械学習のフローをまとめました。
他にもフローの中で重要なものがあればご指摘いただければと思います。

旅行が好きでそれに関わる事業を行なっています。写真のレベルをもっとあげたい!