モデルの更新
評価履歴の蓄積
ブラウザで下記 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 にアクセスしてください。
各推薦リストが更新されています。特に、サインイン後は「あなたにおすすめの映画」が表示されるようになっています。