##前置き
機械学習を勉強する際に、ネットでいろんな記事を読んで、調べたりするが、そのせいか、知識がごちゃ混ぜになっている。
一旦知識の整理として、そもそも機械学習するにあたって、一般的にどういうステップを踏んでいくのかについて、一通りまとめてみました。
##参考文献
上記の内容は Francois Cholletの「Deep Learning with Python」 を参考に記事を書きました、もっと詳しく知りたい方はこちらの本を読んでください。
##処理する手順
まず処理する手順を大まかに以下の4つの部分となっている
1.課題の把握&データ収集
2.評価
3.特徴エンジニアリング
4.Overfittingへの対応
##1.課題の把握&データ収集
まず、ある課題が与えた時、以下の2点について把握する必要がある
1)入力データ(トレーニングデータ)は何になるのか?
2)その入力データに対して、どういう予測をしたいのか?
####ここで注意して欲しいのは
予測は、適切なトレーニングデータがあることを前提としている。
つまり、
例えば、あなたが映画のレビューを感情ごとに分類(予測)したい場合、トレーニングデータとして、映画のレビューとそれの感情注釈データを持っている必要がある。逆に、映画のレビューしかないと、トレーニングしても、そのレビューの感情について何が正解なのかがわからないので、利用可能なデータがあるかどうかは重要になってくる。
したがって、次の手順に移る前に、あなたは、
1)入力と出力は何か?
2)どういうデータを使って行くか
について把握している必要がある
そして、この手順では、今後の手順に向けて2つの仮説を立てていることに注意して欲しい。
1)あなたの入力を与えることによって、ちゃんと該当する出力を予測できる
2)あなたが使っているデータは十分有益であること、つまり、入出力間の関係を十分に抽出できるようなデータであること
これらの仮説は、モデルを作った後に、検証を行う。
####トレーニングデータの重要性
上述の仮説1)でも言ったように、トレーニングデータを与えることで、ちゃんと他のデータも予測できるということも仮定しているのです。
ただし、現実はその仮定通りにはうまく行かない(当然だw)
ここで説明するため一つ典型的な課題を挙げる
#####「Nonstationary Problems」
この類の問題とは、
例えば、衣類の推薦システムを実装するとしたら
もし、トレーニングの際は8月のデータを使い、最後に推薦システムを冬のデータで生成する。この場合、衣類の買い上げは季節によって一定ではないので、モデルの構築は月によって変える必要がある。
なので一ヶ月のデータだけ使って他の月を予測するのは正しくないのです!
正しいやり方として、
定期的にモデルをリトレーニングし(最近のデータでトレーニング)
あるいは、定常になっている部分を含むデータをトレーニングデータとして使う、例えば、数年分のデータを使うとか。
ここで、忘れてはいけないことは、入力する際、時間もinputとしてモデルに入れましょう!(じゃないと、意味ないです)
##続き
ステップ2の評価 についてははこれから続けて書きます