SPSP — 理論編 2: 評価

SPSP は精度をデータで確認しながら設計している。本ページでは、その検証方法、 主要パラメータがなぜその値になっているか、既存ランキングとの精度比較、そして採用パラメータ一覧をまとめる。 各表とその解釈だけでページが閉じるよう書いてあるので、内部資料を別途読まなくても判断できる。

1. 精度評価の方法

1.1 テストセット

精度測定は 直近 6 ヶ月で参加者 48 名以上のガチ大会 を test に使う。 具体的なセクションごとの test 大会数は表のキャプションに明記している。

1.2 Rolling evaluation (リーク防止)

評価で最も重要なのは「未来の情報を使った予測になっていないか」。 SPSP では大会を時系列順に処理する:

  1. 大会 T の開始日時を取得
  2. T 開始より前のデータだけで全プレイヤーの SPSP レートを再計算
  3. そのレートから T 参加者の予測順位を生成
  4. T の実際の結果と比較して精度を測る
  5. 次の大会 T+1 に進む

この方式で「学習データに test 大会が混ざる」ことを構造的に排除している。 本番運用と同じ条件で精度を測れる。

1.3 評価指標

順位予測のずれを 2 通りで測る:

さらに「上位何位までを評価対象にするか」を scope K で分けて見る: K = 8, 16, 32, 64, 128, 256, 512, 1024。 Top 8 だけ見ると最上位帯の精度、K=1024 だと全体の精度になる。

なぜ scope を分けるか: 上位帯と中下位帯では「重要な情報」が違う。 Top 8 は「強い人同士の試合の質」、Top 256 は「どの帯にいるか」。 全体平均だけ見ると、両方の弱点が見えなくなる。

2. σ floor のチューニング (直対評価)

σ floor の動機 (なぜ不確実性に下限を設けるか) は 理論編・概念 §2 で説明済み。 ここではその下限値をどう決めたかをデータで示す。

2.1 sweep 結果

直近 6 ヶ月の test 95 大会で、σ floor を 0 〜 4 まで動かして Kendall τ を測った結果:

σ floor K=8K=16K=32K=64 K=128K=256K=512K=1024
0 (なし)0.32050.39340.47200.59510.64160.66170.66820.6690
2.350.33230.38530.47140.59780.64270.66320.66940.6701
2.500.33620.38340.47170.59640.64250.66310.66930.6701
2.650.33940.38020.47080.59510.64200.66300.66910.6699
3.00 (採用値)0.34360.38120.46600.59360.64100.66240.66870.6695
4.000.33040.38130.46370.58840.63620.65830.66470.6656

2.2 何が分かるか

トレードオフ: σ floor は「直対評価の応答性 vs 安定性」のダイヤル。 上げれば最近の強さに敏感、下げれば過去の実績を尊重。 SPSP は「Top 8 帯のシーディング精度が大会運営にとって最重要」と判断して、 Top 8 τ が σ=0 に対し +0.023 改善する σ floor = 3.0 を採用した。

3. ensemble 重み付けのチューニング

3.1 sweep 結果

順位評価と直対評価の重み比 (rank average の重み) を変えて Kendall τ を測った結果:

重み比 (順位 : 直対) K=8K=16K=32K=64 K=128K=256K=512K=1024
1.0 : 0.0 (順位のみ)0.35610.38140.47150.60800.65570.67710.68360.6844
0.5 : 0.5 (現状)0.32770.41460.49390.62770.67480.69590.70200.7027
0.4 : 0.60.33450.41280.49160.62870.67560.69660.70280.7035
0.2 : 0.80.35300.41410.49260.62990.67580.69660.70260.7034
0.0 : 1.0 (直対のみ)0.35230.41290.49240.63040.67410.69460.70050.7012

3.2 何が分かるか

「単純平均」の理由: 0.4 : 0.6 のほうがわずかに上だが、差はノイズレベル。 シンプルさを優先し、調整パラメータを減らすため 0.5 : 0.5 (= rank avg) を採用した。

4. 既存ランキングとの比較

本番の SPSP (5 層順位評価 + σ floor 3.0 + レア/常連ゲート付き直対評価の rank avg ensemble) を、 同じ rolling evaluation の枠組みで既存ランキングおよび代表的なレーティング手法と比較した。 test は 2025-11-01 〜 2026-05-01 に開催された参加者 100 名以上の 38 大会 (B〜E クラスの下位ブラケットは除外)。

手法 PairAcc ↑Kendall τ ↑Spearman ρ ↑ |SPR| ↓
SPSP 本番 (順位評価 + 直対評価 ensemble).871.684.8341.018
SPSP 順位評価 単体 (5 層 TJPR).863.669.8211.062
SPSP 直対評価 単体 (σ floor + レア/常連ゲート).872.685.8351.021
OpenSkill BT 単体 (σ floor / ゲートなし).854.651.7951.054
Glicko2 単体 (σ floor / ゲートなし).855.651.7961.059
Elo 単体 (ナイーブ / K=32 固定).847.637.7841.092
JJPR v3.821.589.7381.192

PairAcc / Kendall τ / Spearman ρ は順位相関 (大きいほど予測順位と実際の順位が一致)。 |SPR| はシード位置と実際の placement の絶対誤差 (W2W 換算、小さいほど精度が高い)。

4.1 何が分かるか

4.2 UltRank との比較 (UltRank プレイヤー 200 名に絞った場合)

UltRank はカバー人数が日本に対して約 200 名と限定的なので、100 人規模以上の大会では大部分の参加者が未ランクとなる。 そこで「UltRank がランクしている 200 名どうしのペアだけ」に対象を絞って、各手法の精度を比較した (= UltRank に有利な比較条件。test 大会のうち UltRank ランカーが 2 名以上参加した 31 大会):

手法 PairAcc ↑Kendall τ ↑Spearman ρ ↑ |SPR| ↓
SPSP.743.466.6082.003
UltRank 2025 Japan.716.414.5502.038

UltRank のホームグラウンド (= 自分がランクしている上位 200 名どうし) でも、SPSP の方が τ で +0.05、|SPR| で −0.04 良い結果。 SPSP は上位帯の細かい序列も UltRank より高精度に予測できている。

5. 採用パラメータ一覧

SPSP の本番運用で採用している主要パラメータを以下に列挙する。

5.1 直対評価 (BradleyTerryFull)

パラメータ意味
μ (initial)0レアプレイヤーのレート初期値
σ (initial)25/3 ≈ 8.333レアプレイヤーの不確実性初期値 (OpenSkill 既定)
β25/6 ≈ 4.167スキル差 1 単位あたりの試合結果ぶれ幅 (OpenSkill 既定)
τ (drift)0試合間のレート drift (= 0、無視)
σ floor3.0各更新後の σ 下限。§2 で sweep 検証
z (ordinal)3ordinal = μ − z·σ の保守係数
GATED_M_TOUR20累計大会出場数 ≤ 20 の人はレア扱い (= 平日大会も学習対象)。> 20 は常連 (= 休日大会のみ学習対象)
ELO_PER_UNIT29.48ordinal 1 単位を Elo 換算する係数
Elo offset+1000表示 Elo = ordinal × ELO_PER_UNIT + 1000

5.2 順位評価

パラメータ意味
LOOKBACK3 年大会の集計対象期間 (3 年以内)
min entrants (Lv1-Lv2)8集計対象とする大会の最少参加人数
min entrants (Lv3-Lv4)25Lv3/Lv4 の追加フィルタ
min entrants (Lv5)49Lv5 の追加フィルタ
weekend filter (Lv4, Lv5)有効大会期間中に土日祝を含むものだけ集計 (プレ大会名 prefix の大会は除外)
population top-N (Lv2)2048Lv1 で上位 2048 名に絞ったうえで再計算
population top-N (Lv3)1024Lv2 で上位 1024 名 → Lv3
population top-N (Lv4)512Lv3 で上位 512 名 → Lv4
population top-N (Lv5)256Lv4 で上位 256 名 → Lv5
Lv1 (base, floor, topN, pos_decay)(1700, 350, 1, 0.3)gain 関数 base / floor、フル評価上位件数、それ以降の減衰率
Lv2-5 (base, floor, topN, pos_decay)(1900, 700, 3, 0.3)Lv2 以降はパラメータも厳しく (base/floor 上げ、topN を 3 に拡張)
age decay0.97d/30大会開催日からの経過日数 d による減衰 (= 毎月 3% 減衰)
ε (gain epsilon)0.01ラウンドポイントの零回避項
順位評価 Elo 倍率100順位評価スコアを Elo 風数値に変換する倍率
順位評価 Elo オフセット1500順位評価スコアの基準値

5.3 総合評価 (ensemble)

パラメータ意味
方式rank average順位評価ランクと直対評価ランクの単純平均
重み1 : 1順位評価:直対評価 = 1:1 (= §3 で決定)
片側ノーデータ補完n_players + 1片方の評価にしか出てこない人は、欠けている側を「全プレイヤー数+1」で穴埋め
同順位タイブレークスコア平均降順平均順位が並んだ場合は順位評価/直対評価の Elo 換算スコアの平均で降順ソート

6. その他の検証 (未採用の選択肢)

本番に取り入れなかった検証もここで共有する。

試したこと結果採用?
BT 単体の σ floor を直対精度最大化に合わせる Top 8 でさらに勝つが Top 16+ で大幅劣化 不採用
時間減衰 rate = 0.95 (= 月 5% 減衰) 0.97 (月 3%) が一貫してベスト。0.95 は古い大会の情報を捨てすぎる 不採用 (0.97 採用)
JJPR を加えた 3 ランキング ensemble 精度向上が見られず、複雑性だけ増える 不採用
RRF (Reciprocal Rank Fusion) で ensemble 単純 rank avg と差が出ず (τ ≈ 0.649 で同水準) 不採用 (rank avg のシンプル版)
順位評価の pos_decay を 0.1 〜 1.0 で sweep 0.1 〜 0.6 で τ ≈ 0.649 ± 0.001 (差なし)。1.0 のみ大幅劣化 0.3 採用 (中庸)

τ ≈ 0.65 前後がこの手法群の天井で、順位評価側のパラメータを動かしてもこの水準を超えるのは難しい。 SPSP は「上限近辺で安定」する組み合わせを採用している。

もっと知りたい人へ

パラメータの正式な数式は次の「理論編・数式」で。
概念から復習したい場合は前の「理論編・概念」で。