recsyslab / recsys-django

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

{% include header.html %}

recsys-django | Djangoによる推薦システム開発チュートリアル

概要

recsys-djangoはPythonのWebアプリケーションフレームワークであるDjangoによる推薦システム開発のチュートリアルです。推薦システムの開発演習を通して、DjangoによるWebアプリケーションの開発方法を学習できる内容となっています。

動機

研究室でDjangoを用いたWebアプリケーションの開発方法を学習してもらうために作成しました。個人での学習に加え、大学での授業や研究室等でご活用いただければ幸いです。

到達目標

  • 推薦システムの実装の基本を修得できる。
  • DjangoによるWebアプリケーション開発方法の基本を修得できる。
  • 推薦システムに関わるデータベース設計の基本を修得できる。
  • HTML5 CanvasとJavaScriptによるWebインタフェース設計の基本を修得できる。

取り組み方

下記の目次に記載している事前準備を行ったうえで、01から順にチュートリアルに取り組んでください。各ページでコード等を交えながら解説しています。適宜、参考文献も示していますので、併せて参照してください。チュートリアルどおりにコードを打ち込んでいくことで、次の完成イメージに示すような推薦システムが出来上がります。

完成イメージ

インタフェース

このシステムの主な機能は以下のとおりです。

  • トップページにアクセスすることで、ランダム推薦システム、人気ベース推薦システム、アイテムベース協調フィルタリングによる3種類の推薦リスト(「本日のおすすめ」、「人気の寿司」、「〇〇さんにおすすめ」)が各推薦スロットに提示されます。
  • 推薦スロットの左右のボタンをクリックすることで、推薦スロット内の提示アイテムを切り替えることができます。
  • アイテムをクリックすることで、そのアイテムの詳細ページを閲覧することができます。
  • アイテム詳細ページにおいて、「カツオが好きな人はこんな寿司も好きです」のように、アイテム類似度に基づく推薦リストが提示されます。
  • ログインすることで、アイテム詳細ページにおいて、そのアイテムに対して評価値を付与することができます。
  • 「更新」ボタンをクリックすることで、その時点の評価値行列に基づき推薦リストが更新されます。

動作確認

本チュートリアルは以下の環境で動作確認しています。

  • Linux Mint 20.1
  • PostgreSQL 12.14
  • Python 3.9.5
  • Django 4.2
  • Google Chrome 112.0.5615.49

アレンジ

本チュートリアル完了後、例えば、下記のようにアレンジしてみると良いでしょう。

  • 他の推薦システムを実装し、その推薦リストを提示する。
  • ユーザを増やしたり、寿司のネタを増やしたりするなど、評価値行列を充実させる。
  • 寿司の特徴量を設計し、内容ベース推薦システムを実装する。
  • 寿司に対してタグを付与できるようにし、推薦に活用する。
  • インタフェースを改良する。
  • 寿司の画像をフリー素材や自作のものに置き換える。
  • 寿司以外のドメインを対象にする。

目次

事前準備

プロジェクトの作成と初期設定

データベース環境の構築と設定

認証用アプリケーションの作成

テーブル設計とモデル定義

ベーステンプレートとインデックスビューの作成

推薦インタフェースの設計

ログイン機能と評価値の登録

オフライン処理の実装

参考

推薦システムの基礎

  • 奥健太,『基礎から学ぶ推薦システム ~情報技術で嗜好を予測する~』,コロナ社,2022.
  • 廣瀬英雄,『推薦システム ―マトリクス分解の多彩なすがた―』,共立出版,2022.

推薦システムの実装

  • 風間正弘,飯塚洸二郎,松村優也,『著推薦システム実践入門 ―仕事で使える導入ガイド』,オライリー・ジャパン,2022.
  • 与謝秀作,特集3 最新レコメンドエンジン総実装 協調フィルタリングから深層学習まで,WEB+DB PRESS Vol.129,pp.69-100,技術評論社,2022.
  • Kim Falk, ``Practical Recommender Systems'', MANNING, 2019.

Django

  • Django ドキュメント | Django
  • チーム・カルポ,『Django4 Webアプリ開発 実装ハンドブック』,秀和システム,2022.
  • 横瀬明仁,『現場で使える Django の教科書《基礎編》』,NextPublishing Authors Press,2018.
  • 横瀬明仁,『現場で使える Django の教科書《実践編》』,Independently published,2018.

更新情報

  • 2023-10-29: 仮想環境名をvenv_recsys_djangoに変更
  • 2023-10-29: サンプルデータの置き場をsrc/からcontents/に変更
  • 2023-10-29: 模範ソースコードをsrc/に公開

作成者

龍谷大学 推薦システム研究室 奥 健太

About


Languages

Language:Python 60.5%Language:JavaScript 28.3%Language:HTML 10.5%Language:CSS 0.7%