そのキャラを好きになった理由が知りたい

この記事は、創作+機械学習 Advent Calendar 2021 - Adventarの2日目の記事です。
adventar.org

※この記事の技術的な説明、実験、結果等は全て雰囲気で書かれていますので、真に受けず雰囲気で読んでください。

好きなキャラクター

皆さんの好きなキャラクターは何ですか?

私は、グリザイアシリーズに登場する風見一姫が好きです。
twitterのアイコンも一姫で、参考として載せた画像はtwitterのヘッダーにしている、グリザイアの果実スピンアウト!? アイドル魔法少女ちるちる☆みちるのCGです。

ただ、一番好きなのは一姫と言っても、好きなキャラクターは他にもいます。
例えば、同じグリザイアシリーズに登場する小嶺幸(画像左)や周防天音(画像右。私のtwitterのユーザー名の元ネタでもあります)。

私のTLでは、改編期になると○○ガールズ(○○は投稿者の名前)と言ってそのクールで好きなキャラ4選を画像付きで投稿することが行われています。
この4選を見るとその人の好みの傾向が分かったり分からなかったりするので、なかなか興味深い風習だと思っています。

さて、そういった好きなキャラクターについての傾向について、私の場合はどんな要素が絡んでいるのか常々疑問に思っていました。
銀髪なら好き、巨乳なら好きと言った分かりやす基準の人もいますが、私の場合は上記の3キャラを見ても共通点は少なく基準も分かりません。

なので今回、良い機会なので機械学習を使って調べてみようと思います。

属性データ

キャラクター分類ではキャラクターの画像を使った分類が主流ですが、銀髪や巨乳と言った外見的特徴だけで好きかどうかが決まる人ならともかく、外見は好みじゃなくても内面を知って好きになることも多々ある私の場合は内面の情報も必要です。

そのため、キャラ属性王国というサイトの情報を使用しようと思います。

このサイトでは、各キャラについて外見的特徴だけでなく性格等の属性が登録できるようになっており、1万キャラ以上が登録されています。
現時点では風見一姫のデータは登録されていなかったので、以下は小嶺幸のデータの例です。
f:id:amanelyric:20211107204640j:plain

今回はこの約100種の属性のうち何が重要視されて好きになっているのかを、機械学習を使って調べていきます。

方法

機械学習機械学習言っていますが、今回は機械学習の中でもランダムフォレストと言うアルゴリズムを使います。

ランダムフォレストについて簡単に説明すると、以下のような決定木と呼ばれる木を学習によって複数作成し、分類したいデータの分類結果を木毎に出して多数決を行う事によって最終結果を決定するアルゴリズムです。

決定木を作成する過程で、学習データからランダムにサンプリングしたデータのみを使用し、データ毎の特徴もすべて使用するわけではなくランダムに選択された特徴のみを使用することが、ランダムフォレストの特徴です。

決定木作成

作成準備

今回はなんとなく、キャラを大好き、好き、それ以外の普通の3段階にキャラを分けて決定木を作成することにしました。

大好きを90キャラ、好きを140キャラ、普通を262キャラ用意し、学習データ:テストデータ=8:2となるよう分割しました。

プログラム言語としてPython3を使用し、ランダムフォレストの実装にScikit-learnを使用しました。
木の深さや本数と言ったハイパーパラメータの調整にOptuneを使用し、深さは12、本数は800本としました。

作成結果

学習データに対する正解率は100%、テストデータに対する正答率は60.6%でした。
ここで、思ったより精度が出てるなどと油断してはいけません。
全てのキャラを普通だと判定しても5割は正解するのです。

テストデータに対する正答率の内訳を見て行きましょう。

  • 大好き:0/19キャラ 正答率0.0%
  • 好き :7/26キャラ 正答率26.9%
  • 普通 :53/54キャラ 正答率98.1%

やっぱり、主観で決まる好きかどうかを分類するのは無理がありましたね。もしかしたら、データを増やしたり手法を工夫したりしたら精度は出るのかもしれませんが...
とは言え、せっかくここまでやったので、上手く決定木が作成された体で最後までやっていきます。

さて、決定木は800本作成されていますが、例としてその内の1本を見てみることにしましょう。
PyDotPlusを使用してグラフを作成してみます。
f:id:amanelyric:20211107170057p:plain

全てを見るには大きすぎるので、例として最上部付近について詳しく見て行きましょう。

1つのボックスに5つの情報が書かれています。
上から、質問、ジニ不純度、全学習データの内決定木を作成するのに使われたデータ数、全学習データの内訳、内訳の多数決結果です。

ジニ不純度について知りたい場合は、決定木アルゴリズムの重要度を正しく解釈しようの説明を参照してください。
このサイトには今回使用する重要度についての説明もありますので、雰囲気ではなくもうちょっと詳しく知りたい人はご覧ください。

話は戻って、作成された決定木を見て行きましょう。
まず、過去の質問に対して794以下か否かで分類が行われています。
この値は、キャラ属性王国の選択肢に割り振られた値を元にしているので、それについて詳しく見て行きましょう。

  • 151=身近な人を亡くした
  • 243=傷心
  • 390=特殊な年少期
  • 539=転勤族
  • 574=記憶喪失
  • 746=過去を悔いている
  • 759=悩みがある
  • 763=コンプレックスがある
  • 782=過去を乗り越えた
  • 806=悲劇的な過去
  • 814=過去に満足している
  • 826=心に穴があいている
  • 1066=転校生

過去についての選択肢と値の関係は以上のようになっているので、この木に関しては、悲劇的な過去、過去に満足している、心に穴があいている、転校生の4つのいずれかの場合、Falseとして右のボックスに分類されます。

このボックスでは出番に関しての質問によって、レギュラー出演か否かによって分類されます。
レギュラー出演ではない場合右のボックスに分類されますが、右のボックスは質問が無くこれ以上の分類は行われませんので、普通なキャラと確定します。

出番がレギュラー出演だった場合、特徴が不幸、多重人格、双子等であれば大好きなキャラと確定します。

上記のような感じで1本の木の中でも多くの分岐があり分類が決定し、分岐の数や方法が異なる800本の木による結果の多数決によって最終的な分類結果が決定します。

分析

重要度

Scikit-learnでは、決定木作成に使われた属性の重要度を簡単に知ることが出来ます。
重要度のTop5を見て行きましょう。
1位:出番
2位:方向性
3位:髪型
4位:役職
5位:志向

1位の出番は、先ほどの例でもありましたがレギュラー出演かどうかでしょうか。
ただ先ほどの例からも分かるように、レギュラー出演でなくても大好きなキャラはいますし、重要度だけ見てもその属性の何を見て好きかどうかを判断しているのかは分かりません。

寄与度

それぞれの属性には選択肢がいくつかありますが、全ての選択内容が同じだけ好感度に影響があるわけではありわけではありません。
例えば出番の選択肢に関してだと、レギュラー出演かどうかは好感度に影響がありますが、一瞬登場するキャラやサブキャラクターの場合は好感度に影響がなく、それらのキャラが好きな場合は他の要素が好感度に影響を与えたと言えます。

そういった選択肢毎の好感度に対する寄与度を見るために、部分依存グラフを見ます。
部分依存グラフについての詳細は、特徴量重要度だけで解釈するのはやめよう~部分依存グラフのすすめを参照してください。

それでは、1位の出番についてから見て行きましょう。

寄与度の数値が大きいほど寄与度が高いという事で、140の選択肢が最も寄与度が大きく、141の選択肢も若干寄与度がありますが、それ以外は特に寄与はしていないようです。
140の選択肢はレギュラー出演であるので、やはりレギュラー出演かどうかは大事だと示されました。
ちなみに、141の選択肢は活躍章があるです。

次に、2位の方向性について。

最も寄与度が高かった選択肢は、ガーリッシュでした。

3位の髪形について。

1000越えの選択肢はツーブロック等であり、好感度を下げる意味で寄与度が高いと思われます。
寄与度とは、他の属性に関係なくどれだけ分類が可能な選択肢かという意味であり、必ずしも好感度が高くなる選択肢の寄与度が高くなるとは限りません。
ちなみに、800辺りの山の選択肢は、おろしただけ、ツーサイドアップなので、こちらは好感度が高くなりそうな選択肢ですね。

4位の役職について。

0は何も選択されていない状態のことですので、役職は無い方が良いという事でしょうか。

5位の志向について。

最も寄与度の高い1,000強の選択肢はぶりっ子でした。こちらは好感度を下げそうです。
反対に、ほぼ同じ寄与度の1,000弱の選択肢は癒し系でした。こちらは好感度を上げそうですね。

まとめ

上記の結果から、レギュラー出演でガーリッシュでおろしただけかツーサイドアップで役職は無く癒し系なキャラが好きになりやすいという事でしょうか。

キャラ属性王国の登録内容を見ますと、小嶺幸はレギュラー出演以外は違いますし、周防天音もレギュラー出演と役職がないというだいたいのキャラに当てはまりそうなことしか合っていないのであまり当てにならなそうな結果です。

早く、好きになった理由が完全に分析されて、最高の容姿、性格等を兼ね備えたアンドロイドと幸せに暮らせるような世の中になると良いですね。