2026-04-30·実装·⏱ 約 4 分
推薦システム 入門 ─ 協調フィルタリングからニューラル推薦へ
Amazon・Netflix・YouTube の中身を支える推薦アルゴリズム。協調フィルタリング・行列分解・Two-Tower・LLM 活用までの主要手法を整理します。
推薦システム は EC・動画配信・SNS のコア機能。Amazon の売上の 35%、Netflix 視聴の 80% が推薦経由とも言われます。本記事で主要手法を整理。
3 系統の推薦アプローチ
- 協調フィルタリング(CF): ユーザー × アイテム行列の類似度 / 行列分解
- コンテンツベース: アイテム特徴量 + ユーザープロファイル
- ハイブリッド: CF + コンテンツ + メタデータの統合
1. 協調フィルタリング ─ 古典の鉄板
User-User CF
似た嗜好を持つユーザーが好きなアイテムを薦める。コサイン類似度や Pearson 相関で計算。
Item-Item CF
アイテム同士の類似度を計算。Amazon の『この商品を買った人は…』はこれ。
行列分解(Matrix Factorization)
評価行列 と低ランク近似。 がユーザー埋め込み、 がアイテム埋め込み。Netflix Prize で有名に。
2. ニューラル推薦 ─ 現代の主流
Two-Tower モデル
ユーザーとアイテムをそれぞれ NN(タワー)で埋め込み、内積で関連度を計算。検索時は ANN(近似最近傍)で高速。
Two-Tower の最小実装
import torch.nn as nn
class TwoTower(nn.Module):
def __init__(self, user_dim, item_dim, emb_dim=64):
super().__init__()
self.user_tower = nn.Sequential(
nn.Linear(user_dim, 128), nn.ReLU(),
nn.Linear(128, emb_dim),
)
self.item_tower = nn.Sequential(
nn.Linear(item_dim, 128), nn.ReLU(),
nn.Linear(128, emb_dim),
)
def forward(self, user_feat, item_feat):
u = self.user_tower(user_feat)
i = self.item_tower(item_feat)
return (u * i).sum(dim=-1) # 内積Sequential Recommendation
ユーザーの 行動履歴 をシーケンスとして Transformer に入れる。SASRec / BERT4Rec が代表。
本番運用 ─ 2 段階アーキテクチャ
- 候補生成(Retrieval): 数百万アイテムから上位 100〜1000 を高速抽出 ─ Two-Tower + ANN
- 順位付け(Ranking): 候補の中からスコアリング ─ DLRM・Wide&Deep など重い NN
- ビジネスルール: 多様性確保・在庫考慮・スポンサー枠
評価指標
- Precision@k / Recall@k: 上位 k 件の精度 ・ 再現率
- NDCG: 順位を考慮した正解度
- MRR: 最初の正解の逆順位
- CTR ・ CVR ・ Watch Time: ビジネス側の指標
Cold Start 問題
新ユーザー・新アイテムには履歴がない。対策:
- コンテンツベース: メタデータでスタート
- LLM 活用: テキスト埋め込みで類似アイテム検索
- ヒューリスティック: 人気順・新着順をしばらく
- Bandit アルゴリズム: 探索と活用のバランス
学習リソース
- [線形代数を AI 視点で](/blog/linear-algebra-for-ai) ─ 行列分解の基礎
- [Transformer の数学](/blog/transformer-math) ─ Sequential Rec の前提
- [MLOps 基礎](/blog/mlops-basics) ─ 本番運用のための知識
- [E 資格 ロードマップ](/certs/e-shikaku/roadmap)
Sponsored / Recommended
本気で AI エンジニアを目指すなら ─ 関連スクール
以下は当サイトと提携しているスクールの紹介です。リンク経由でのお申込で運営費を支援できます(読者の皆様の追加負担はありません)。
Related Articles
関連記事
- 2026-04-30実装Slack Bot を LLM で作る ─ FastAPI + OpenAI で社内ツール化Slack の Slash Command と Events API を使い、社内チャンネル内で動く LLM Bot を構築。FastAPI バックエンド + OpenAI で 1 日で完成。
- 2026-04-30実装FastAPI 入門 ─ ML モデルを 5 分で API にするPython の高速 Web フレームワーク FastAPI を使って、ML モデルを REST API として公開する最短ルート。型ヒント・自動ドキュメント・非同期対応の 3 拍子。
- 2026-04-30実装Docker 入門 ─ ML 環境の再現性を担保する「自分の PC では動く問題」を解決する Docker。ML プロジェクトの Dockerfile・GPU 対応・docker-compose・Multi-Stage Build までを実用視点で。