0Pricing
Learn AI with Python · レッスン

ハイブリッドシステムと評価指標

協調フィルタリングとコンテンツベース手法の組み合わせ、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 / k

Recall@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.0

Precisionと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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 協調フィルタリング:ユーザーベースとアイテムベース
  2. SVDによる行列分解
  3. コンテンツベースフィルタリング
  4. ハイブリッドシステムと評価指標
← Learn AI with Pythonに戻る