このプロジェクトの私の目標
- djangoフレームワークの主要コンポーネントを理解する
- レコメンデーションシステムの基本原則を説明する
- コンテンツフィルタリングメカニズムに基づくJaccardアルゴリズムを適用して、簡単な映画推薦アプリを作成します
Githubリポジトリhttps://github.com/jamattey/Django-Movie-Recommendation
技術スタック
- Djangoバックエンド
- HTMLフロントエンド
- ブートストラップCSS
- SQLiteデータベース
DjangoFrameworkについて
Djangoは、アプリケーションロジックを次の3つのModel-View-Controllerのようなコンポーネントに分割します。
Django Modelは、データモデリングとデータベースマッピング、およびデータを処理するためのビジネスロジックを管理します
Django Viewは、どのデータが表示されるかを説明しますが、どのように表示されるかは説明しません。通常、Django Viewは、データの表示方法を説明するHTMLページを委任およびレンダリングします
Django Templateは、データを表示するためのダイナミックHTMLページを生成します
クライアントがリクエストを送信すると、DjangoサーバーはDjango URL構成に基づいてリクエストを適切なビューにルーティングし、従来のコントローラーとして機能します
Djangoモデル
DjangoはDjangoモデルを使用してデータベーステーブルを表し、それらをオブジェクトにマップします。たとえば、プロセスはORMと呼ばれます。 Django Modelsは、データベースを抽象化し、オブジェクトとメソッドをテーブルとSQLクエリに自動的にマッピングすることで、開発者の生活を楽にしようとしています。
クラスをDjangoモデルとして定義するだけで、後でそれに応じてデータベーステーブルにマップされます。次に、Django Models APIを使用するだけで、SQLを1行も記述せずにデータベーステーブルでCRUDを実行できます
Djangoビュー
Djangoでは、ビューは本質的にPython関数です。このような関数は、Web要求を受け取り、必要なロジックを適用して、WebページのHTMLコンテンツ、リダイレクト、404エラー、XMLドキュメント、画像、またはその他のWeb応答などのWeb応答を生成します。多くの場合、ViewはDjangoモデルと対話して、必要なデータをQuerySetまたはオブジェクトの形式で取得してWeb応答を生成します。
Djangoアプリケーション開発プロセス
まず、Djangoアプリと設定のコンテナーであるDjangoプロジェクトを作成しました。ここで、1つ以上のDjangoアプリを作成してプロジェクトに追加することができます。
コア開発では、データをモデル化するためのDjangoモデルを作成し、UIに表示する必要のあるデータを決定するためのビューを作成しました。また、リクエストURLをビューにマッピングして、DjangoがURLを介して対応するビューにリクエストを転送できるようにします。次に、UIの設計と構築を開始できます。
この映画はCSVで入力されます。このサイトは実際の映画をホストしていませんが、通常のコードとデータベースを使用したレコメンデーションエンジンです。
このレコメンデーションエンジンは機械学習を使用していません.......まだ😂😂
推奨事項を実際に機能させるには、まず、ユーザーがDjangoAdminサイトを使用して視聴した映画にマークを付ける必要がありました。次に、視聴した映画に基づいたレコメンデーションアルゴリズムを作成しました。
DjangoAdminで視聴した映画にマークを付ける
- Djangoサーバーを実行する
- admin url app_url/adminにアクセス
- 次に、映画のエントリをクリックして視聴済みとしてマークし、[保存]を押します。
make_recommendationsCMDを実行して推奨事項を生成します
次のスクリーンショットに示すように、レコメンデーションシステムの場合、重要なアイデアは常に、特定のユーザーが自分の目に見えないアイテムを好きか嫌いかを予測するための優れたアルゴリズム/モデルを考え出すことです。
おそらく何百もの優れた推奨アルゴリズムがあり、大きく2つのカテゴリに分類できます。
コンテンツフィルタリングベース:
コンテンツフィルタリングベースの推奨アルゴリズムは、以前に非常によく似た映画を見たことがある場合は、新しい映画が好きかもしれないと想定しています。または、ユーザープロファイル(年齢、性別、興味など)に基づいて、プロファイルに一致する新しい映画を見つけようとします。
協調フィルタリングベース:
協調フィルタリングアルゴリズムは、あなたに似た他のユーザー(類似のプロフィールまたは類似の映画を見た)がこの映画を見た場合、あなたが新しい映画を好きになる可能性があることを前提としています。
このプロジェクトでは、コンテンツフィルタリングベースのアルゴリズムを使用し、未視聴/新規の映画が視聴済みの映画と類似している場合は、それらを推奨するようにします。
このような映画の類似性を計算するにはどうすればよいですか
ここでは、Jaccardの類似性を使用します。これは、2つのセット間の類似性を計算するために、おそらく最も単純ですが非常に効果的な方法です。
Jaccardの類似性は、2つのセットの共通部分のサイズをその2つのセットの和集合のサイズで割ったものとして定義されます。