唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

サザエさんのじゃんけん予測問題のサーベイ

ちょっと前にサザエさん ジャンケン学というサイトが話題になりました.
その時はてブのコメントに「誰か機械学習で三値分類してくれればよいのに」的なことを書いたのですが,実際にやっている人を発見したので紹介しておきます.

問題設定

過去のサザエさんのじゃんけんの手のデータが与えられた時に次に出される手の予測を行う.

[1]人手による手法

上でも紹介したサイトですが,過去のジャンケンの手のデータや予測結果などが細かく記載されています.
他の手法もこのデータセットをもとに研究が行われています.
以下の5つのデータを下に次の手の予測を行なっています.

  1. 通算の手の分布分析
  2. 回の1の位毎の手の分布分析
  3. 週毎の手の分布分析
  4. 次の手の傾向分析(直前の手の後の確率)
  5. 年間の手の平均回数の分析

通算の正解率は44.7%となっています.
なおそれぞれの手法の正解率は計算方法や条件が異なるため,必ずしも直接の比較はできません.

[2]n-gramモデルによる手法

この手法では1からn個前までの手が与えられた時の確率をもとに予測を行う.
n=4の時最もよい結果が得られていて,正解率は50.3%

[3]識別モデルによる手法

手法[1][2]はある手が出る確率を利用していたが,この方法では確率は求めずにどの手が出るかという情報だけを求めている.
SVMとRandom Forestの2つの手法について実験.
データの素性(特徴)としてはn個前までの手を使用.
20分割交差検定の結果,正解率はSVMが53.7%,Random Forestが54.0%となっている.
また識別モデルによる予測の前に独立性の検定などを丁寧に行なっている.

雑感

ランダムに選択した場合の正解率は33.3%となるが,それと比べてはるかに良い結果が得られていることがわかる.
手法[1]で用いられている「次の手の傾向分析」(いわゆる1-gram)以外の特徴に予測精度を上げる効果があるのか気になった.
識別モデルによる手法は特徴ベクトルの設計に柔軟性があるので,もっと色々なものを試すと面白いかもしれない.