LoginSignup
1
2

More than 5 years have passed since last update.

Amazon Machine Learning でおすすめ商品リスト機能を実装しようとして断念した

Last updated at Posted at 2017-12-14

結論

高すぎた。:moneybag:

実装したかった機能

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セットとする
2. 商品を買わなかったという正解+ユーザーの情報+商品の情報を1セットとする
3. 1.2.のデータを大量に用意し、学習させる
4. ユーザーの情報+商品の情報を1セットとして、予測させる
5. ユーザ✖️商品ごとに購入期待値(最大値1、最低値0)が返ってくる
6. ユーザーごとに期待値降順で5.のデータを並べて、上位n件の商品を表示する!

1.のデータは商品購入履歴としてシステム上に持っていたが、2.は持っていない。仕方がないから品切れ商品✖️その商品買っていないユーザーで適当に作った。

実装結果

ダメダメだったー:poop:

  • どのユーザーでも上位に上がってくる商品がある
  • 購入商品が全然違うユーザー同士でも、結果が似かよる

まぁ、これは学習させるデータを変えたり、トレーニングパラメータを変えたりしたら改善の余地はあるのではないか、と思っている。
そんなことより以下のコストの面が問題だ。

予測コスト(おかね)

今回のやり方の場合、商品✖️ユーザーごとに購入期待値を予測させるので、全購入可能商品と全ユーザーを掛け合わせた数のデータを用意し全て予測させることになる。

今回のサイトの場合、

  • 購入可能商品点数が約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万円
  • しかもこれはある時点でのおすすめ結果を生成するに過ぎない。 新入荷商品はおすすめされないし、新規会員にも何もおすすめすることはできない。 新たな購入履歴をおすすめ一覧に反映することもできない。
  • ・・ので、定期的に予測し直させる必要がある。一日一回再予測させるとすると・・ :skull::skull::skull:

というわけで

他の方法を模索中です

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2