The "heavy ranker" is a machine learning model used on the "For You" timeline on Twitter. It is responsible for generating the ranking of tweets after the candidate retrieval and light ranker processes. The final ordering of tweets is not solely based on the highest to lowest scoring from the model, as other heuristics are also applied.

The model captures the ranking model used for the majority of Twitter users on the "For You" timeline as of early March 2023. There may be small differences from the production model due to the need to ensure that the model runs independently from other parts of the Twitter codebase.

The "heavy ranker" model receives various features that describe the tweet and the user whose timeline is being constructed as input. These features are detailed in a separate file (`FEATURES.md`). The model outputs multiple binary predictions about how the user is likely to respond if shown the tweet. These predictions include the probability that the user will:

* Favorite the tweet.
* Click into the conversation of the tweet and reply or like a tweet.
* Click into the conversation of the tweet and stay there for at least 2 minutes.
* React negatively (e.g., requesting "show less often," blocking or muting the tweet author).
* Open the tweet author's profile and like or reply to a tweet.
* Reply to the tweet.
* Reply to the tweet and have the reply engaged by the tweet author.
* Click "Report Tweet."
* Retweet the tweet.
* Watch at least half of a video (if the tweet contains a video).

To rank candidates, these predictions are combined into a score by weighting them. Each prediction is assigned a specific weight, and the combination of these weighted predictions generates the final score for ranking.

To train the model, a script (`create_random_data.sh`) is provided to generate random data, as the real training data cannot be released due to privacy restrictions. After generating random data, the `run_local.sh` script can be executed to train the model for a small number of iterations. The model training is configured through a YAML file (`local_prod.yaml`).

The architecture of the "heavy ranker" model is a parallel masknet, with more details available in a research paper at [https://arxiv.org/abs/2102.07619&#8203;`oaicite:{"index":0,"metadata":{"title":"the-algorithm-ml/projects/home/recap](https://arxiv.org/abs/2102.07619&#8203;%60oaicite:%7B%22index%22:0,%22metadata%22:%7B%22title%22:%22the-algorithm-ml/projects/home/recap) at main · twitter/the-algorithm-ml · GitHub","url":"[https://github.com/twitter/the-algorithm-ml/tree/main/projects/home/recap","text":"This](https://github.com/twitter/the-algorithm-ml/tree/main/projects/home/recap%22,%22text%22:%22This) project is the "heavy ranker" used on the "For You" timeline. This is used to generate the ranking of Tweet after candidate retrieval and light ranker (note the final ordering of the Tweet is not directly the highest -> lowest scoring, because after scoring other heuristics are used). \n\nThis model captures the ranking model used for the majority of users of Twitter "For You" timeline in early March 2023. Due to the need to make sure this runs independently from other parts of Twitter codebase, there may be small differences from the production model. \n\nThe model receives various features, describing the Tweet and the user whose timeline is being constructed as input (see FEATURES.md for more details). The model outputs multiple binary predictions about how the user will respond if shown the Tweet. \n\nThose are: "recap.engagement.is\_favorited": The probability the user will favorite the Tweet. "recap.engagement.is\_good\_clicked\_convo\_desc\_favorited\_or\_replied": The probability the user will click into the conversation of this Tweet and reply or Like a Tweet. "recap.engagement.is\_good\_clicked\_convo\_desc\_v2": The probability the user will click into the conversation of this Tweet and stay there for at least 2 minutes. "recap.engagement.is\_negative\_feedback\_v2": The probability the user will react negatively (requesting "show less often" on the Tweet or author, block or mute the Tweet author) "recap.engagement.is\_profile\_clicked\_and\_profile\_engaged": The probability the user opens the Tweet author profile and Likes or replies to a Tweet. "recap.engagement.is\_replied": The probability the user replies to the Tweet. "recap.engagement.is\_replied\_reply\_engaged\_by\_author": The probability the user replies to the Tweet and this reply is engaged by the Tweet author. "recap.engagement.is\_report\_tweet\_clicked": The probability the user will click Report Tweet. "recap.engagement.is\_retweeted": The probability the user will ReTweet the Tweet. "recap.engagement.is\_video\_playback\_50": The probability (for a video Tweet) that the user will watch at least half of the video \n\nFor ranking the candidates these predictions are combined into a score by weighting them: "recap.engagement.is\_favorited": 0.5 "recap.engagement.is\_good\_clicked\_convo\_desc\_favorited\_or\_replied": 11\* (the maximum prediction from these two "good click" features is used and weighted by 11, the other prediction is ignored). "recap.engagement.is\_good\_clicked\_convo\_desc\_v2": 11\* "recap.engagement.is\_negative\_feedback\_v2": -74 "recap.engagement.is\_profile\_clicked\_and\_profile\_engaged": 12 "recap.engagement.is\_replied": 27 "recap.engagement.is\_replied\_reply\_engaged\_by\_author": 75 "recap.engagement.is\_report\_tweet\_clicked": -369 "recap.engagement.is\_retweeted": 1 "recap.engagement.is\_video\_playback\_50": 0.005 \n\nWe cannot release the real training data due to privacy restrictions. However, we have included a script to generate random data to ensure you can run the model training code. \n\nTo try training the model (assuming you have already followed the repo setup instructions and are inside a virtualenv). \n\nRun $ ./projects/home/recap/scripts/create\_random\_data.sh \n\nThis will create some random data (in $HOME/tmp/recap\_local\_random\_data). \n\n$ ./projects/home/recap/scripts/run\_local.sh \n\nThis will train the model (for a small number of iterations). Checkpoints and logs will be written to $HOME/tmp/runs/recap\_local\_debug. \n\nThe model training is configured through a yaml file (./projects/home/recap/config/local\_prod.yaml). \n\nThe model architecture is a parallel masknet (<https://arxiv.org/abs/2102.07619>). \n\n"}}`​.
'헤비 랭커'는 트위터의 '나를 위한' 타임라인에서 사용되는 머신 러닝 모델입니다. 후보 검색 및 라이트 랭커 프로세스를 거쳐 트윗의 순위를 생성하는 역할을 합니다. 트윗의 최종 순서는 다른 휴리스틱도 적용되므로 모델에서 가장 높은 점수에서 가장 낮은 점수만을 기준으로 하지 않습니다.이 모델은 2023년 3월 초 현재 '나를 위한' 타임라인에서 대부분의 트위터 사용자에게 사용되는 순위 모델을 캡처합니다. 이 모델은 트위터 코드베이스의 다른 부분과 독립적으로 실행되어야 하기 때문에 프로덕션 모델과 약간의 차이가 있을 수 있습니다.'헤비 랭커' 모델은 타임라인을 구성하는 트윗과 사용자를 설명하는 다양한 기능을 입력으로 받습니다. 이러한 기능은 별도의 파일(`FEATURES.md`)에 자세히 설명되어 있습니다. 이 모델은 사용자가 트윗을 볼 경우 어떤 반응을 보일지에 대한 여러 이진 예측을 출력합니다. 이러한 예측에는 사용자가 다음과 같은 행동을 할 확률이 포함됩니다:* 트윗에 마음에 들어요 표시를 합니다.* 트윗의 대화를 클릭하고 답글을 달거나 마음에 들어요 표시를 할 확률.* 트윗의 대화를 클릭하고 최소 2분 이상 머문다.* 부정적인 반응(예: "덜 자주 표시" 요청, 트윗 작성자 차단 또는 뮤트)을 합니다.* 트윗 작성자의 프로필을 열고 마음에 들어요를 누르거나 트윗에 답글을 보냅니다.* 트윗에 답글을 남깁니다.* 트윗에 답글을 달고 트윗 작성자가 답글에 참여하도록 합니다.* "트윗 신고하기"를 클릭합니다.* 트윗을 리트윗합니다.* 트윗에 동영상이 포함된 경우 동영상의 절반 이상을 시청합니다.후보 순위를 매기기 위해 이러한 예측에 가중치를 부여하여 점수로 합산합니다. 각 예측에는 특정 가중치가 할당되며, 이러한 가중치가 적용된 예측의 조합이 최종 순위를 위한 점수를 생성합니다.모델 학습을 위해 실제 학습 데이터는 개인정보보호 제약으로 인해 공개할 수 없으므로 무작위 데이터를 생성하는 스크립트(`create_random_data.sh`)를 제공합니다. 무작위 데이터를 생성한 후 `run_local.sh` 스크립트를 실행하여 적은 횟수의 반복으로 모델을 학습시킬 수 있습니다. 모델 학습은 YAML 파일(`local_prod.yaml`)을 통해 구성됩니다."헤비 랭커" 모델의 아키텍처는 병렬 마스크넷이며, 자세한 내용은 연구 논문에서 확인할 수 있습니다 [https://arxiv.org/abs/2102.07619&#8203;`oaicite:{"index":0,"metadata":{"title":"the-algorithm-ml/projects/home/recap](https://arxiv.org/abs/2102. 07619&#8203;%60oaicite:%7B%22index%22:0,%22metadata%22:%7B%22title%22:%22the-algorithm-ml/projects/home/recap) at main - twitter/the-algorithm-ml - GitHub","url":"[https://github.com/twitter/the-algorithm-ml/tree/main/projects/home/recap","text":"이](https://github.com/twitter/the-algorithm-ml/tree/main/projects/home/recap%22,%22text%22:%22This) 프로젝트는 'For You' 타임라인에서 사용되는 '무거운 순위 지정자'입니다. 이는 후보 검색 및 라이트 랭커를 거쳐 트윗의 순위를 생성하는 데 사용됩니다(점수가 매겨진 후 다른 휴리스틱이 사용되므로 트윗의 최종 순서는 직접적으로 최고 점수 -> 최저 점수가 아님에 유의하세요). \이 모델은 2023년 3월 초에 트위터 'For You' 타임라인의 대다수 사용자에게 사용된 순위 모델을 캡처한 것입니다. 트위터 코드베이스의 다른 부분과 독립적으로 실행되도록 해야 하기 때문에 프로덕션 모델과 약간의 차이가 있을 수 있습니다. \n\n모델은 트윗과 타임라인이 구성되는 사용자를 설명하는 다양한 기능을 입력으로 받습니다(자세한 내용은 FEATURES.md 참조). 모델은 트윗을 표시할 경우 사용자가 어떻게 반응할지에 대한 여러 이진 예측을 출력합니다. \n\n그것들은 다음과 같습니다: "recap.engagement.is\_favorited": 사용자가 트윗에 마음에 들어요 표시를 할 확률입니다. "recap.engagement.is\_good\_clicked\_convo\_desc\_favorited\_or\_replied": 사용자가 이 트윗의 대화를 클릭하고 답글을 달거나 마음에 들어요를 표시할 확률입니다. "recap.engagement.is\_good\_clicked\_convo\_desc\_v2": 사용자가 이 트윗의 대화를 클릭하고 최소 2분 이상 머무를 확률입니다. "recap.engagement.is\_negative\_feedback\_v2": 사용자가 부정적으로 반응할 확률(트윗 또는 작성자에 대해 '덜 자주 표시'를 요청하거나, 트윗 작성자를 차단하거나 뮤트함) "recap.engagement.is\_profile\_clicked\_and\_profile\_engaged": 사용자가 트윗 작성자 프로필을 열고 마음에 들어요를 누르거나 트윗에 답글을 달 확률입니다. "recap.engagement.is\_replied": 사용자가 트윗에 답글을 달 확률. "recap.engagement.is\_replied\_reply\_engaged\_by\_author": 사용자가 트윗에 답글을 달고 이 답글이 트윗 작성자에 의해 참여될 확률입니다. "recap.engagement.is\_report\_tweet\_clicked": 사용자가 트윗 신고하기를 클릭할 확률입니다. "recap.engagement.is\_retweeted": 사용자가 트윗을 리트윗할 확률. "recap.engagement.is\_video\_playback\_50": 사용자가 동영상의 절반 이상을 시청할 확률(동영상 트윗의 경우) \n\n후보 순위를 매길 때 이러한 예측에 가중치를 부여하여 점수로 합산합니다: "recap.engagement.is\_favorited": 0.5 "recap.eng