English version

BPIについて

概要

BPI(Beat Power Indicator)とはBeatmania IIDXというゲームの腕前(SP)を数値化した指標です。
この数値は100点満点で☆12の各曲のスコアを元に算出されます。 100点が全一、0点が皆伝平均となるように計算式が作られています。

☆12のそれぞれの曲のスコアより求められるものを単曲BPIとし、
☆12の曲全ての単曲BPIより算出された総合的なSPの腕前の指標が総合BPIと定義します。

考案者の意図として、総合BPIが50の人と、30の人と10の人の間にある上手さの差は同じである
という風に単純に数値として比較できたらいいなというコンセプトとなっています。

BPIの算出方法

BPIはかなり複雑な数式を用いて算出されます。
以下に算出方法を示します。

[1]PGF(Pika-Great-Function)の説明

BPIを算出するにあたって不可欠なPGFという関数について説明します。
PGFとは日本語に直すとピカグレ関数です。
これは、あるスコアレートを出すためには、何ノーツに1回黄グレを出していいのかを求める関数です。
PGFは以下のように定義されます。

${\rm PGF}(x) = X = 1 + \frac{x-0.5}{1-x}$

例:スコアレート90%を出すためには何ノーツに1回黄グレを出していいのかを求める方法
x = 90% = 0.9をPGFに代入します。
すると
${\rm PGF}(0.9) = 1 + \frac{0.9-0.5}{1-0.9} = 1 + 4 = 5$
より、5ノーツに1個黄グレを出せば90%になると示されました。
これを確かめます。
2000ノーツの曲の90%は、2000*2*0.9=3600です。
5ノーツに1回黄グレを出しながら2000ノーツを叩くと
PG:1600 GR:400
となります。このスコアは1600*2+400=3600
であるため、5ノーツに1回黄グレを出すと確かに90%のスコアが出せることが示されました。

[2]単曲BPIの求め方

単曲BPIを求める方法を示します。
単曲BPIを求めるには以下の情報が必要です。

  • その曲の自分のスコア(=s)
  • その曲の皆伝平均(=k)
  • その曲の歴代全一(=z)
  • その曲の理論値(=m)

最初に、PGFに代入するために、s,k,zをmで割ることでスコアレートを求めます。
s/m = s'
k/m = k'
z/m = z'
とします。

続いて、求めたそれぞれのスコアレートをPGFに代入します。
S = PGF(s')
K = PGF(k')
Z = PGF(z')
とします。

※スコアレートが100%の場合には、例外的に、ノーツ数の倍の値をPGFは返します。

ここで、SとZをKで割り、規格化します。
これより、自分のスコアが皆伝平均に比べ何倍光っているか、歴代が皆伝平均に比べ何倍光っているかを求め ることが出来ます。
PGFで求められるのは"何ノーツ"に1回黄グレを出すかであり、20ノーツに1回黄グレを出す人は、10ノーツに1回黄グレを出す人より、倍光らせることが出来る(=倍うまい)という考えの下、このような計算を行いました。
S'=S/K
Z'=Z/K
とします。

ここで単純に100*S'/Z'を行うと、皆伝平均が1点で歴代が100点となりますが、歴代があまりに高いスコアレートであった場合(例:mosaic)にあまりに厳しい点数となってしまったり、逆に歴代のスコアレートがそこまで高くない場合(ex:DIAVOLO)には、そこまで高いスコアでなくとも高い点数が出てしまい、直感と合わない問題があります。
これを抑制するために以下の様な手法を取りました。

・S'とK'を自然対数:lnに代入し、求めた値を1.5乗する

こうすることにより、全一のスコアレートの値によって大きく曲線の形が変わることを抑えました。
同時に、点数が高くなるに連れ、1点の重みが増していくという事情を考慮して数値化することができました。

例:AAのスコアと単曲BPIの関係
BPI:スコアとします。
0点:3209
10点:3386
→10点上げるのに177点必要

90点:3612
100点:3620
→10点上げるのに8点必要

この様に、単曲BPIが高くなるにつれて1点上げるのに必要なスコアも小さくなります。
これは歴代スコア近傍において1点上げるということが非常に大変であることを示しています。

更に、自然対数を用いることで自分のスコアが皆伝平均であればln(S'(=1))=0となることにより、皆伝平均が0点となりました。

これより、単曲BPIは以下の式で求めることが出来ます。負の値の1.5乗は実数域では定義できないため、式が変わります。

${\rm 単曲BPI} = 100 * \frac{ln(S')^{1.5}}{ln(Z')^{1.5}}\ \ (s\geq k)$
${\rm 単曲BPI} = -100 * \frac{-ln(S')^{1.5}}{ln(Z')^{1.5}}\ \ (s < k)$

これにより、皆伝平均が0点、歴代が100点となるような計算式を作成することが出来ました。


[3]総合BPIの求め方

総合BPIは、全ての☆12の単曲BPIと以下の計算式で求められます。
この総合BPIがその人の上手さを数値として表すものとなります。

総合BPIは単純な単曲BPIの平均ではありません。
他の曲が未プレイでも歴代を一つだけ持っている人を考えた際に、平均を取るとでは著しく低い値となってしまいます。
ですが、歴代を持っているという人はそれだけで非常にうまいのではないかと考えることが可能です。
また、全員が☆12を全曲埋めているとは限りません。
単純平均では未プレイの曲があった場合にそれが0とカウントされ、値が低くなってしまい
その人の本来の腕前とは離れた結果となってしまうことが考えられます。

これらを改善するために、二乗平均平方根を応用した以下の計算式で総合BPIは算出されます。
まず、以下のように定義を行います。
n=☆12の曲数
k=累乗係数=log[2](n)
BPI_1,BPI_2,BPI_3....BPI_n:☆12の各曲の単曲BPI

これらを用いて総合BPIの計算式を表すと、以下のようになります。

$ \displaystyle {\rm 総合BPI} = \sum_{a=1}^{n} \frac{{\rm BPI}_{a}^{k}}{n}$

$k=\log_{2}n$としたことで、
1曲だけ歴代を持っていて他の曲が未プレイの人の総合BPIが50になる
ようになります。(計算は省略します)
これで、☆12を全て埋めていなくとも、その人の実力をある程度表すことが可能になると考えました。

単曲BPIが負であった場合には問題が生じるため、負であった場合には
単曲BPIの絶対値をk乗し、その値にマイナスを付ける
という手法を取ることにしました。
しかしながら、これだと大きく皆伝平均を下回る曲があるとそれに引っ張られてしまうため、負の単曲BPIを含む総合BPIの計算を行うときには、

  • 単曲BPIの下限を-15とする(-15がおおよそ十段平均程度であることより)
  • そもそも負の単曲BPIを除外して計算する
  • |単曲BPIの下限値|を全ての単曲BPIに加え計算し|単曲BPIの下限値|を引く
などの工夫をする必要があると思っておりますが、本来BPIはランカーさんの実力を評価するものであるため、この問題に関しては一旦放置しております。


[4]BPIを用いた全国順位の推定方法

BPIを用いることで、
単曲BPIにおいてはそのスコアが全国何位相当なのか、
総合BPIにおいては自分が全国何位相当なのか、
を荒くではありますが推定することが可能となりました。

(a)単曲BPIを用いた順位の推定方法

BPIは定義として、100点が歴代=1位、0点が皆伝平均となっています。
copula終了時の皆伝取得人数は5232人でした。これよりBPI0=2616位(皆伝取得者の半数)と定義しました。
また、100点→90点→80点→70点・・・となる毎に順位が同じだけ乗算されていくといったように定義を行いました。

これらの条件を用いると、単曲BPIを用いた順位は以下のようにして推定されます。 $単曲順位 = 2616^{\frac{100-{\rm 単曲BPI}}{100}}$

この式を用いると、単曲BPIと順位は以下の様な関係と推定されます。
100=1位
90=2.2位
80=4.9位
70=10.6位
60=23.3位
50=51.2位
40=112.4位
30=246.9位
20=542.2位
10=1190.9位
0=2616位(皆伝平均)
-10=5746位


(b)総合BPIを用いた全国順位の推定方法

総合BPIを用いた全国順位の推定方法は、経験的に求められました。
copula終了時のDOLCE.さんのスコアを読み込み、総合BPIを算出した結果、DOLCE.さんの総合BPIは約95でした。 ここで、DOLCE.さんが全国1位相当であるとし、同様に0点が皆伝平均である。とし、単曲BPIと同様に式を求めると以下のようになりました。
$総合順位 = 2616^{\frac{95-{\rm 総合BPI}}{95}}$

この式を用いると、総合BPIと全国順位は以下のような関係と推定されます。
95=1位
90=1.6位
80=3.5位
70=8位
60=18.2位
50=41.6位
40=95.2位
30=218位
20=499.1位
10=1142.6位
0=2616位(皆伝平均)
-10=5989.5位

(c)補足

これらの順位推定は皆伝取得者の人数等によって変わる可能性はあります。
また、これはあくまで"推定"であることをご理解頂けたらと思います。


[5]負のBPI

当たり前ですが、全ての人が皆伝平均を超えたスコアを出すことは出来ません。

BPIは元々はIIDXのランカーさんたちの実力をうまく数値化したいと言う発想の下作成されました。
その為0点が皆伝平均であるという、ある意味厳しい指標となっております。
総合BPIの計算の際に下限を-15(だいたい十段平均)とすることを推奨しておりますが、負の領域に関しては想定とは異なる数値が出力されてしまうと考えております。
この点においてはBPIがこのような経緯で作成されたということを踏まえ、ご了承頂けたらと思います。


 

inserted by FC2 system