こんにちは!ぼりたそです!今回は機械学習のプロセスについてまとめてみました。機械学習をやってみたい、初めてみたけど何からやればいいの?と困っている方に向けて書いたものになります。
- データ収集
- データクレンジング
- 学習アルゴリズムの設定
- 機械に学習させる
- 精度評価
某も機械学習の勉強を初めたばかりの時は機械学習って言われても何をすればいいの?とかどうやって作るものなの?って思っていました。確かに精度のいい機械学習モデルを作るのは難しいのですが、機械学習モデルを作ること自体は大体やることが決まっています。
今回は機械学習モデルを構築するか際の手順について簡単にまとめてみましたので少しでもご参考になればと思います!
データ収集

機械学習モデル構築の際にまずやることはデータの収集になります。
機械学習はご存知の通り、データから学び予測をするわけなので、基となるデータが必要になります。なので、まずはとにかく使えそうなデータを収集して下さい。今のご時世WEB上にDBがいくらでも転がっているので、そういったオープンソースのデータを持ってくるのが一番楽かもしれませんね。
少しニッチな目的のため自分でデータを収集しなければいけないケースもあるんですけどね…
Pythonなどを使ってスクレイピングで収集するのもありですが、サイトによってはスクレイピングを禁止しているものもあるので、注意するようにしましょう。
データクレンジング

必要なデータが収集できたらお次はデータクレンジングをしましょう!
データクレンジングとは、機会がデータを読めるように学習データを加工してあげることですね。とりあえずデータは集めてみたものの、残念ながらそれが全て使えるデータであるとは限らないんですよね…
例えば、過去10年の天気のデータを集めたとして天気の表記で「晴れ」と「晴」みたいな表記が二つあったとします。我々人間からすればどちらも同じく晴れていると分かりますが、機械からすると別の天気とカウントされてしまいます。
こういった表記ブレだけではなく、欠損値(データが欠けている)ものや数値と文字が混ざっているデータなど、そのままでは機械が理解できないデータを理解できるように加工する必要があるのです。
手法としては様々あるのですが、それはまた次の機会にまとめたいと思います。
学習アルゴリズムの選定

機会が理解できるようにデータクレンジングができたら、いよいよ学習アルゴリズムを選んでいきましょう!
アルゴリズムとか横文字使うなしっ!と思った方もいるかもしません。
すみません、カッコいいから使ってみたくなりました…
アルゴリズムとは簡単に言ったら手法みたいなもので、学習アルゴリズムとはどう学習させるかという学習方法のことですね。例えば、問題と答えをひたすらに覚えさせて、問題と答えのパターンを学習させる方法があったり、逆に問題だけ与えて機械に考えさせる手法もあったりします。
正直、機械学習で一番難しいのはこのアルゴリズムの選定だと言われています。理由としてはアルゴリズムの数が多く、最も精度がいい手法を見つけるまでが大変というのがあるらしいですね。
機械に学習させる

さて、学習アルゴリズムを選んだらついに機械に学習させてみましょう!
機械に学習させるだけだからやることなくね?と思うかもしれませんが、ハイパーパラメータを設定する必要がある場合があるんですね。
また横文字かよ!って思った方、すみません…これは用語なので和文の言い換えがないんですよね。
もしあれば教えてください!
ハイパーパラメータとは学習アルゴリズムを実行する際にあらかじめ定める数値であり、学習精度にも影響してきます。なので、ハイパーパラメータの設定は非常に重要になるわけですね。
とはいったものの、今ではこのハイパーパラメータも自動で機械に設定してもらうことがほとんどなので自分で設定することはあまりないのが実情ですね。
精度評価

実際に機械に学習させたら、その学習モデルがどの程度の精度なのかを評価してみましょう!
評価方法は色々あるのですが、簡単に言うと学習済みの機械に問題を出して、機械が出した答えがどのくらいあっているかを数値化します。
この時点で学習データや学習アルゴリズムが不適切だと見当違いな答えを出してきます。その場合、データクレンジングや学習アルゴリズム選定のプロセスに戻って適切なモデルを構築できるように考えなければいけません…
運用開始

精度評価まで完了して問題なければ、いよいよ運用開始ですね!
あとは実際に予測したい条件を機械に読み込ませて答えを予測させます。さらに、その予測結果を機械に学習させればどんどん頭が良くなっていくわけですね。
その後は必要に応じてアルゴリズムを少し変えてみたり、ハイパーパラメータをいじってみたりして調整さえすれば問題ないかと思います。
いやあ、学習した分だけ賢くなっていくなんて羨ましいですよね…
某なんて勉強してもすぐ忘れるので、マジでいいなあって感じですよ。
終わりに
以上、簡単ですが機械学習のプロセスとなります。マジで簡単に説明しましたが、実際は一回で精度のいいモデルを組むのは不可能なので試行錯誤の連続になるかと思います。また、細かいプロセスは某も勉強中なので、理解できたら発信していきたいと思います!一緒に頑張っていきましょう!