Skip to content

Add meritocratic author-size IPS to RankingScorer - #31

Open
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:feat/author-size-ips
Open

Add meritocratic author-size IPS to RankingScorer#31
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:feat/author-size-ips

Conversation

@Pitchfork-and-Torch

@Pitchfork-and-Torch Pitchfork-and-Torch commented Aug 14, 2026

Copy link
Copy Markdown

Summary

Phoenix already estimates P(action | viewer, post). That is the quality signal. Follower count is not a Phoenix feature, but audience size still leaks into For You through Thunder (follow graph), hashed author IDs, SimClusters log-fav retrieval, and the flat 0.75 OON tax.

This PR residualizes ln(1 + followers) inside the scored batch so two posts with the same Phoenix score are not ordered by how many people already follow the author.

p_i   = ln(1 + max(followers_i, 1))
ips_i = 1 / p_i
m_i   = 1 + alpha * (ips_i / mean(ips) - 1)
m_i   = clamp(m_i, 1 / max_boost, max_boost)
score' = score * m    if score > 0
       = score        otherwise

Mean-normalization keeps the batch arithmetic mean at 1. This reallocates score. It does not inflate it. Missing follower counts are identity. Negative scores (predicted block / mute / report) are not lifted.

Quality still wins. Default clamp is 2x, so a 1M-follower post that Phoenix scored 3x higher still ranks above a 100-follower post.

This is individual meritocratic fairness (Singh and Joachims KDD 2018, groups of size one; Biega et al. equity of attention). It is not demographic parity. No identity groups. No impression quotas. Low-quality posts stay low.

Why here, not UserCred / retrieval

Knobs

Param Default
rust_home_mixer_enable_author_size_ips true
rust_home_mixer_author_size_ips_alpha 0.5
rust_home_mixer_author_size_ips_max_boost 2.0

alpha = 0 is a no-op. Applied after the Phoenix weighted sum, before author diversity, the OON tax, and cold start.

Math writeup: docs/MERITOCRATIC_AUTHOR_SIZE_IPS.md

Test plan

  • identity when alpha=0, followers missing, or all authors the same size
  • smaller author gets a higher multiplier; known-multiplier mean is 1
  • clamp respects max_boost; 0 followers treated as 1
  • negative / zero scores are not boosted
  • equal Phoenix scores: 100-follower ranks above 1M-follower
  • 3x Phoenix gap still beats the default 2x clamp
  • RankingScorer integration: enable lifts, disable restores equality
  • cargo test cannot run in the public dump (no home-mixer manifest)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant