この記事の目次
はじめに
機械学習が話題になっているけど、機械学習とはなんなのか。
実際に機械学習プロジェクトが始まった時に、どのように進めたらよいのか。
それらを調べるために、一冊の本を中心にまとめました。
参考書籍はこちら。
機械学習とは?
機械学習とは
入力データと出力データの関係性(モデルと呼ぶ。)を獲得し、
獲得したモデルによって未知のデータを予測出来るようになること。
もっと簡単にいうと、
過去のデータをもとに、未来のデータを予測するときに使われます。
一例としては、gmailのスパム判定や、アマゾンのレコメンド機能があります。
(「この商品を買った人はこの商品も買って(見て)います」みたいなやつ)
これらは教師あり学習というアプローチを使っています。
アプローチの種類についてはあとで少しだけ触れるとして、
この「教師あり学習」を行う上で通るべき2つのフェーズを紹介します。
教師あり学習のフェーズ
①学習フェーズ
まずは、既知のデータの入力と出力の関係性を得ます
=過去データから、関係性(モデル)を作る部分です。
②予測フェーズ
未知の入力データからモデルを通じ予測した出力を得ます
=モデルを使って未知のデータから将来データを予測します。
他のアプローチとして
・「教師なし学習」(入力データからデータの構造を獲得する)
・「強化学習」(囲碁や将棋などでどのように行動をしていくかという戦略を獲得する)
があります。
実際にプロジェクトを始めるにあたって
まず解きたい課題を機械学習で解ける問題設定に落とし込みます。(重要です)
1.問題を定式化する
まずは何を目的にするのか、解きたい問題について仮説をたて、何をすればよいのかを明確にすることが大事です。
例えば「ECサイトの売上を上げるために、ユーザーごとにおすすめ商品を提示する」とかプロジェクトの目的と解き方をセットで考える。
良くない例は、「有料会員を増やしたい」というアクションがすぐ起こせない曖昧なものです。
仮説の立て方と検証方法:参考記事 → 仮説検証とサンプルサイズの基礎
2.機械学習しなくていい方法を考える
機械学習においては入力データの傾向が変化するため、
トレンドが変化したときに、予測精度が下がったり、意図しない挙動をすることがあります。
これを防ぐためには、
定期的に新しいデータで予測モデルを更新したり、
特徴量の再検討をする必要があります。
=手間・費用が掛かり続けるということです。
それでもなお実行する場合、
どのようなビジネス上の課題に対して機械学習を利用すればよいのか。
→1.大量のデータに対して、高速に安定して判断を求める必要がある場合
→2.予測結果には、一定数の間違いが含まれることが許容できる場合
予測結果100%はあり得ないので、運用上、誤りをカバーできる仕組みが必要です。
もしこれらを満たせないのであれば、機械学習を使わない方向に検討を進めるようにしましょう。
3.システム設計を考える
システム設計を考える上で、重要な2つのポイント
①予測結果をどういう形で利用するのか(システムにどう組み込むのか)
②予測誤りをどこで吸収するのか
ここまでに目標性能と撤退ラインを決める必要があるそうです、
例えば「2か月で90%の予測性能を達成する」など。
4.アルゴリズムを選定する
採用するアルゴリズムをどうするか。
過去の類似の問題がどのように解かれているかを調べると、おおよその辺りはつけられるようです。
5.特徴量、教師データとログの設計をする
アルゴリズムの候補を見繕ったら、どういった情報が使えるか(集められるか)について設計します。
「特徴量」とは、機械学習の予測モデルに入力する情報のことです。
特徴量を決めたら、入力データとなる正解データを用意します。
(分類対象のカテゴリのことを機械学習ではクラスと呼びます)
6.前処理をする
不要情報をそぎ落とすなど、集めてきたデータを機械学習に使える形にしていきます。
現実の問題では多くの時間をここに取られます。
7.学習・パラメータチューニング
機械学習のアルゴリズムを調整するパラメータを試行錯誤しながら、よりよい結果が出るパラメータを探索します。
まずは人力で付与した正解や、ルールベースで決めた正解など、
ベースラインの予測性能を決めてそれを超えることを目指します。
最初のステップとしては、シンプルな予測モデルを作ることをゴールとしましょう。
多くの場合、データ自体にバグがあります。
そのため問題をきりわけるために
まずはシンプルな手法で一旦予測モデルを作るようにします。
はじめての予測モデルでいきなり予測性能99.9%のように高い性能が出た場合は、なにかミスがあると疑うこと。
ここでうまくいかなかった場合には4に戻って、アルゴリズムの検討からやり直します。
8.システムに組み込む
この時に気を付けるのは、
予測性能とそれに伴うビジネスインパクト(例えば商品購入のCV率など)をモニタリングすること。
当初立てたKPIが改善しているか、推移を見つつ、必要に応じて改善をする。
機械学習は、長期運用していると入力の傾向が変わります。
KPIが悪化したら5~7に立ち戻って改善を。
継続的にビジネスに貢献しているかを確認し、改善を続けます。
プロジェクトを行う上で大切なこと
・データ量がたくさんあっても、適切に前処理がされていなければ性能は出ない
・そもそも解こうと思っている課題が人間にも解けない問題の場合、機械学習で解くのも難しい
・「教師あり学習」ではなにが正解かを人間が機械に教える必要あり。
=つまり人が正解を決められない問題は機械にも解けない
大事なことは機械学習で溶ける範囲と解けない範囲を線引き出来ること、実現するために手を動かせること。
最後に
機械学習を含めたプロダクトをビジネスとして成功させる上で重要になるのは、どのようなチームか。
4者の重要な登場人物がいます。
その4者が知りたい、さらに詳しく機械学習を学びたい方はこちらから。
本日もお読みいただき、ありがとうございました。
取り急ぎ御礼申し上げます。