結論
高すぎた。
実装したかった機能
amazonとか大体のECサイトにある、いい感じにユーザーにカスタマイズされた商品リストが表示される機能。
Amazon Machine Learning とは
https://aws.amazon.com/jp/aml/
ざっくりとは
- 機械学習についての高度な知識は不要で、機械学習による予測を使えるようになる
- マネージドサービスなので学習に使うサーバのリソースについては考慮不要(AWSが裏でよしなにやってくれる)
機械学習には大別して3種類ある
教師あり学習
データと正解を合わせて学習させて、どういうデータの時にどの答えになるかを予測させる手法。
これを使えば例えば、顧客のセグメントができたりする。
教師なし学習
正解は与えずデータだけ学習させる。データに存在する特徴を見つけ、グループ分けをする。
これを使えば例えば、ニュース記事のカテゴリ分けができたりする。
データにこれといった正解がない場合に有効。
おすすめ商品リスト機能を実装する場合、この教師なし学習を利用することが多いそう。
その他
強化学習(※教師なし学習の一部だという考え方もあるそう)
Amazon Machine Learning で実現できる機械学習
現時点(2017/12)では、上記のうち教師あり学習のみがAmazon Machine Learningで実現できる機械学習です。教師なし学習は使えない。困った。
やろうと思えば教師あり学習でも実装できるらしい
Using AWS Machine Learning for Generating Recommendations
- 商品を買ったという正解+ユーザーの情報+商品の情報を1セットとする
- 商品を買わなかったという正解+ユーザーの情報+商品の情報を1セットとする
- 1.2.のデータを大量に用意し、学習させる
- ユーザーの情報+商品の情報を1セットとして、予測させる
- ユーザ✖️商品ごとに購入期待値(最大値1、最低値0)が返ってくる
- ユーザーごとに期待値降順で5.のデータを並べて、上位n件の商品を表示する!
1.のデータは商品購入履歴としてシステム上に持っていたが、2.は持っていない。仕方がないから品切れ商品✖️その商品買っていないユーザーで適当に作った。
実装結果
ダメダメだったー
- どのユーザーでも上位に上がってくる商品がある
- 購入商品が全然違うユーザー同士でも、結果が似かよる
まぁ、これは学習させるデータを変えたり、トレーニングパラメータを変えたりしたら改善の余地はあるのではないか、と思っている。
そんなことより以下のコストの面が問題だ。
予測コスト(おかね)
今回のやり方の場合、商品✖️ユーザーごとに購入期待値を予測させるので、全購入可能商品と全ユーザーを掛け合わせた数のデータを用意し全て予測させることになる。
今回のサイトの場合、
- 購入可能商品点数が約6万
- ユーザ数が約8万
- つまり、全ユーザーに対して、全商品を元にしたおすすめ商品リストを作ろうとすると、
6万✖️8万 = 48億のデータをAmazon Machine Learningに予測させることになる。 - 予測 1,000 件当たり の料金は 0.10 USD (Amazon Machine Learning の料金表)
- 48億➗ 1,000✖️ 0.10 USD = 480,000 USD
- 1USD = 110 円として概算すると 5,280万円
- しかもこれはある時点でのおすすめ結果を生成するに過ぎない。
新入荷商品はおすすめされないし、新規会員にも何もおすすめすることはできない。
新たな購入履歴をおすすめ一覧に反映することもできない。 - ・・ので、定期的に予測し直させる必要がある。一日一回再予測させるとすると・・
というわけで
他の方法を模索中です