LoginSignup
2
1

More than 1 year has passed since last update.

M1グランプリの審査結果を主成分分析する

Posted at

遅ればせながらM1グランプリの審査結果を主成分分析します。
各審査員が各演者をどう評価したかを分析することで、演者・審査委員双方の特徴を垣間見ることができます。
全文を通じて敬称略です。

ソースコード:
https://www.kaggle.com/code/kotamori/m1-grand-prix-2022

*本文中のコードはイメージです。そのままでは動きません。

データ

データはこちら。行に演者、列に審査員を並べた行列データです。
Screenshot_2023-01-03_00-45-19.png

審査員間の順位相関

(ナイツ塙、サンド富澤、立川志らく) の3名と (中川家礼二、松本人志)の2名は特に相関が強い。関東と関西で分かれている感じが面白い。山田邦子は特に松本人志と博多大吉との相関が低い。
相関にばらつきがあるものの、負の相関がないので、評価軸が異なることはあっても好みが反対ということはないらしい。

cor = x.corr("spearman")
cor[cor==1] = None
sns.heatmap(cor, annot=True, fmt=".2f", cbar=False)

Screenshot_2023-01-03_00-47-55.png

主成分分析

審査員ごとに平均0,分散1に基準化してから主成分分析を行います。

p = Pipeline([
  ("scale", StandardScaler()),
  ("pca", PCA())
])

res = p.fit_transform(x)

分散の説明力

fig, ax = plt.subplots(figsize=(6, 4))
ax.grid()
ax.plot(p.steps[-1][-1].explained_variance_ratio_, marker="p")
ax.plot(p.steps[-1][-1].explained_variance_ratio_.cumsum(), marker="p")

最初の2成分で分散の80%ほどを説明できるようです。
Screenshot_2023-01-03_01-03-26.png

第1、第2主成分

fig, ax = plt.subplots(2, 1, figsize=(7, 8))
a = ax[0]
a.grid()
a.scatter(res[:,0], res[:,1])
for idx, pos in zip(x.index, res):
  a.text(pos[0], pos[1], idx)
mx = max(abs(res[:,0]))*1.1
a.set_xlim((-mx, mx))
mx = max(abs(res[:,1]))*1.1
a.set_ylim((-mx, mx))

comps = p.steps[-1][-1].components_.T
a = ax[1]
a.grid()
a.scatter(comps[:,0], comps[:,1], marker="^")
for col, comp in zip(x.columns, comps):
  a.text(comp[0], comp[1], col, color="green")
mx = max(abs(comps[:,0]))*1.1
a.set_xlim((-mx, mx))
mx = max(abs(comps[:,1]))*1.1
a.set_ylim((-mx, mx))
fig.tight_layout()

Screenshot_2023-01-03_01-06-48.png
Screenshot_2023-01-03_01-07-07.png

左へ行くほど評価が高いので、第1主成分は、概ね評価(の正負を反転させたもの)に概ね対応しています。審査員側で見るとこの成分を特に強く反映しているのは(立川志らく、サンド富澤、ナイツ塙)の3名です。(中川家礼二、松本人志)も近い値です。(博多大吉、山田邦子)も正負では一致していますが、この軸をあまり重視していないようです。
第2成分では下側はどちらかというと正統派漫才っぽい芸風(さや香やオズワルド、カベポスター、男性ブランコ)、上側に変化球っぽい芸風(米田2000、真空ジェシカなど)が配置しているように見えます。審査員側を見ると、(中川家礼二、松本人志、博多大吉)の3名は正統派を高く評価しています。全員関西ですね。一方、山田邦子は変化球のネタを評価する傾向が見えます。関東の審査員3名がこの軸では中程にいるところが面白い対比です。
得点の付け方が少し議論となったりしましたが、初見の印象と比べると良いバランスだったのかもしれません(ただし説明不能のノイズとなったものが残り20%の分散に残されているのかもしれません)。

[おまけ] 順位点にした場合

pd.DataFrame(x.rank().sum(axis=1).sort_values(ascending=False))

Screenshot_2023-01-03_01-29-15.png

現行の加算方式だと、見ていて審査員間の分散の違いが気になります。大体みんなが85〜100の範囲で点をつけている中で、一人が10~90 の幅で採点するとこの人が事実上の決定者になってしまうからです。
長所・短所はありますが、一つの代案は順位点方式(点数そのものではなく審査員ごとの順位を得点にする)にするということです。
ですが、今回に関しては順位点方式にしても上位3組の顔ぶれは変わらなかったようです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1