モデルの更新
評価履歴の蓄積
ブラウザで下記URLにアクセスして、何件か映画に対して評価値を与えてください。
データのバックアップ
offline$ cp -r data/ data-bkup/
offline$ ls data-bkup/
genres.csv ml-ls.item movies.csv rating_matrix.csv reclist_movies_movies.csv users.csv
ml-latest-small ml-ls.user movies_genres.csv ratings.csv reclist_popularity.csv users_.csv
ml-ls.inter ml-rdb movies_movies_similarity_matrix.csv reclist_bpr.csv tags.csv
データの準備
offline$ cd data/
offline/data$
psql recsys_full -U postgres -c "\copy (SELECT id, email_encrypted, email_hash FROM users ORDER BY id ASC) to 'users.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT id, title, year, imdb_id, tmdb_id FROM movies ORDER BY id ASC) to 'movies.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT id, name FROM genres ORDER BY id ASC) to 'genres.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT movie_id, genre_id FROM movies_genres ORDER BY movie_id ASC, genre_id ASC) to '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 ratings ORDER BY id ASC) to 'ratings.csv' with delimiter E'\t' csv header encoding 'UTF8'"
データの確認
offline/data/$ ls
genres.csv ml-ls.item movies.csv rating_matrix.csv reclist_movies_movies.csv users.csv
ml-latest-small ml-ls.user movies_genres.csv ratings.csv reclist_popularity.csv users_.csv
ml-ls.inter ml-rdb movies_movies_similarity_matrix.csv reclist_bpr.csv tags.csv
offline/data/updated$
less users.csv
less movies.csv
less genres.csv
less movies_genres.csv
less ratings.csv
less tags.csv
推薦システムの実行
(recsys_full) offline/data$ cd ../src/
(recsys_full) offline/src$ python update.py --ini offline.ini
# ...(3時間程度)...
結果の確認
(recsys_full) offline/src$ cd ../
(recsys_full) offline$ tree data/
data/
├── genres.csv
├── ml-latest-small
│ ├── README.txt
│ ├── links.csv
│ ├── movies.csv
│ ├── ratings.csv
│ └── tags.csv
├── ml-ls.inter
├── ml-ls.item
├── ml-ls.user
├── ml-rdb
│ ├── genres.csv
│ ├── links.csv
│ ├── movies.csv
│ ├── movies_genres.csv
│ ├── ratings.csv
│ ├── tags.csv
│ └── users.csv
├── movies.csv
├── movies_genres.csv
├── movies_movies_similarity_matrix.csv
├── rating_matrix.csv
├── ratings.csv
├── reclist_bpr.csv
├── reclist_movies_movies.csv
├── reclist_popularity.csv
├── tags.csv
├── users.csv
└── users_.csv
3 directories, 27 files
(recsys_full) offline$ cd data/
(recsys_full) offline/data$
less rating_matrix.csv
less movies_movies_similarity_matrix.csv
less ml-ls.inter
less ml-ls.item
less ml-ls.user
less reclist_popularity.csv
less reclist_movies_movies.csv
less reclist_bpr.csv
データの削除
recsys_full=# DELETE FROM reclist_popularity;
recsys_full=# DELETE FROM reclist_movies_movies;
recsys_full=# DELETE FROM reclist_bpr;
データの登録
offline/data$
psql recsys_full -U postgres -c "\copy reclist_popularity (id, target_genre_id, rank, movie_id, score) from 'reclist_popularity.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy reclist_movies_movies (id, base_movie_id, rank, movie_id, score) from 'reclist_movies_movies.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy reclist_bpr (id, user_id, movie_id, score, rank) from 'reclist_bpr.csv' with delimiter E'\t' csv header encoding 'UTF8'"
ブラウザで下記URLにアクセスしてください。各推薦リストが更新されています。特に、「あなたにおすすめの映画」が表示されるようになっています。