S
StreamerSeeker — Fiche No.02

SCORING

StreamerSeekerは同時接続数(同接)の多さではなく、視聴者数が「伸びている勢い」で 配信をランキングします。同接が少なくても、急に伸びている配信は上位に来ることがあります。 ここでは、その勢いスコア(momentum_score)が何を見ているかを説明します。

viewers_per_minute

配信開始からの平均ペース

配信開始からこれまでの、1分あたりの平均視聴者獲得数。「今」ではなく「これまでの平均」を見る基礎指標。

growth_5m

直近5分の伸び

直近5分間で増えた(減った)視聴者数。最も「今」に近いシグナルだが、揺らぎも大きい。

growth_30m

直近30分の伸び

直近30分間で増えた(減った)視聴者数。5分よりも揺らぎが均され、傾向を見るのに向く。

growth_rate_30m

30分前との比率

30分前と比べ何%増えたか。配信規模に依存しないため、小規模な配信でも公平に評価できる。

acceleration_bonus

加速度ボーナス

30分の平均ペースより、直近5分が加速しているかどうかの補助点。「伸び始めた瞬間」を捉える。

「直近の伸び」を人数の絶対数のまま使うと、もともと同接が多い配信が伸び率に関係なく 自動的に有利になってしまいます。そこで、人数の絶対数(平均ペース・5分の伸び・30分の伸び)は 平方根で圧縮してからスコアに足し合わせています。人数が4倍・9倍・100倍に 増えても、スコアへの寄与はそれぞれ2倍・3倍・10倍にしかなりません。

+100人
人数
+10点
+400人
人数
+20点
+900人
人数
+30点
+10,000人
人数
+100点
増えた人数 スコアへの寄与(平方根で圧縮後)

平方根で圧縮しても、絶対数3項目(平均ペース・5分の伸び・30分の伸び)は理論上は無制限に 伸びます。これに対抗するため、配信規模に関係ない「率」の指標(30分前との比率・加速度 ボーナス)には、固定の上限はあるものの圧縮をかけず重みを大きく設定しています。

30分前との比率 + 加速度ボーナス(率ベース)理論上限 900点
平均ペース + 5分の伸び + 30分の伸び(絶対数ベース)実際の配信規模では数十〜数百点程度

率ベース2項目の理論上限(900点)が、絶対数3項目の現実的な値(数十〜数百点程度)と 同程度かそれ以上になるよう、意図的にバランスを取っています。

実際の計算式(src/score/momentum.ts)にそのまま数値を入れた例です。 同接数では50万人差がついていても、伸びの勢いが大きい方がスコアで上回ります。

小規模・急成長
同接500人 / 配信開始30分
同時接続数
500人
直近5分の伸び
+200人
直近30分の伸び
+400人
30分前との比率
+400%
勢いスコア
702.4
VS
大規模・緩成長
同接5万人 / 配信開始180分
同時接続数
50,000人
直近5分の伸び
+300人
直近30分の伸び
+1,500人
30分前との比率
+3.1%
勢いスコア
181.0
もっと詳しく(既知の限界)
  • 重み・上限・閾値はすべて経験的な調整で、統計的な裏付けや系統的なバックテストは行っていません。
  • 離脱率は原理的に不可視です。直近の伸びは純増減の結果しか見えず、新規流入と離脱の内訳は分かりません。
  • 各取得サイクルは独立に計算されるため、同接数のわずかな揺らぎがそのままスコアの揺らぎになります。
  • 「本物のバイラル成長」と「予定された一時的な集客(コラボ開始直後の一斉流入等)」は区別できません。
  • 「休止からの回復」は「終始横ばい」より大幅に高く評価されます。同接が一時的に落ちてから元の水準まで戻る配信は、その回復区間でスコアが急騰します。

/dashboard の「安定」バッジは、このスコアではなく同接数自体の推移を見るため、こうした一過性の急増・急減を「安定」とは判定しません。

配信スコア(期待値モデル)

勢いスコア(momentum_score)が「今ライブ中の配信」をリアルタイムに見るのに対し、こちらは 配信が終了した後に、その1本の配信が「統計的に期待される水準と比べて どれだけ伸びたか」を振り返るための指標です。スポーツ分析でよく使われる期待値モデル (xG=期待ゴール数)と同じ発想で、時間帯・曜日・配信の長さ・チャンネル規模・配信者自身の 普段の実績から「このチャンネルが、この条件で配信したら統計的にどれくらいのピーク同接数が 期待されるか」を重回帰(最小二乗法)で予測し、実際の値との差をスコアにします。 各配信者の配信者ディレクトリから個別ページに進むと確認できます。

is_weekend

曜日(土日かどうか)

配信開始がJSTで土日かどうか。土日は同接が伸びやすい傾向をあらかじめ補正する。

hour_sin / hour_cos

配信開始時刻

配信開始時刻(JST)を24時間周期で表現したもの。深夜・早朝など、時間帯による伸びやすさの違いを補正する。

log_duration

配信時間の長さ

配信時間(分)の対数。長時間配信ほどピーク同接が伸びやすい傾向を補正する。

log_subscribers

チャンネル登録者数

登録者数の対数。チャンネルの規模そのものによる下駄(大規模チャンネルほど有利になる効果)を補正する。

log_channel_avg

配信者自身の過去平均

同チャンネルの他配信のピーク同接平均(対象配信自身は除く=leave-one-out)の対数。配信者自身の普段の地力を補正する。

この回帰モデルは、蓄積されている全配信者のデータをまとめて1本だけ学習する設計のため、 係数(期待値の基準)はデータが増えるたびに変わります。momentum_scoreの具体例(上の セクション)のように毎回同じ数値が再現される検算済みの例ではなく、あくまで「読み方」の イメージとして見てください。

深夜・短時間・中規模チャンネルの配信
登録者5万人・配信45分・土曜深夜2時開始(イメージ)
実際のピーク同接
3,200人
統計的に期待されるピーク同接
900人
配信スコア
期待の360%
もっと詳しく(算出条件・既知の限界)
  • 終了済みの配信が全体で30件(MIN_STREAMS_FOR_REGRESSION)に満たない間は、回帰自体が成立せず算出できません。統計的な理想(70〜140件)にはまだ届いていない暫定的な閾値です。
  • 回帰係数は全チャンネルのデータをプールしてグローバルに1本だけ学習しています。「箱(org)ごとに時間帯の効きやすさが違う」といった交互作用までは捉えられません。
  • 配信記録が1件しか無いチャンネルは、配信者自身の過去平均(leave-one-out)の元データが無いため、データが蓄積されていても算出対象になりません。
  • ピーク同接数だけを見ているため、配信全体の伸び方の安定性(一瞬だけ跳ねたのか、終始高かったのか)は区別しません。
  • 登録者数スナップショットが無いチャンネル(登録者数フェッチ未実行・登録者数非公開)も対象外です。

詳細な計算式は docs/stream-performance-score-logic.md を参照してください。