X 上級者

X アルゴリズム:FF比のデメリットは?0.6以上のアカウントはポストが表示されにくくなる話。

この記事の内容

  • FF 比が 0.6 以上のアカウントはポストが表示されにくくなります。
  • 理由は、アカウントの「信頼度」が落ちるためです。
  • このペナルティはフォロー数が 2500 人のアカウントが対象です。

X のアルゴリズムが公開され、FF 比がポストの表示に影響する重要な要素であることが明らかになりました。この記事では、FF 比によって起こるアカウントへのデメリットについて説明します。

※FF 比とは、フォロー数とフォロワー数の比率です。例えば、フォロー数が 600 人でフォロワー数が 1000人 の場合は 0.6 となります。FF 比が大きいアカウントとは、一般的にフォロー数の方が多いアカウントのことを意味します。

 

FF 比が 0.6 以上のアカウントにペナルティ

結論、FF 比が 0.6 を超えるアカウントは、ポストがほかの人のタイムラインに表示されにくくなります。

タイムラインは、たくさんのポストから各ユーザーごとに「おすすめ」のポストが表示されています。しかし、FF 比が 0.6 を超えるアカウントは、自身のポストがほかのユーザーのおすすめとして表示されにくくなります。ポストの表示機会が下がるため、アカウント認知が低下したり、フォロワーが増えにくくなったりと、さまざまな悪影響を引き起こします。

 

ただし、このデメリットを受けるのはフォロー数が 2500 以上のアカウントに限られます。

ソースコードはこちら

 

 

タイムラインに表示されにくくなる理由

ポストがほかの人のタイムラインに表示されにくくなる理由は、アカウントが持っている「信頼度」が落ちるためです。

タイムラインに表示されるツイートはさまざまな要因によって決定されますが、そのひとつに「信頼度」があります。そして、X は信頼度が高いアカウントのポストを優先的に表示します。逆に、信頼度が低いアカウントのポストは表示されにくくなります。

 

これは、大量のフォローを行うスパムアカウントや Bot を排除するための合理的な方法です。影響力のあるインフルエンサーはフォロー数に比べてフォロワー数が多く、そのポストに需要があることが明確です。

 

 

「信頼度」はどれくらい落ちるのか?

では、FF 比によってどれくらい信頼度は落ちるのでしょうか。アカウントが持っているスコアを100とした場合、次のとおりです。

FF 比 スコア(約)
0.6  100(最大値)
0.7 50
0.8 25
0.9 15
1.0 5
1.1 3
1.2 2(最低値)

※アルゴリズム上のスコアの最低値は「2」です。

 

FF 比が大きいほどアカウントスコアは下がります。フォロー数とフォロワー数が同じでも、信頼度がほぼ最低値になることから、FF 比がかなり重要な要素であることが分かります。

 

--

 

誤解のないように言っておきますが、信頼度はタイムラインに表示するポストを選定するための要素のひとつでしかありません。ですので、「信頼度が低いからポストが見られない。」というのは正確ではありません。信頼度が 50 %減ることは「表示されるポストが50%減ること」にはならないからです。

また、信頼度によってポストの表示がどれくらい下がるのかは公開されていません。現状、アカウントスコアは「あくまで表示する確率を決める要素のひとつである」くらいに思っておくのが良いでしょう。

 

 

アカウントが持っているスコアとは

上記の表は、アカウントが持っているスコアを100としていますが、100に満たないユーザーもいます。

この記事では詳細な計算は省略しますが、ソースコードからはアカウントが持っているスコア───X 公式ではユーザーの「質量スコア」と呼ばれます───は、アカウントの年齢、フォロワーとフォローの数、デバイスの使用状況、安全性の状態(制限、一時停止、検証済み)など、さまざまな要素によって決定されます。

 

ちなみに、認証ユーザー(課金者)は常に最高のスコアである100です。

ソースコードはこちら

 

 

Appendix

対象のソースコード

アカウントの「信頼度」を計算するコードは以下の部分です。

 Scala
// these constants are take from repo reputations, config/production.conf
private val threshAbsNumFriendsReps = 2500
private val constantDivisionFactorGt_threshFriendsToFollowersRatioReps = 3.0
private val threshFriendsToFollowersRatioUMass = 0.6
private val maxDivFactorReps = 50
/**
* reduce pagerank of users with low followers but high followings
*/
def adjustReputationsPostCalculation(mass: Double, numFollowers: Int, numFollowings: Int) = {
    if (numFollowings > threshAbsNumFriendsReps) {
        val friendsToFollowersRatio = (1.0 + numFollowings) / (1.0 + numFollowers)
        val divFactor =
        scala.math.exp(
            constantDivisionFactorGt_threshFriendsToFollowersRatioReps *
            (friendsToFollowersRatio - threshFriendsToFollowersRatioUMass) *
            scala.math.log(scala.math.log(numFollowings))
        )
    mass / ((divFactor min maxDivFactorReps) max 1.0)
    } else {
        mass
    }
}

 

アカウントの「質量スコア」を計算するコードは以下の部分です。

 Scala
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
    }

 

 

参考情報

出典:GitHub. “twitter/the-algorithm”(2023/10) - https://github.com/twitter/the-algorithm/tree/main

 

 

以上です。

-X, 上級者

© 2024 X の教科書