【要約】osu!譜面のジャンル自動判定、凝った2しきい値が719枚でジャンプに6割偏った(単一しきい値に作り直した話) [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、osu!の譜面を自動分類するツールを開発する際、既存の難易度指標では譜面の特性を判別できない問題に直面した。
- ・Star Ratingは総合的な難易度を1つの数値に集約する。
- ・そのため、エイム重視か速度重視かといった「譜面の質」が消失する。
- ・当初導入した複雑な多重しきい値モデルは、実データに対して判定が特定のジャンルに偏る結果となった。
// Approach
開発者は、信頼度と計算コストに基づいた3層のフォールバック構造を採用し、実測データに基づきモデルを簡略化した。
- ・層①:プレイヤーの投票タグを最優先し、複合譜面には併記を行う。
- ・層②:タグがない場合に、rosu-ppによるaim/speed比で判定を行う。
- ・層③:難所の時系列(strain)を解析し、持久型かバースト型かの質感を付与する。
- ・モデルの改善:複雑な中間判定を廃止し、校正した単一のしきい値(1.16)へ移行した。
// Result
開発者が、719枚の実測データを用いてモデルを校正した結果、分類精度が大幅に向上した。
- ・正解率が0.53から0.73へと改善した。
- ・複雑な設計よりも、実データに基づいたシンプルなしきい値の方が高い精度を示した。
- ・タグがある場合にファイル取得をスキップする設計により、判定コストを削減した。
Senior Engineer Insight
> モデルの複雑化が精度向上に直結しないことを示す、極めて実践的な事例である。開発者が「理論値」ではなく、719枚の実測データから「1.16」というしきい値を導き出した判断は、現場における校正の重要性を物語っている。また、タグの有無でファイル取得を制御する設計は、計算コストとレイテンシを最小化する優れたアプローチだ。複雑な分類器を作る前に、まずデータの分布を正しく把握すべきであるという教訓を含んでいる。