批評空間の有名なエロゲ同士の近さを計算
概要
してみました。
ご存知、批評空間には自分と近いユーザというのは出てきますが、特定のゲームに対して近いゲームというのは出せません(たぶん)
(※2020/9/13追記 すいません、管理者さんからコメントいただいたのですが、「~に似た評価をしているゲームを探す」というのが思いっきりありました。こちらはユーザベースレコメンドのようです)
なので適当に作ってみました。
自分に嗜好が似てるあの人がやってるゲームを見るのをユーザベースレコメンドとすると、今回やるのはアイテムベースレコメンドにあたります。私が好きなゲームに似てるゲームを見せてという気持ち
ゲーム同士の近さってどう計算するのって話ですが、今回はPOVを使おうと思います。ようはゲームにつけられたタグです。
「脇役が光るゲーム」、「歌がいいゲーム」、「(熱く燃える)熱血系ゲーム」だのが投票数と一緒に登録されています。これの分布が近いゲームは似てるゲームと仮定します
データ取得
SELECT toukei_temp_table.gamename,toukei_temp_table.median,toukei_temp_table.count,povlist.title,povgroups_toukei.count FROM toukei_temp_table,povlist ,povgroups_toukei WHERE toukei_temp_table.median >= 70 and toukei_temp_table.count>=500 and toukei_temp_table.game_id=povgroups_toukei.game and povgroups_toukei.pov=povlist.id and povgroups_toukei.count * 1.0/toukei_temp_table.count >= 0.05
こんなのを叩きますと以下のような1万件くらいのデータが返ってきます
中央値70以上、ユーザデータ数500以上のゲーム(413件)について、そのPOVのうち(POV数/ユーザデータ数)が0.05以上のものを取っています(負荷を掛けすぎると怒られるので最後のpovgroups_toukei.count * 1.0/toukei_temp_table.countは0.01刻みくらいで細かく取るといいと思います。今回は0.02以上まで取りました)
距離計算
上のデータを整理して、作品名行、POV名列の行列にします。
この行列の一行がそのゲームの特徴量にあたります。なので別のゲームとの行同士のコサイン距離を計算すると、ゲーム同士の近さが出てきます。
今回はこれにtf-idf値を計算して若干値を変更したのですが、原理的には大体変わりないので割愛します。
で、各ゲームについて近いゲームランキングを作ってみた結果が以下のようになりました
大体あってますかね?
各ゲーム50位まで表にしてみました。 なにかの参考になれば幸いです。
自作品に近いゲームを探す
POVデータ数が少ないと変な結果になるので、今回はそこそこデータのある「さよなら、うつつ。」に近いゲームを探してみました。
「さよなら、うつつ。」のPOV分布がこんな感じで
これに近いゲームがこんな感じです
まぁまぁあたってそう。意外と厨二系の作品も上のほうに来てるのが印象的です。一方で同じ電波系の「さよならを教えて」はもっと下のほうにあるらしいので、感覚とはちょっとずれがあります。
弊作品好まれるかたはこの辺のゲームをやるといいかもしれません
自分の嗜好に近いゲームを探す
コサイン距離だとPOVに重みを付けずに均等に扱って近さを考えてしまうため、自分的にどうでもいいPOVのせいで自分の好みとは違う作品が出てくる可能性があります
自分が好きなPOVは重く、どうでもいいPOVは軽くして未知のゲームにスコア付したいです。どうすればいいでしょう?
そうですね AI(機械学習)を使いましょう
自身のプレイした作品リストと、それぞれのゲームにつけた点数を取ってきます。
このうち70点以上の作品を正例、それ以下を負例として、先の特徴量と一緒にロジスティック回帰にぶち込んで学習させます。
で、やったことがないゲームに対してそのゲームに自分が70点以上つける確率を出させます
以下のようになりました
そんなにやりたいかと言われるとあまり興味がない作品ばかりですが、そこそこ自分の好みあっているような気がしなくもないです。というかにわか臭いラインナップですね
今回はscikit-learnのロジスティック回帰を使ったのですが、これは素性に対して重みが出力できます。左は上位20位くらい、右は下位20位くらいです
幼馴染とかロリとか結構好きなんですけど、このPOVがつけられる作品には70以下を付ける傾向にあるみたいです。筆者は
所感
- 有名作品ばかりをレコメンドに出しても発見感がないのであまり嬉しくないなと思いました。
- 一方、タグを使うtf-idfは試したことがなかったのですが、そこそこ上手く働いた感があり良かったです。
- 自分のゲームはもうちょっとPOV数稼げないとまともにデータ分析ができないので実力のなさを反省したいと思います
- 今更ながらこんな記事をci-enに書いても良かったのだろうか(不都合あれば消します)
以上
追記1
SVMにRBFカーネル使うほうが比較的納得感のある結果になりました。やっぱり信じられるのはSVMなんだよな
追記2
似てるゲームを探すプログラムにしてGoogle Colabで公開しました(怒られたら消します)
https://colab.research.google.com/drive/1BURdmGBcN2mT3xyTIK9jsXVL0dEU1dx1
追記3
クラスタリングしてt-SNEで圧縮可視化してみました