第10章第四部9分
合計したあとの調整
26項目を足したら終わりではない。新人枠・作者減衰・フォロー外割引が順に掛かる。
この章で分かること
- 新人枠が「1件だけの席」であることが分かる
- 連投が不利になる度合いを数値で言える
- フォロー中でも割引されるケースを説明できる
26項目を合計したあと、3つの調整が順番に掛かります。ここを知らないと「点数が高いはずなのに」の説明がつきません。
その前に ─ オフセット変換
まず、合計値が負になった投稿の扱いです。負のスコアは 0 〜 0.001 という極めて狭い帯域に線形圧縮されます。
調整① 新人枠 ─ 1リクエストにつき1件だけ
ここは最も誤解が多い部分です。「新人アカウントが全体的に優遇される」仕組みではありません。
effective[best_idx] = effective[best_idx].max(target);max。1件だけを引き上げます。author_cold_start.rs:306target は「点数降順に並べたときの16番目のスコア」です。つまりあなたのフィードを作るたびに、条件を満たす投稿の中から1件だけを選んで、16位相当まで持ち上げる。席を1つ確保するイメージです。
| 条件 | 値 |
|---|---|
| 返信でない | 必須 |
| リポストでない | 必須 |
| 著者のフォロワー数 | 1,000人以下 |
| その投稿の表示回数 | 1,000回未満 |
| 点数付き候補内の順位 | 上位85%以内 |
| 投稿の年齢(一部の実験群のみ) | 24時間以内 |
調整② 同じ作者の連投は減点される
同じ著者の投稿が並ぶと、2本目以降に倍率が掛かります。
1.0001本目
0.6252本目
0.4383本目
0.3444本目
0.2975本目
0.2736本目
倍率 = (1 − 0.25) × 0.5k + 0.25
k は「同じ作者で、自分より上位にある投稿の本数」です。1本目は減衰なし、2本目で0.625倍、3本目で0.4375倍。下限は0.25倍です。同じ人が1つのフィードを埋め尽くすことはできません。
調整③ フォロー外は0.75倍
フォローされていないアカウントの投稿には、一律 ×0.75 が掛かります。そして、ここが見落とされがちです。
| 状況 | 倍率 |
|---|---|
| フォロー中 × オリジナル投稿 | 1.00 |
| フォロー中 × 返信・リポスト | 0.75 |
| フォロー外 | 0.75 |
| トピック指定時のフォロー外 | 0.50 |
適用の順番
Phoenix予測
→ Σ(予測値 × ウェイト) ※相互フォロー+15はウェイト側に内包
→ オフセット変換
→ 新人枠(1件だけ16位相当へ引き上げ)
→ 同一作者の減衰(×0.75·0.5^k+0.25)
→ フォロー外割引(×0.75)順番が意味を持ちます。新人枠で持ち上げられた1件も、そのあとの減衰と割引を受けます。16位相当に上げられても、フォロー外なら ×0.75 されて実質的にはもう少し下になります。
第2章の計算機で、下の3つのつまみを動かしてみてください。同じ予測でも最終スコアがどれだけ変わるかが見えます。
スコア計算機
左は「AIがそう予測した確率」です。実際の回数ではありません。動かすと右の点数が変わります。
同じ作者の
- 40.00%×0.5=+0.200
- 5.00%×5=+0.250
- 3.00%×1=+0.030
- 0.60%×5=+0.030
- 0.40%×20=+0.080
- 0.50%×5=+0.025
- 0.80%×2=+0.016
- 0.30%×4=+0.012
- 12.00%×0.4=+0.048
- 4.00%×0.2=+0.008
- 6.00%×0.05=+0.003
- 5.00%×0.05=+0.003
- 25秒×0.004=+0.100
- 0.05%×-43.2=-0.022
- 0.02%×-31.2=-0.006
- 0.02%×-58.8=-0.012
- 0.01%×-234=-0.023
- 55.00%×-0.02=-0.011
最終スコア
0.5486
- プラスの合計
- +0.804
- マイナスの合計
- −0.074
- 差引
- +0.731
- オフセット変換+0.001
- 0.7315
- 同一作者の減衰(1本目)1本目は減衰なし
- ×1.0000
- フォロー外割引フォロー外のため適用
- ×0.75