機械学習で次に声がつきそうなモバマスアイドルを予測できるのか?(データ収集編)
こんにちは。烏龍茶です。
最近モバマスをやめた人の話がバズったり弊ブログでもお気持ちを表明したりしていますが、今回はちょっと前に始めた機械学習の話の続きを書きたいと思います。なんというかもっとお気持ち的な話で長文をしたためたい気持ちもありますが、それは後日ということで。
※機械学習等にあまり詳しくない方にも分かりやすいように説明するつもりですが、分からない点があればコメント等で質問してもらえれば答えます。
※筆者はほとんど素人なので、本職の統計屋さんや人工知能屋さんから見て不正確である・誤っている部分があればそれとなく指摘していただけると非常に有り難いです。
※前回の記事はこちら。
今回やりたいこと
- 分類器を作るにあたって必要そうな、モバマスアイドルに関するデータは何かを考える
- 本当にそのデータが必要なのかどうか考える(正確には、この手順がなぜ必要なのか説明する)
必要なデータはどれか?
前回説明した教師あり学習を実装するにあたって、いろいろなモバマスアイドルに関するデータを学習データとして集める必要があります。集めたデータをコンピュータにたくさん見せて、声がつきそうなモバマスアイドルの「特徴」をつかむことになります。そこで、モバマスアイドルに「声がつきそうかどうか」を考えるにあたり、差し当たって関係がありそうなデータは何かを考えてみましょう。
1次データ
モバマスはカードのイラストでユーザーにインパクトを与えていくゲームな以上、アイドル自身の身体的な特徴が人気に大きな影響を与えていくような気がします。例えば安直な話ですが胸やお尻が大きいとなんとなくユーザーに魅力的に映っていくかもしれませんし、身長が小さいとかわいく見えるかもしれませんし、他には髪型なんかも影響してくるかもしれません。
他にもアイドル彼女自身を示すデータがいろいろとあります。例えば年齢、血液型、利き手、趣味……等々です。このようなアイドルの詳細ページから見ることができる「アイドル自身の情報」を1次データと呼ぶことにし、参考にするためのデータとして集めることにしたいと思います。今回は以下のようなデータを集めます。
なんとなくこの時点でかなりデータの数が多い気がしますが、データは多ければ多い方がいいような気がするので続けます。
2次データ
次に、モバマスアイドルの「人気の表れ方」を考えてみます。人気の表れ方というと、一番わかりやすいのは総選挙の順位ですね。総選挙で順位が極めて高ければそのままCDデビュー=ボイス実装ということになりますし、CDデビュー確定圏内にランクインしなくても安定して上位50位にランクインしているアイドルがCDデビューするということがしばしばあります。
また、モバマスはソーシャルゲームなので、運営は売上高を上げるためにユーザーに魅力的に映るようなガチャやイベントを開催するものと考えられます。中でもガチャの目玉やイベントの上位報酬に何度も抜擢されるアイドルは、運営にとって「ユーザーに魅力的に映っている」と考えられるアイドルと思って差し支えないのではないでしょうか。そこで、各アイドルのSレアの枚数もデータとして採用することにしたいと思います。
以上のように、モバマスの「ゲーム内で」アイドルの人気が表れているデータを2次データと呼ぶことにし、データとして集めることにします。
やっぱりデータが多い気がしますが、構わず続けることにします。
(2016/09/01 23:47追記)今更ですが超重要な以下の2項目を考えに入れてなかったので以下も検討することにします。
- アイドルの肩書を設定しているプロデューサーの数
- アイドルをリーダーに設定しているプロデューサーの数*6
3次データ
最後に、モバマスの「ゲーム外で」アイドルの人気が表れていそうなデータを3次データと呼ぶことにし、データとして集めることにします。ゲーム外となるとやはり2次創作の多さが1つの指標になりそうですので、pixivでタグが付いている作品の件数と、ニコニコ動画でタグが付いている動画の件数をデータとして採用することとします。他にもいろいろとそれっぽいデータを集めてみます。
- pixivでタグが付いている作品の件数
- pixivでタグが付いている成年向け作品の件数
- pixivでタグが付いている作品数に占める成年向け作品数の比率
- ニコニコ動画でタグが付いている動画の件数
- pixiv百科事典のPV数
- Twitterに存在するアイドルのなりきりアカウントのフォロワー数*7
なんかもう収集がつかなくなってきた気がします。
本当にそのデータは必要なのか?
以上で合計21種類という大量のデータを集めることを決断したわけですが、あんまりデータが多いと問題が起こってくる可能性もあります。
ということで、なんとなく声がついているアイドルを想像してみましょう。例えば……
これはアニメの前川みくを映した一場面ですが、なかなかケツがデカい気がします。
こちらは小日向美穂のカードの1枚ですが、やはりケツがデカい気がします。
そしてこちらは三村かな子のカードの1枚ですが、結構ケツがデカい気がします。
以上の例から考えると、キュート属性で、髪が短めであり、ヒップサイズが大きいアイドルは、声がついていそうであるという法則が考えられます。しかしながら、我々は「キュート属性で、髪が短めである」ものの、「ヒップサイズは大きくなく」、しかしながら強い人気を誇るアイドルを知っています。
例えば、乙倉悠貴ちゃんがそのアイドルに当てはまると言っていいでしょう。彼女は登場後の2回の総選挙でどちらも30位台にランクインしていますし、登場が遅れたことを考えれば強Sレアの数もそこそこです。また今回はデレステでのデータは検討しないことにしていますが、デレステでもボイス未実装ながらSSレアが登場していますし*8、やはり運営としてもユーザーから高い支持を得ていると考えていると思われます。そんな彼女が「ヒップサイズが大きくない」という理由で弾かれてしまうのはちょっと違和感があるような気がします。
このように、学習データに表れている限定的な特徴に注目しすぎてしまい、別途与えられるデータに対して正しく判断ができないことを過学習(overfitting)と言います。非常にデータの種類を多くしてアイドルにボイスがついているかどうかの分類器を作った場合、既に学習しているデータに対しては正しい答えを返すことができますが、未知のデータに対しては正しくない答えを返してしまう可能性が高くなります。今回の例の場合、「ボイスがついているキュートのアイドルは髪が短めでケツがデカい」という言わば「ノイズ」のような特徴を拾ってしまうことが問題です。
これを防ぐためには、採用するデータの種類の数を減らすことが有効です。例えば、実はアイドルに声がつくかつかないかにヒップサイズが関係ないのであれば、ヒップサイズを分類するための学習データとして採用しなければこの問題が起こらなさそうだと考えられます。
今回のまとめ
- いろいろ観点からデータを集めていく必要があるっぽい
- でも本当にそのデータが必要なのか考える必要もあるっぽい
次回は「本当にそのデータが必要なのか」を考える方法について解説します。それまでに183人のアイドル全員について21種類のデータをまとめないといけませんが……
今回は以上です。
*1:スリーサイズが不明なアイドルが数人いますが、彼女たちについては先行研究(http://d.hatena.ne.jp/MikuHatsune/20130124/1358738144)を参考に別途推定したいと思っています
*2:趣味を数値として表すことは難しいので、シンデレラガールズそれぞれの趣味を適当にグループ化し、そのグループの番号をデータとして採用する予定です
*3:上位50位にランクインしたことがないアイドルについては、一律60位として扱うこととします。平均順位も同じです
*4:開催時点で既に声がついていたアイドルについては一律-10位、最終結果の上位20位にランクインしなかったアイドルについては一律30位として扱うこととします
*5:特訓前後を別にカウントします
*6:出来る限りツアー等のリーダーがゲーム内の協力要素になってこないイベント中のデータを用います
*7:複数存在する場合は最も多いものを採用し、存在しない場合は0として扱います
*8:ちなみに該当ガチャの直前のデレステのApp Storeトップセールスランキングは16位でしたが、登場翌日は7位となっています