第5章

スコアリングシステム完全ガイド

複数スコアラーの仕組みと最終スコア計算

5.1

なぜ複数のスコアラーが存在するのか

第4章で説明したPhoenixモデルは19種類のエンゲージメント確率を予測しますが、それだけでは最終的なランキングは決まりません。Xのレコメンデーションシステムには、Phoenix以外にも複数のスコアラーがあります。

重要な設計原則

これらのスコアは足し算ではなく、掛け算で合成されます。つまり、一つでも弱い要素があると、全体のスコアが大きく下がります。

図5-1:最終スコアの合成(掛け算)

Phoenix
1.365
OON
1.0
Diversity
0.9025
VQV
1.5
=
最終スコア
1.848
最終スコア = Phoenix x OON x Author Diversity x VQV x ...
各スコアラーの出力を掛け合わせて最終スコアを算出
5.2

Phoenix Scorer

Phoenix Scorerは、機械学習モデルによる基礎スコアを計算します。19種類のエンゲージメント確率にそれぞれ重みを掛けて合計します。

Phoenix Scorer

ML予測に基づく重み付きスコア

Score = Σ (予測確率 x 重み)
表5-1:エンゲージメント重み付け一覧
エンゲージメント重み備考
リプライ+13.5最高重み
プロフィールクリック+122番目
フォロー+4
引用+1.1
リポスト+1
いいね+0.5最低重み
通報-10最大ペナルティ
ブロック-10
ミュート-5
興味なし-1.5
phoenix_scorer.rs
fn calculate_phoenix_score(predictions: &EngagementPredictions) -> f32 {
    let mut score = 0.0;

    // ポジティブエンゲージメント
    score += predictions.favorited * 0.5;
    score += predictions.retweeted * 1.0;
    score += predictions.replied * 13.5;      // 最高重み
    score += predictions.profile_clicked * 12.0;  // 2番目
    score += predictions.followed * 4.0;

    // ネガティブエンゲージメント
    score += predictions.reported * (-10.0);
    score += predictions.blocked * (-10.0);
    score += predictions.muted * (-5.0);

    return score;
}
重み付けのポイント

リプライ確率がわずか5%でも、重み13.5により最大の貢献者となります。「いいね」より「リプライ」や「プロフィールクリック」を誘発するコンテンツが有利です。

5.3

OON Scorer

OON(Out of Network)Scorerは、投稿者と閲覧者の関係に基づいてスコアを調整します。

OON Scorer

フォロー関係によるスコア調整

フォロワー(IN)
x 1.0
ペナルティなし
非フォロワー(OON)
x 0.85
15%ペナルティ
oon_scorer.rs
fn calculate_oon_score(user_id: &str, author_id: &str, follow_graph: &FollowGraph) -> f32 {
    if follow_graph.is_following(user_id, author_id) {
        return 1.0;  // フォロー中(ペナルティなし)
    } else {
        return 0.85; // フォロー外(15%ペナルティ)
    }
}
戦略的含意

まずフォロワー基盤を構築し、IN(ネットワーク内)で強いエンゲージメントを生み出すことが重要です。フォロワーでの反応が良ければ、OONへの拡大も期待できます。

5.4

Author Diversity Scorer

このスコアラーは、同じ著者からの連続投稿がタイムラインを支配するのを防ぎます。

Author Diversity Scorer

同一著者の連続表示を抑制

decay_factor = 0.95^n (n = 同一著者の投稿数)
表5-2:Author Diversity減衰係数
同一著者数係数 (0.95^n)ペナルティ
0件目10%
1件目0.955%
2件目0.902510%
3件目0.85714%
4件目0.81519%
5件目0.77423%
9件目0.6337%
author_diversity_scorer.rs
fn calculate_diversity_score(author_id: &str, timeline: &[Tweet]) -> f32 {
    // タイムライン内の同一著者投稿数をカウント
    let same_author_count = timeline
        .iter()
        .filter(|t| t.author_id == author_id)
        .count();

    // 0.95の指数減衰を適用
    let decay_factor = 0.95_f32.powf(same_author_count as f32);

    return decay_factor;
}
ベストプラクティス
  • 投稿間隔は最低4時間空ける
  • 1日の投稿数は3件程度に
  • 量より質を重視する
5.5

VQV Scorer

VQV(Video Quality View)は、特定の条件を満たす動画コンテンツに品質ボーナスを提供します。

VQV Scorer

動画品質視聴ボーナス

10秒以上
最小視聴時間
🔊
音声オン
サウンド有効
⬇️
スキップなし
スクロールで通過しない
全条件達成時
x 1.5
50%ボーナス
vqv_scorer.rs
fn is_quality_view(view: &VideoView, video: &Video) -> bool {
    // 条件1: 最小視聴時間
    let min_duration = min(10_000, video.duration_ms / 2);
    let duration_ok = view.watch_time_ms >= min_duration;

    // 条件2: 音声オン
    let audio_ok = view.audio_enabled;

    // 条件3: スクロールで通過していない
    let not_scrolled = view.not_scrolled_past;

    return duration_ok && audio_ok && not_scrolled;
}
5.6

この章のまとめ

第5章 重要ポイント

  • スコアは掛け算で合成 - 一つでも弱い要素があると全体に大きく影響
  • Phoenix Score - リプライ(13.5)とプロフィールクリック(12.0)が最高重み
  • OON Score - 非フォロワーは15%ペナルティ(0.85係数)
  • Author Diversity - 連続投稿は最大40%減
  • VQV Score - 品質動画視聴は50%ボーナス(1.5倍)
今日から実践
  • 投稿前に「これはリプライを呼ぶか?」と自問する
  • 投稿間隔は4時間以上空ける
  • 動画は最初の3秒と10秒地点に注力
  • まずフォロワーとのエンゲージメントを優先
Q

なぜ複数のスコアラーが掛け算で合成されるのですか?

A

掛け算による合成には重要な特性があります:一つでも弱い要素があると、全体のスコアが大きく下がります。例えば、Phoenix Scoreが高くてもAuthor Diversityペナルティがある場合、全体スコアが低下します。これにより、すべての次元でバランスの取れた品質が確保されます。

Q

OON Scorerの15%ペナルティはどのくらい影響がありますか?

A

非フォロワーは0.85の係数(15%ペナルティ)を受けます。例:Phoenix Score 1.365の投稿がフォロワーに届く場合は1.365 x 1.0 = 1.365、非フォロワーに届く場合は1.365 x 0.85 = 1.16となります。まずフォロワー基盤を構築し、IN(ネットワーク内)で強いエンゲージメントを生み出すことが重要です。

Q

Author Diversityの0.95減衰とは何ですか?

A

Author Diversityは、同じ著者が複数回表示される際に指数減衰(0.95^n)を適用します。1番目は1.0(ペナルティなし)、2番目は0.95(5%減少)、3番目は0.9025(10%減少)となります。最適なリーチのために投稿間隔を4時間以上空けることを推奨します。

Q

VQV Scorerのボーナスを得るための条件は?

A

VQV(Video Quality View)は3つの条件すべてを満たす必要があります:(1) 最小視聴時間 - min(10秒, 動画時間/2)を視聴、(2) 音声オン - ミュートされた自動再生は不可、(3) スクロールで通過していない - 意図的な視聴であること。すべて満たすと1.5倍の乗数(50%ボーナス)を獲得できます。

Q

スコアを最大化するための優先順位は?

A

最高優先度はリプライを誘発するコンテンツ(重み13.5)とプロフィールクリック(重み12.0)です。中優先度はフォロワーエンゲージメント優先(OON 1.0 vs 0.85)と動画品質(VQV 1.5倍)。基盤優先度は投稿頻度(4時間以上の間隔)とネガティブシグナル回避(通報-10、ブロック-10)です。

理解度チェック

1

スコアの合成方法は?

2

OONペナルティの係数は?

3

Author Diversityの減衰係数は?

4

VQVボーナスの倍率は?

5

Phoenix Scoreで最も重み付けが高いエンゲージメントは?

回答済み: 0 / 5

次回予告:第6章 - フィルター

第6章では、スコアリング前にコンテンツを候補から除外できる「フィルター」について説明します。どんなに高いスコアでも、フィルターされたコンテンツは表示されません。

Xアルゴリズム攻略ガイド