なっぱ箱

ゲームとか読書の感想とか時々技術系の話とか

noteの「ランキング設計はどうあるべきか?」を読んだ

Todoisの読物タグに突っ込んだまま読むのを忘れていたnoteの「ランキング設計はどうあるべきか?」を見つけたのでちょっと読んでみたので後から見返すように概要をメモ書き。元記事は下記の3つ。

note.mu

note.mu

note.mu

PVランキングの本質

  • 本質的に収奪的な構造である
    • 収奪的 = 勝者がすべてを独占してしまう事
    • ランキングが上がる → 露出が増える → PVが増える → ランキングが上がる
  • 階層(クリエイターの地位)を固定する
    • ランキング常連になる → フォロワーが増える → PVが増える → ランキング常連を維持する
  • 収奪的なシステムがもたらすもの
    • 記事ごとの露出格差の拡大
    • 同様にフォロー格差の拡大と階層固定
  • 格差が拡大することによって新規ユーザーにとって極端に不利な状況発生する

公平で分散的なランキング構造

  • そもそもとして競争原理として格差は当然だが、その格差を極端化したり固定化するシステム設計はよくないという話
  • 実装する場合はこれらの2つを解決する必要がある
    • ランキングは注目を独占してはならない
    • ランキングのトッププレイヤーは新陳代謝しなければならない

正しいランキング設計のためにどうするか

  • 「ランキング」以外の名称を用いる
  • 時間による重力的な減衰モデルを用いる
    • 投稿されてからの経過時間に係数をかけ合わせてマイナスのスコアにする
  • 読了率を加味する
    • こうすることでタイトルのインパクトだけで注目を集めたものは評価が低くなる
    • この手法は階層固定性そのものは解決しないことに注意
  • 順位のシャッフル
    • 単純に上位XX位などでシャッフル表示
    • 上位XX位間の格差は是正できるが、「ランカーであること」そのものの是正はできない
  • 上位XXXX位からランダムにXX件を抽出する
    • ランキング範囲を拡大しその中からランダムに抽出する(500位内から100件など)
    • ランキングの収奪性、階層の固定化どちらも軽減できるが、軽減しすぎてしまう場合もある
      • 格差を完全にフラットにすると良いコンテンツである意味がない
  • ランダム抽出時に、スコアに応じた重さを与える
    • スコアが高いほどランダム時の出現率を高くする
    • パラメーターの変更で柔軟にコントロールできるのが強み
  • 小選挙区制を導入する
    • カテゴリ単位などでランキング作成して合算
  • 比例代表制を導入する
    • 小選挙区ごとのユーザー人口を加味してランキングの選出をする
    • メジャージャンルであるほど多く、マイナーであれば少なく
  • 2つ以上のスコアをブレンドする
  • ランキングに複数のユーザークラスタブレンドする
    • 新規ユーザーとベテランユーザーなどを混ぜ合わせてランキングを作成
    • 階層の固定化是正にきく
  • 人のキュレーションをブレンドする
    • 手動調整。バランス調節ができるが依怙贔屓もできるため慎重に
  • PVなどスコアに、コンテクストに応じた重み付けを行う
    • TwitterなどのSNSからの流入は加点を1/10とすればバズった影響を極小化できる
  • ペイジランクを導入する
    • Googleラリー・ペイジ提言の「良い記事を描いてる人がライクしている記事は、良い記事」といったルール
    • 精度が高くて使い勝手もいいが、ルールをハッキングされやすいのが難点
  • 友達の読了率、スキ率からランキングを生成する
    • 自分をフォローしている人、友達の評価からランキングを生成する
    • 精度が上がりそうだが同じような価値観で固まってしまう
  • 読者のリアクション率を加味する
    • 「リアクション数/読了率」といった式を使うとスコアを高めることができる
    • ただ良質で少数のユーザーを抱えていると有利だったりするので他のアルゴリズムと合算が必要

だだーっと記事の中身を羅列しただけだが、今後もしランキングの作成を行うことがあった場合は改めて参考にしようと思う。 この記事自体はnoteのようなコンテンツ投稿サービスでの話なので、他種サービスになると他の手段の検討の必要は出てくるとは思うけども。