Amazon Machine Learningを入門しようとしているが、機械学習が初めてでチュートリアルやっただけではよく分からなかったので、とりあえず何が出来るか、また始める前にどのようなことを知っておけばよいのかをまとめてみる。
Amazon Machine Learningで出来ること
Amazon Machine Learning(以下ML)を使うと、これまでに貯めてきた様々なデータ(顧客データやユーザの行動データ)から、機械学習によりもっと精密にビジネス的な意思決定を行うことができるようになる。
ML内部では数学・統計的なアルゴリズムにより過去データを学習し、インプットデータに対し将来的な予測を立てる。
例えば、「こんな属性のユーザは将来的にこの商品を買う/買わない」や「来月のこの商品の売上予定は?」など
MLで使用できるモデル
MLではいくつかの分析モデルがあり、用途に応じて適切なものを選んで構築するようになる。
具体的には以下のようなもの。
またそれぞれに対応した予測アルゴリズムがあるが、実際に使う分では知らなくても問題なさそう。時間があればそれぞれのアルゴリズムについても調べてまとめてみようと思う。
Binary Classification(二項分類)
その名の通り、2値で表現できるもの。
ex). このユーザは商品を"買う"or"買わない"、このメールはスパムで"ある"or"ない"、このユーザは"ボット"or"人間"
予測アルゴリズムはロジスティック回帰分析
Multiclass Classification(多項分類)
カテゴリ分けのようなもの。本のカテゴリや映画のカテゴリなど。
予測アルゴリズムは多項ロジスティック回帰分析
Regression Classification(回帰)
過去データの傾向から将来の数値を予測する。
ex). この商品の、来月の売上は?など
予測アルゴリズムは回帰分析
MLを使いはじめる前に
INPUT/OUTPUTの整理
保有している膨大なデータから、何をINPUT(Datasource)とし、どのようなデータをOUTPUT(予測)したいかを整理する。その際に、OUTPUTが上述のどのようなモデルになるかを決めておく必要がある。
また基本的に、MLでデータを学習させる場合はcsvになり、1カラムに対し1ラベルが必要になる。
Datasourceを学習用と評価用に分ける
これは実際にMLで作業している過程で出てくるのでこの段階でする必要はないが、いきなり言われても良くわからなかったので、事前に知っておくとよい。
MLで最初にすることが、既存のデータ(csv等)をMLに入力し学習させること。しかし、いくら学習したとしても、その学習がどの程度の精度があるのかが全く分からない。
そこで、Datasourceを"学習用(Training)"と"評価用(Evaluation)"に分割し、学習した内容がどの程度精度が高いかを評価用にしたデータを使って判定する。
一般的に70:30程度の割合でやるらしい(MLもデフォルトそうなっていた)
MLを利用する流れ
実際にはもっと複雑だが、だいたい下記のような流れとなる。
- 学習用・評価用データの選定、加工など
- csvなどのデータをS3に置いて、MLから読み込み。
- データを学習用・評価用に分ける
- 70:30などに分けて予測モデルを作る
- モデルの学習
- モデルを作り終わると、MLがモデルを学習させる
- モデルのパラメータ調整
- モデルの予測精度を上げるために、調整する
- モデルの評価
- 評価ウィザードによりモデルを評価する(予測のパフォーマンスなど)
- 予測に使用する閾値の設定
- モデルを使って予測する
- 大量のデータを一括で予測する"Batch Prediction"
- モバイルやWeb等に最適な"Realtime Prediction"がある
今後の投稿予定
実際にMLを使ってみてハマったポイントや良くわからなかった部分等があればまとめてみる。
また、あまり知らなくてもML自体は進められるが折角なので統計的な側面についても時間があればまとめてみる。