この記事は『 X のアルゴリズム・ルール・専門用語について Advent Calendar 2024 』(https://qiita.com/advent-calendar/2024/x-tips )の 3 日目の記事です。
X には、各アカウントごとに『影響力』と同義のステータスがあり、それがポストの拡散度に関係することが分かっています。影響力の低いユーザーのポストは、ほかのユーザーの「おすすめ」に表示されるポストの数が制限されます。
この記事では、影響力が低いユーザーへの制約と、影響力が低くなる原因について説明します。
本記事の内容
・FF 比が 0.6 以上のアカウントは、アカウントの「信頼度」が落ちるためにポストが表示されに・影響力は、アカウントの年齢、アカウント制限の有無、デバイスの状態、FF 比の大きさによって変動します。
・影響力が低いユーザーは、3 つまでしかポストが評価されません。これは最新の 3 つのポストしか、ほかのユーザーに「おすすめ」として表示されないことを意味します。
・ちなみに、認証ユーザー(課金ユーザー)の影響力はつねに最高値である 100 となります。(アカウントが停止されている場合を除く。)
影響力が低いユーザーへの影響
影響力が低いユーザーは、ほかのユーザーに表示させるポストが最新の 3 つまでとなります。ランキング アルゴリズムで考慮されるポストが 3つに制限されるためです。
逆に、影響力の高いユーザーのポストは、アルゴリズムはそれらすべてを考慮します。短期間に大量のポストを投稿したとしても、すべてのポストがほかのユーザーに表示される可能性があります。
以下に、影響力を計算するソースコードを示します。
def getUserMass(combinedUser: CombinedUser): Option[UserMassInfo] = {
//(中略)
if (userId == 0L || user.map(_.safety).exists(_.deactivated)) {
None
} else {
val mass =
if (isSuspended)
0
else if (isVerified)
100
else {
var score = deviceWeightAdditive * 0.1 +
(if (hasValidDevice) deviceWeightAdditive else 0)
val normalizedAge = if (age > 30) 1.0 else (1.0 min scala.math.log(1.0 + age / 15.0))
score *= normalizedAge
if (score < 0.01) score = 0.01
if (isRestricted) score *= restrictedWeightMultiplicative
score = (score min 1.0) max 0
score *= 100
score
}
val friendsToFollowersRatio = (1.0 + numFollowings) / (1.0 + numFollowers)
val adjustedMass =
if (numFollowings > threshAbsNumFriendsUMass &&
friendsToFollowersRatio > threshFriendsToFollowersRatioUMass) {
mass / scala.math.exp(
constantDivisionFactorGt_threshFriendsToFollowersRatioUMass *
(friendsToFollowersRatio - threshFriendsToFollowersRatioUMass)
)
} else {
mass
}
Some(UserMassInfo(userId, adjustedMass))
}
}
出典:GitHub - X (fka Twitter).『twitter/the-algorithm』
https://github.com/twitter/the-algorithm/blob/main/src/scala/com/twitter/graph/batch/job/tweepcred/UserMass.scala
以下に、評価するポスト数を 3 にする設定値と、影響力のしきい値を定義しているソースコードを示します。ユーザーが持つ影響力の値が 65 を超えるユーザーは「信頼できる」と見なされ、フィルタを回避できます。
// for anti-gaming we want to limit the maximum amount of hits the same user can
// contribute. Set to -1 to disable the anti-gaming filter. Overrides the setting in
// ThriftSearchQuery
35: optional i32 maxHitsPerUser = 3
// if the tweepcred of the user is bigger than this value it will not be excluded
// by the anti-gaming filter. Overrides the setting in ThriftSearchQuery
36: optional i32 maxTweepcredForAntiGaming = 65
出典:GitHub - X (fka Twitter).『twitter/the-algorithm』
https://github.com/twitter/the-algorithm/blob/main/src/thrift/com/twitter/search/common/ranking/ranking.thrift
影響力が低くなる条件
影響力は次の要素によって低くなります。
- 作成から30日未満の新規アカウントである。
- シャドウバン、機能制限、凍結等、アカウントが制限されている
- デバイスの状態は有効か(※詳細な情報なし)
- フォロワー数よりフォロー数が多い(FF 比が大きい)
この施策のおかげで、スパムアカウントとして無尽蔵に作成されるアカウントは影響力を小さくされ、30日を立たずに凍結され、そのまま消滅します。
スパム行為の疑いがあるアカウントも、シャドウバンや機能制限によって行動を制限するほか、影響力を下げてタイムラインを汚さないようにします。
相互フォローによってフォロワーを増やした人をインフルエンサーとして扱いません。彼らは発信が認められているのではなく、ただ時間を使ってフォロワーを集めただけです。
以上が、アカウントの『影響力』と、影響力が低いアカウントのポスト表示制限です。