声優統計

声優統計は声優を科学します。

声優統計hackathon マイナス1日目

手を動かす前に、理論的な由無し事を少し。
という訳で、本日のお題。
「声優言及数の生成モデル」。

概要

先行研究:http://d.hatena.ne.jp/kkobayashi_a/20111111/p1

さて、上述のid:kkobayashiの研究を契機に、声優統計でも「より筋のいい」モデルを使って声優現象を説明しようという機運が高まって来た(え?)。
事実、先行研究における「声優の言及はポアソン過程である」という仮定はもっともらしい。
しかし、「声優のブレイク」という現象は、そのアナロジーで言えばポアソン過程における「到着率」の変化、と考えられる。
先行研究は、そのような変化をモデルに取り入れられていない。

そこで、筆者はそのようなトレンドの変化を取り入れたモデルを提案する。
そして、実際にデータを用いてモデルを当てはめて、人間の実感にあった「ブレイクした声優」を示すだけでなく、「人気に陰りのある*1声優」に関しても一定した評価を与えることが出来ることを示…せたらいいな。

時系列上に表れるデータの表し方

ここで流用するのが、トピックモデルにおいてトピックの時系列変化を考慮したモデルであるTopic Over Timeの考え方である。
TOTに関しては声優統計のメンバであるid:reposeのブログ記事にまとまっている。
http://d.hatena.ne.jp/repose/20101016/1287158398
あれ?まとまってない?

…簡単に要約しよう。
TOTにおける文書生成モデルは、通常のトピックモデルに従って文書が生成された後に、 Beta(\alpha, \beta)に従った確率変数によってその文書に0 \leq t \leq 1に正規化された「タイムスタンプ」を押す。
…いやいや待ってくれ、落ち着いて聞いて欲しい。別にトピックモデルについて理解する必要は無い。
要は、ベータ分布に従って0から1の間の変数を生成して、その値を「ある時間的期間」上の位置とする、というのがTOTのアイデアだ。
ベータ分布に関する直感的な理解には、定番だがこのページが役立つ。
http://www.kwansei.ac.jp/hs/z90010/sugakuc/toukei/beta/beta.htm
Wikipediaは式しか無くてダメだ。

右肩上がりのブレイクを示すグラフの形がある一方、右肩下がりや山なりのグラフなどのパターンがあることが分かるだろう。
これを利用する。

提案モデル

声優言及生成モデルは以下の通りである。
分かりやすさ優先でちゃんぽんな書き方になっているが許せ。
あと本当はグラフィカルモデルも描きたかったがまったく時間がなかった。

 n_i \sim Poisson(\lambda_i)
for  j \in 0 \ldots n_i
    t_{ij} \sim Beta(\alpha_i , \beta_i)

ここで、
ハイパーパラメータ\lambda_i:声優iの年間言及数を制御するポアソン過程の「到着率」
言及数n_i:声優iの年間言及数
言及時刻 t_{ij}:声優iのj番目の言及の言及時刻

モデル推定とブレイク推定

さて、我々の目的はブレイク推定である。
ブレイクか否かを判定するためには、実はポアソン過程はこのモデルにおいては大した役割を果たしていない。単に全体言及数を制御しているだけである。
というわけで、ベータ分布を推定すればいいのだが、これは生の言及数と言及時刻のデータを(時刻を正規化した上で)ベータ分布に当てはめてやればいいだけである。

では、ブレイクはどのように推定するか。
筆者が提案するのは、ここでまたしても古き良き統計的手法を用いようというものである。
すなわち、「尖度」と「歪度」だ。
尖度(Wikipedia):http://ja.wikipedia.org/wiki/%E5%B0%96%E5%BA%A6
歪度(Wikipediaが分かりにくすぎたので適当なページ):http://www.weblio.jp/content/%E6%AD%AA%E5%BA%A6

ここでは直感的な理解で構わない。
つまり、

  • 尖度が大きいほど、派手な人気変動である
  • 歪度が正であれば、人気の凋落である
  • 歪度が負であれば、人気の上昇である

実際には、歪度>0が即「消えた」声優にはならないことに留意。なぜなら、年の初めにブレイクが起こって、その後後続が無かった場合歪度は大きくなるからである。
とはいえ、実際そういう振る舞いをする声優は「一発屋」とか言われてるんだろうから、似たような何かをとらえていることには違いない。
「ブレイク」をある種の壁を越える事だと定義するならば、歪度<0をその閾値することに大きな問題は無いように思える。
そして、そのブレイク度合を表すパラメータが、尖度だ。

最後になるが、尖度および歪度はベータ分布のパラメータがあれば計算できる。
…おっとそこで「直接生データから尖度と歪度計算する方がもっと『まっとう』じゃね?」と言ったそこの君、鋭いね。
俺もそう思要検証、というか、先行研究でもあるように、生データがばらつき過ぎているので、無理矢理綺麗なモデルに当てはめておかないと外乱がでかいんじゃないか、という予測がなりたつ。

結論

データが欲しいです。

書いた感想

tex記法使いにくいしよく分からんところでハマるのでいやだ。