View on GitHub

モデルの更新

Home

モデルの更新

評価履歴の蓄積

ブラウザで下記 URL にアクセスして、何件か映画に対して評価値を与えてください。

データのバックアップ

offline$
 mkdir -p bkup/YYYYMMDD/  # <- YYYYMMDDはバックアップ年月日
 cp -r data/ bkup/YYYYMMDD/data/
 cp -r local/ bkup/YYYYMMDD/local/

offline$ ls bkup/YYYYMMDD/data/
genres.csv  movies.csv  movies_genres.csv  ratings.csv  reclist_bpr.csv  reclist_movie_similarity.csv  reclist_popularity.csv  tags.csv  users.csv

offline$ ls bkup/YYYYMMDD/local/
keys  ml-latest-small  ml-ls.inter  ml-ls.item  ml-ls.user  ml-rdb  movies_movies_similarity_matrix.csv  rating_matrix.csv  users_.csv

データの出力

offline$
 psql recsys_full -U postgres -c "\copy (SELECT user_id, email_encrypted, email_hash FROM t_users ORDER BY user_id ASC) to 'data/users.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy (SELECT movie_id, title, year, imdb_id, tmdb_id FROM m_movies ORDER BY movie_id ASC) to 'data/movies.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy (SELECT genre_id, genre_name FROM m_genres ORDER BY genre_id ASC) to 'data/genres.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy (SELECT id, movie_id, genre_id FROM m_movies_genres ORDER BY id ASC) to 'data/movies_genres.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy (SELECT id, user_id, movie_id, rating, rated_at FROM t_users_movies_rating ORDER BY id ASC) to 'data/ratings.csv' with delimiter E'\t' csv header encoding 'UTF8'"

データの確認

offline$ ls -l data/
合計 19388
-rw-rw-r-- 1 rsl rsl      239  8月 30 12:21 genres.csv         # <-
-rw-rw-r-- 1 rsl rsl   420482  8月 30 12:21 movies.csv         # <-
-rw-rw-r-- 1 rsl rsl   394698  8月 30 12:21 movies_genres.csv  # <-
-rw-rw-r-- 1 rsl rsl 11259693  8月 30 12:21 ratings.csv        # <-
-rw-rw-r-- 1 rsl rsl  1235742  8月 29 13:47 reclist_bpr.csv
-rw-rw-r-- 1 rsl rsl  5961505  8月 29 13:46 reclist_movie_similarity.csv
-rw-rw-r-- 1 rsl rsl     6268  8月 29 13:45 reclist_popularity.csv
-rw-rw-r-- 1 rsl rsl   432136  8月 29 12:54 tags.csv
-rw-rw-r-- 1 rsl rsl   124271  8月 30 12:21 users.csv          # <-

offline$
 less data/users.csv
 less data/movies.csv
 less data/genres.csv
 less data/movies_genres.csv
 less data/ratings.csv
 less data/tags.csv

推薦システムの実行

(recsys_full) offline$ python src/update.py --ini src/offline.ini
# ...(30分程度)...

結果の確認

offline$ ls -l data/
合計 19392
-rw-rw-r-- 1 rsl rsl      239  8月 30 12:21 genres.csv
-rw-rw-r-- 1 rsl rsl   420482  8月 30 12:21 movies.csv
-rw-rw-r-- 1 rsl rsl   394698  8月 30 12:21 movies_genres.csv
-rw-rw-r-- 1 rsl rsl 11259693  8月 30 12:21 ratings.csv
-rw-rw-r-- 1 rsl rsl  1239117  8月 30 12:48 reclist_bpr.csv               # <-
-rw-rw-r-- 1 rsl rsl  5961525  8月 30 12:48 reclist_movie_similarity.csv  # <-
-rw-rw-r-- 1 rsl rsl     6268  8月 30 12:47 reclist_popularity.csv        # <-
-rw-rw-r-- 1 rsl rsl   432136  8月 29 12:54 tags.csv
-rw-rw-r-- 1 rsl rsl   124271  8月 30 12:21 users.csv

offline$
 less data/reclist_popularity.csv
 less data/reclist_movie_similarity.csv
 less data/reclist_bpr.csv

データの削除

recsys_full=#
 TRUNCATE r_reclist_popularity;
 TRUNCATE r_reclist_movie_similarity;
 TRUNCATE r_reclist_bpr;

データの登録

offline$
 psql recsys_full -U postgres -c "\copy r_reclist_popularity (id, target_genre_id, rank, movie_id, score) from 'data/reclist_popularity.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy r_reclist_movie_similarity (id, base_movie_id, rank, movie_id, score) from 'data/reclist_movie_similarity.csv' with delimiter E'\t' csv header encoding 'UTF8'"
 psql recsys_full -U postgres -c "\copy r_reclist_bpr (id, user_id, movie_id, score, rank) from 'data/reclist_bpr.csv' with delimiter E'\t' csv header encoding 'UTF8'"

実行確認

ブラウザで下記 URL にアクセスしてください。

各推薦リストが更新されています。特に、サインイン後は「あなたにおすすめの映画」が表示されるようになっています。