ハイブリッドシステムと評価指標
協調フィルタリングとコンテンツベース手法の組み合わせ、RMSE、MAE、Precision@K、Recall@Kについて学習します。
「ハイブリッドシステムと評価指標」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
ハイブリッドシステムを使う理由
協調フィルタリングはコールドスタートを苦手とし、コンテンツベースフィルタリングは好みが特化しすぎる傾向があります。ハイブリッドシステムは両者を組み合わせ、それぞれの手法で他方の弱点を補うため、通常は単独で使うより優れた結果が得られます。
重み付きの組み合わせ
最も単純なハイブリッド方式は、合計が1になる重みでスコアを組み合わせます。たとえば0.6 * CF + 0.4 * CBとすると、協調フィルタリングのシグナルを重視しつつ、コンテンツ情報を代替手段や多様性の確保に利用できます。
final_score = 0.6 * cf_score + 0.4 * cb_score重みのチューニング
0.6 / 0.4という分割は出発点にすぎません。検証データで重みを調整します。ユーザーの履歴が豊富な場合はCFの重みを増やし、新しいアイテムにはCBの重みを増やします。ユーザーごとに重みを切り替えることもできます。
その他のハイブリッド戦略
- 重み付き: スコアを組み合わせます(前述の方法)。
- 切り替え: データの有無に応じてCFまたはCBを選びます。
- 特徴量の組み合わせ: 両方のシグナルを1つのモデルに入力します。
重み付きの組み合わせは、最も一般的で理解しやすい方法です。
評価: 2種類の問い
評価では、次の2つの問いを分けて考えます。
- 評価値予測: 予測した評価値は実際の評価値にどの程度近いでしょうか。RMSE/MAEを使います。
- ランキング品質: 適切なアイテムが上位に並んでいるでしょうか。Precision@K、Recall@K、NDCG@Kを使います。
評価値予測のRMSE
RMSEは、予測評価値と実際の評価値の二乗誤差の平均を求め、その平方根を取ります。大きな外れを厳しく評価し、評価値の精度を測る標準的な指標です。
import numpy as np
def rmse(pred, actual):
return np.sqrt(np.mean((np.array(pred) - np.array(actual)) ** 2))Precision@K
Precision@K = (上位K件に含まれる関連アイテム数) / K です。これは、推薦したK件のうち、ユーザーが実際に好んだものの割合を表します。値が高いほど、無駄な枠が少ないことを意味します。
def precision_at_k(recommended, relevant, k):
top_k = recommended[:k]
hits = len(set(top_k) & set(relevant))
return hits / kRecall@K
Recall@K = (上位K件に含まれる関連アイテム数) / (関連アイテムの総数) です。ユーザーが好むすべてのアイテムのうち、上位K件にどれだけ含められたかを表します。
def recall_at_k(recommended, relevant, k):
top_k = recommended[:k]
hits = len(set(top_k) & set(relevant))
return hits / len(relevant) if relevant else 0.0PrecisionとRecallのトレードオフ
Precisionは表示したものが正しいことを重視し、Recallは関連するものを漏れなく含めることを重視します。推薦システムでは、ユーザーが短いリストしか見ないため、通常はPrecision@Kを重視します。上位の枠ほど重要だからです。
ランキング品質のNDCG@K
NDCG@K(Normalized Discounted Cumulative Gain)は、関連度の高いアイテムを上位に配置することを評価します。同じアイテムでも、順位1位のほうが順位10位より高く評価されます。順位が下がるほど利得が割り引かれるためです。
NDCGの仕組み
DCGは、各アイテムの関連度を順位の対数で割った値を合計します。NDCGは、DCGを理想的なDCG(完全な並び順)で割り、0〜1のスコアにします。1は完全に順位付けされたリストを表します。
import numpy as np
def dcg(rels):
return sum(r / np.log2(i + 2) for i, r in enumerate(rels))
def ndcg_at_k(rels, k):
ideal = sorted(rels, reverse=True)
return dcg(rels[:k]) / dcg(ideal[:k]) if dcg(ideal[:k]) else 0.0クイックチェック
評価指標に関する知識をテストしましょう。
まとめ
0.6 * CF + 0.4 * CBのようなハイブリッド推薦システムを構築し、その評価ツールキットを学びました。評価値の精度にはRMSE、検索にはPrecision@KとRecall@K、ランキング品質にはNDCG@Kを使います。これでRecommendation Systemsコースは終了です。次のコースはMLOps Fundamentalsです。
よくある質問
「ハイブリッドシステムと評価指標」レッスンは無料ですか?
はい。「ハイブリッドシステムと評価指標」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「ハイブリッドシステムと評価指標」で何を学びますか?
協調フィルタリングとコンテンツベース手法の組み合わせ、RMSE、MAE、Precision@K、Recall@Kについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ハイブリッドシステムと評価指標」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 協調フィルタリング:ユーザーベースとアイテムベース
- SVDによる行列分解
- コンテンツベースフィルタリング
- ハイブリッドシステムと評価指標