Menu

レコメンデーションシステムの作り方

2018-10-20 - レコメンド

レコメンデーションシステムとcosine

レコメンドシステムを作るに当たってのベースとしては、
「ある二つのもののコサイン類似度が高い」
ということがベースとしては活用される。


ユーザーの投票を活用したレコメンデーションシステムの構築の仕方

ユーザーと作品の評価点matrixテーブルを作る

あるユーザーに対して、
各ユーザーの類似度を作る
類似度順に並び替えて類似度が高いユーザー一覧を作る
各作品の評価傾向の平均類似度を計算する
見評価作品のうち平均類似度が高い作品をレコメンドする


次元削減

特異値分解  sklearn.decomposition.TruncatedSVD

実装実際例設計

データ設計

ユーザーTable: user_id
作品Table: work_id, jp_title
評価ポイントTable: user_id, work_id, evaluation_point


システム設計

現システムの状況

Webサービス
– Webサーバ
– SQL DB

解析サービス
– 解析サーバまたはリソース
– 安価なデータストレージ

現システムの状況
– AWS Linux
– mod_perl
– ユーザーデータはテキスト
– 評価データもテキスト
– 作品情報もテキスト

現システムの課題
– Webフレームワークを使っていない
– 利用ユーザーが減っているperlで作られている
– AWSはコストが高い
– アプリとDBが分離していない

将来の向かうべき方向性

– より安価なシステム
– micro service & SPA & サーバレス

分析の為のデータ整備

綺麗にしようと思えば限りなくできるが、最低限の整備でできる範囲でまず始める

ユーザー一覧

テキストからデータを取得する

作品一覧

テキストからデータを取得する

評価一覧

データベースに入れおく。
評価が投稿されたら入る。
評価が消されたら消される。
評価が更新されたら更新される。

データベースとしては
– Vultrに新たに作るインスタンス上に構築するpostgres
– Conohaのmysql
– AWSのAurora
のいずれかを選択する