こんにちは、学びの探求者です。
普段はnoteで活動しています。
2025年のQiitaアドベントカレンダーでは、
「ノーコード/ローコードで、自分のコンテンツ基盤を自動化していく」
をテーマに、25日間の仕組みづくりを記録していきます。
ぜひ、応援してください。
昨日は、LPI をソートしてみると違和感が出てくる問題からスタートし、
「じゃあ、こういう補正を加えればもっと現実的になるよね?」という
パラメータ設計(企画) を行いました。
Day12 は、これを 本当にスプレッドシートで形にする 回です。
今日のゴール
songs シートに以下の列を追加し、
最終的に pred_score(予測スコア) を算出できる状態にする。
- hit_bonus(A面 / カップリング補正)
- classic_bonus(初期曲補正)
- new_song_penalty(新曲の暴れ防止)
- album_bonus(アルバム曲としての扱いやすさ)
- unit_penalty(ソロ・ユニット曲の出現率補正)
- final_weight(補正を掛け合わせた最終重み)
- pred_score(最終的にセトリに入りやすさを示す指数)
songs シートの前提カラム
Day9〜10 で作った songs シートはこの構成でした:
| song_name | release_type | release_name | release_year | is_single_title | is_coupling | is_album_track | is_unit_song | live_count | age | live_rate | decay | lpi | など |
Day12 ではここに 追加の補正カラム を入れていきます。
① hit_bonus(その曲が「A面」かどうか)
A面は曲の代表格なので、ライブ採用率が高くなると仮定します。
=IF(E2=1, 1.3, IF(F2=1, 1.05, 1))
- A面(is_single_title = 1) → 1.3
- カップリング(is_coupling = 1) → 1.05
- それ以外 → 1.0
② classic_bonus(初期曲の強さ)
デビュー〜3年は “そのグループを象徴する時期” として評価を上げます。
=IF(age <= 3, 1.2, 1)
例:
- 2014デビューなので、2014〜2016曲は +20%
③ new_song_penalty(新曲の暴れを抑える)
LPI は age=1 の曲が極端な値になりがちなので、調整します。
=IF(age <= 2, 0.7, 1)
- 2023〜2025 の新曲 → 30% 減衰
- それ以外 → 1
④ album_bonus(アルバム曲は採用率がやや高い)
アルバムツアーの場合、アルバム曲が多く採用される傾向があります。
=IF(G2=1, 1.1, 1)
⑤ unit_penalty(ソロ曲は本編で使いにくい)
WEST. の場合、単独公演でもソロ曲はリリース年以外は限定的なので、係数を下げます。
=IF(H2=1, 0.8, 1)
⑥ final_weight(補正パラメータの掛け算)
ここで各補正をまとめます:
=hit_bonus * classic_bonus * new_song_penalty * album_bonus * unit_penalty
スプシでは:
=I2 * J2 * K2 * L2 * M2
※列名は例なので、適宜調整してください。
⑦ pred_score(最終予測スコア)
= lpi * final_weight
スプシでは:
=H2 * N2
これで、その曲の
「補正後の LIVE 予測指数(Predicted Setlist Score)」
が完成します。
ここまで実装した songs シートの例
補正がかかることで、
- A面が少し強くなる
- 新曲が暴れすぎない
- 初期曲の存在感が戻る
- ソロ曲は控えめになる
など、より “現実のライブに近い” スコア分布 に変化になったと思います。
Day12 のまとめ
今日やったのは:
- Day11 で企画した補正パラメータを すべて数式化
- songs シートが 予測モデルとして成立する形 に進化
- pred_score が、明日のランキングに直結
そしていよいよ Day13 では…
Day13 予告:「予測ランキングを作る」
- pred_score のランキングを生成
- フローチャート的に “ライブの流れ” を推定
- WEST. の過去ツアー構造から枠組みを作る
- いよいよ 予測第1版のセトリ を出す回!
引き続きがんばりますので、応援してください💪
