明示的に書くと以下になる。$$2についてN個の曲について、プレイした回数とベストスコアはわかっている。これについて負の対数尤度関数を構築することを考える。\boldsymbol\theta)\right)$$となる。1の結果を代入し形を整えると以下のようになる。\right]$$となる。仮定しないと損失が計算できない形式になっている。ベータ分布を仮定した。これは、5年間プレイしてきての経験から来る仮定である。a,b))$$である。\right]$$シグマの中の第4項目の積分は正則化された不完全ベータ関数と言われるものである。\right]$$となる。loss(a,b)$$を求めることである。これを解いてa,bを推定するために、プログラムを組んだ。重要そうな関数だけ示す。notebookの方を見てほしい。a,bちなみに損失関数の可視化をするとこんな感じになる。(レベル17の場合)推定結果あるレベル帯の曲を一回プレイしたときの分布は以下のようになった。レベル17損失関数が最小となる点を探索すると以下の結果が得られる。3.17)これをパラメーターに持つベータ分布、つまり推定したXの従う分布を可視化する。実際の実力と比較してレベル17の曲においてランダムに49回選曲を行いスコアを記録した。そのヒストグラムと推定されたベータ分布を重ねて書いたのが下図である。これを見ると、推定されたスコアの分布は自分の実力で出せるスコアよりも低めであることが確認できる。他のレベル帯についても同様に感じた。全体的に低いスコアが推定されたのか。大きな理由は2つ考えられる。データには自分が現在の自分よりも下手だったデータが全て含まれている。そのため、自分の現在の実力よりも低めに推定された。自分は一回良いスコア(例えば0.99)が得られたらあまりプレイしなくなるため、スコアが出にくい曲のプレイ回数が多くなる傾向がある。そのため、自分の実力よりも低めに推定された。レベルの難易度が反映されているかもし、スコアが正しく推定されているのならば、曲の難易度が大きくなるに連れ、スコアの期待値は減少するはずである。0.882これをみると19と20のスコアの期待値がそうはなっていない。誤なぜ19と20のレベルがこの結果になったのか。理由はレベル20の曲の追加時期に関係する。このSDVXというゲームは難易度のインフレーションを起こしており、レベル20のある1曲(Lachryma《Re:Queen’M》)を除いて、他の8曲は、2017/02/17以降に追加されたため、自分の現在の実力と比較的近い実力でプレイしている。一方でレベル19は自分がSDVXをプレイし始めた当初からある程度曲数が揃っていて、下手なときにもプレイしてしまっている。いうわけで、レベル20の方がレベル19よりもスコアが出ると推定されてしまったのである。まとめSDVXの各レベルについて、新曲が追加されたときにどれぐらいのスコアが取れそうなのか。音ゲにおいては、スコアの履歴が不完全であるため、スコアの最大値とプレイ回数から推定することを試みた。結果として、自分の感覚では悪くない推定を得たと感じた。自分の実力よりも低めのスコアが出るような分布が推定された。このような結果になってしまった理由は大きく2つの要素をモデリングに盛り込まなかったためである。プレイヤーの成長を考えなかった。良いスコアをとった場合にあまりプレイ回数が増えないこと(打ち切りの問題)を考えなかった。お問い合わせはてなブログをはじめよう!aotamasakiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。