機械学習でサザエさんと本気でじゃんけんしてみた①
本記事は以下のサイトに掲載されている知見およびデータを参考に執筆しています。
サザエさんじゃんけん研究所公式ウェブサイト(Sazaesan-janken laboratory official website)
1.はじめに
本記事では機械学習の手法を用いて、アニメ「サザエさん」の次回予告で行われるじゃんけんの手を予測してみます。
「2017年冬版サザエさんじゃんけん白書」によれば、サザエさんのじゃんけんには必勝法まではいかなくとも、経験則に基づき勝率を高められるセオリーが存在するようです。
過去の実績データを踏まえると、サザエさんの出す手は毎回ランダムではなく、グー、チョキ、パーがそれぞれ均等に近い割合になるようなバイアスがかかっていることが伺えます。また、四半期初にはチョキが出やすいという傾向もみられます。
人間の経験則で得られているこのような知見について、機械学習がどのような評価を行い、どのくらいの予測精度を出せるのかに注目です。今回用いる手法は次の通りです。
2.使用データ
2017年6月25日分までをサザエさんの過去の手 一覧からスクレイピングさせていただきました。過去に出た手の時系列データに、四半期内でのグーチョキパーの偏りの情報や四半期初のフラグを手で追加したものを使用しています。(なお、放送中止の回は集計から除いています。)
使用するデータは「2017sze.csv」になります。各列の内容は次の通りです。
X:サザエさんの出した手
X1:サザエさんが1回前に出した手
X2:サザエさんが2回前に出した手
X3:サザエさんが3回前に出した手
Q:四半期初の場合は1、それ以外は0
Grate:グーチョキパーが四半期内で均等に出ると仮定した場合のグーの出やすさ
Crate:グーチョキパーが四半期内で均等に出ると仮定した場合のチョキの出やすさ
Prate:グーチョキパーが四半期内で均等に出ると仮定した場合のパーの出やすさ
3.使用する手法
1992年~2016年までの1254回のじゃんけんのデータから学習し、2017年の48回のじゃんけんを予想してみます。使用する手法は以下のとおりです。なお、乱数のシードは3383(サザエさん)とします。
・線形SVM
・randomForest
・決定木
・naive bayes
4.結果
・線形SVM
C | G | P | |
---|---|---|---|
C | 13 | 2 | 2 |
G | 2 | 9 | 4 |
P | 5 | 1 | 10 |
32勝11敗5分
C | G | P | |
---|---|---|---|
C | 10 | 4 | 3 |
G | 0 | 13 | 2 |
P | 3 | 4 | 9 |
32勝9敗7分
・randomForest
C | G | P | |
---|---|---|---|
C | 10 | 4 | 3 |
G | 0 | 13 | 2 |
P | 3 | 4 | 9 |
32勝9敗7分
・決定木
C | G | P | |
---|---|---|---|
C | 12 | 3 | 2 |
G | 1 | 12 | 2 |
P | 5 | 3 | 8 |
32勝10敗6分
・naive bayes
C | G | P | |
---|---|---|---|
C | 10 | 4 | 3 |
G | 1 | 11 | 3 |
P | 2 | 2 | 12 |
33勝9敗6分
結果だけ見ると、naive bayesが最も識別率が高くなりました。誤識別したパターンを個別に分析すれば、より識別率を上げられる可能性がありますが、今回はここまでにしておきます。
2018/12/30追記:続編となる記事を作成しました。
今回使用したソースコードは次の通りです。