BPIManager (以下 BPIM ) が提供する BPI について、理論をご紹介します。
BPI とは、norimiso ( @norimisoIIDX ) 氏が提唱された、 beatmania IIDX のスコア力を一般化して評価するための指標です。
全国歴代 1 位のスコアを 100 、皆伝平均を 0 として、指数関数的にスコアのお上手度を評価します。
ここで「指数関数的に」と言うのは、歴代スコアに近づくほどスコア更新の難度が上がるという考え方に基づき、BPIが高くなるほどEXスコアにおける1点の重みが増す仕様となっているからです。
具体例を出すならば、AA(A) を 3000 点から 3010 点まで 10 点伸ばすことより、歴代近傍である 3640 点から 3650 点まで 10 点伸ばすほうが難しい、とイメージいただければ分かりやすいと思います。
BPI の概念および計算式については、norimiso 氏のWebサイト(外部サイト)が詳しいため、こちらも併せてご確認ください。
BPI を活用するメリットとして、複数楽曲間におけるスコアの上手さを平準化できることが挙げられます。
たとえば、DIAVOLO(A) で BPI 40 として評価される EX スコアは 3072 点で、スコアレートで表すと 88.02% です。
一方、 AA(A) で BPI40 として評価される EX スコアは 3572 点で、スコアレートで表すと 97.38% です。
BPI を用いると、 DIAVOLO(A) で 3072 点を出すのは、 AA(A) で 3572 点を出すのと同じくらい上手であることが示されます。
スコアレートではこれら 2 つのスコア間には大きな隔たりがありますが、ご存知の通り DIAVOLO(A) はスコアを出すことが難しい一方で AA(A) はそうではなく、ユーザーの感覚に近いものになっていることでしょう。
この考え方を逆手に取れば、 AA(A) で 3572 点を出す実力がある人は、理論上 DIAVOLO(A) で 3072 点を出す可能性があるとも言えます(実際は得意な譜面傾向により左右されるでしょうが)。
このように、ある楽曲で達成したスコアと同じ水準のスコアを別楽曲で算出しリコメンドできるのも、 BPI ならではの強みです。
なお、 BPI を有効的に活用いただけるプレイヤー層は、上記で示した BPI の特性上、ある程度のスコア力を有する方に限られてまいります。
※上記例における算出 BPI は 2021/7/28 時点におけるものです。
BPIM においては、上述した本来の BPI の定義に数点の独自の改変を加えています。
この項目では、それらについて解説しています。
単曲 BPI の算出においては、 「歴代近傍において EX スコア 1 点の重みが増す」 ことを再現するため、 PGF を自然対数に代入したうえで 1.5 乗しています。
近年、LIGHTNING MODEL の登場およびプレイヤーレベルの向上等により、 BPI が考案された当時と状況が変わっており、より実情に即し BPI を算出するため下記変更を反映しています。
BPI = 100*(ln(S’)/ln(Z’))^p (s >=k)
BPI = -100*(-ln(S’)/ln(Z’))^p (s < k)
上記の単曲 BPI の公式につき、目的変数をp、説明変数を各BPIおよび上式ln(S’)(s=各BPIに相当するEXスコア)として、非線形最小二乗法を用いた単回帰分析により p 値を設定しています。
説明変数として用いるプレイヤーデータは、eAMUSEMENT 上で確認できる全プレイヤーのスコアデータをスクレイピングにより取得しています(スコアを非公開にしているプレイヤーを除く)。
この結果、(参考)図のように、算出される BPI と実順位における分布の乖離を是正しています。
(参考、x 軸 : EX スコア、y 軸 : BPI)
p = 1.5 | p = 1.175 | BPIM における現定義 |
---|---|---|
本来、 BPI 算出に用いる変数は次の 4 つです。
上記の k 値について、 BPIManager では、全皆伝プレイヤーにアリーナランク上位 5000 名を加えた集合の平均を採用しています。
本来 BPI 算出の対象となって然るべきプレイヤーが皆伝を取得していないケースが非常に多いため、それに対応するための措置となっています。
全皆伝プレイヤーおよびアリーナランク上位 5000 名のスコアデータは eAMUSEMENT サイトよりスクレイピングしたものを利用しており、個別設定でスコアデータを非公開にしているプレイヤーは算出対象に含まれていません。
総合 BPI の算出における、未プレイ楽曲の取り扱いは norimiso 様提唱の原定義においても不定となっております。
そのため BPIManager の独自実装として、総合 BPI の算出において未プレイ楽曲は BPI = -15 として取り扱っています。
詳細は下記リンクをご確認ください。
https://github.com/BPIManager/BPIManager-Core/pull/5