View on GitHub

モデルの更新

Home

モデルの更新

評価履歴の蓄積

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