はじめに
前回、線形SVMの改善をしまして次の段階に行こうかなと思ったのですが・・・ yaju3d.hatenablog.jp
その前に下記の使用データがどうやって作成されているのかを調べておきたい。
https://raw.githubusercontent.com/yaju/Sazae_R/master/2017sze.csv
使用データの解析
このサザエさんじゃんけんの使用データは、もともと下記サイトのYukiさんが考案したものです。
使用するデータは「2017sze.csv」になります。各列の内容は次の通りです。
X:サザエさんの出した手
X1:サザエさんが1回前に出した手
X2:サザエさんが2回前に出した手
X3:サザエさんが3回前に出した手
Q:四半期初の場合は1、それ以外は0
Grate:グーチョキパーが四半期内で均等に出ると仮定した場合のグーの出やすさ
Crate:グーチョキパーが四半期内で均等に出ると仮定した場合のチョキの出やすさ
Prate:グーチョキパーが四半期内で均等に出ると仮定した場合のパーの出やすさ
機械学習でサザエさんと本気でじゃんけんしてみた① - アクチュアリーはデータサイエンスの夢を見るか?
この中で「Grate」と「Crate」と「Prate」のデータがありますが、これがどういう計算で 求められているのかを今度のために知る必要があります。
「四半期内で均等に出ると仮定した場合の出やすさ」という説明とデータの値を見ればなんとなくのイメージはつきます。
出る回数が同じなら3等分なので、0.333333333になり、何れかが出た場合は出やすさの値が減っていく。
イメージは分かるのですが、どうしたら下記のような数値になるのかが分かりませんでした。
X | X1 | X2 | X3 | Q | Grate | Crate | Prate | DATE |
---|---|---|---|---|---|---|---|---|
C | G | P | G | 1 | 0.333333333 | 0.333333333 | 0.333333333 | 1992/1/5 |
P | C | G | P | 0 | 0.361111111 | 0.277777778 | 0.361111111 | 1992/1/12 |
G | P | C | G | 0 | 0.393939394 | 0.303030303 | 0.303030303 | 1992/1/19 |
C | G | P | C | 0 | 0.333333333 | 0.333333333 | 0.333333333 | 1992/1/26 |
C | C | G | P | 0 | 0.37037037 | 0.259259259 | 0.37037037 | 1992/2/2 |
P | C | C | G | 0 | 0.416666667 | 0.166666667 | 0.416666667 | 1992/2/9 |
G | P | C | C | 0 | 0.476190476 | 0.19047619 | 0.333333333 | 1992/2/16 |
C | G | P | C | 0 | 0.388888889 | 0.222222222 | 0.388888889 | 1992/2/23 |
P | C | G | P | 0 | 0.466666667 | 0.066666667 | 0.466666667 | 1992/3/1 |
G | P | C | G | 0 | 0.583333333 | 0.083333333 | 0.333333333 | 1992/3/8 |
C | G | P | C | 0 | 0.444444444 | 0.111111111 | 0.444444444 | 1992/3/15 |
P | C | G | P | 0 | 0.666666667 | -0.333333333 | 0.666666667 | 1992/3/22 |
G | P | C | G | 0 | 1.333333333 | -0.666666667 | 0.333333333 | 1992/3/29 |
推測
このデータは四半期内(1月~3月)で13行x3=39個のデータがあります。
初回は出る回数が同じなら3等分なので、各13/39というのは直ぐに分かりました。
次行が難しく、0.277777778にどうしたらなるのか、イチかバチか「0.277777778」でググったら、5/18=0.277777778となることが分かりました。
それなら倍にすれば、10/36となります。なんとなくこの予想はあってそうです。
次行の 0.303030303は、10/33 になるのは直ぐに分かりました。
行 | Grate | Crate | Prate |
---|---|---|---|
1 | 13/39 | 13/39 | 13/39 |
2 | 10/36 | ||
3 | 10/33 |
現時点で分かったのは上表で、これを見る限り分母と分子が3ずつ減っていることが分かりました。
次の展開として出た手を順にカウントしてみました。
行 | Grate | Crate | Prate |
---|---|---|---|
1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 |
3 | 0 | 1 | 1 |
4 | 1 | 1 | 1 |
5 | 1 | 2 | 1 |
6 | 1 | 3 | 1 |
7 | 1 | 3 | 2 |
8 | 2 | 3 | 2 |
9 | 2 | 4 | 2 |
10 | 2 | 4 | 3 |
11 | 3 | 4 | 3 |
12 | 3 | 5 | 3 |
13 | 3 | 5 | 4 |
4行目は全部1となり使用データ上の数値でも0.333333333と均等になっていますし、全体的に出た手の件数と使用データの数値の割合的にあってそうです。
そこで分母は行毎に3減らし、分子は出た数だけ3減らすようにしていきました。
行 | Grate | Crate | Prate |
---|---|---|---|
1 | =(13-0*3)/39 | =(13-0*3)/39 | =(13-0*3)/39 |
2 | =(13-0*3)/36 | =(13-1*3)/36 | =(13-0*3)/36 |
3 | =(13-0*3)/33 | =(13-1*3)/33 | =(13-1*3)/33 |
4 | =(13-1*3)/30 | =(13-1*3)/30 | =(13-1*3)/30 |
5 | =(13-1*3)/27 | =(13-2*3)/27 | =(13-1*3)/27 |
6 | =(13-1*3)/24 | =(13-3*3)/24 | =(13-1*3)/24 |
7 | =(13-1*3)/21 | =(13-3*3)/21 | =(13-2*3)/21 |
8 | =(13-2*3)/18 | =(13-3*3)/18 | =(13-2*3)/18 |
9 | =(13-2*3)/15 | =(13-4*3)/15 | =(13-2*3)/15 |
10 | =(13-2*3)/12 | =(13-4*3)/12 | =(13-3*3)/12 |
11 | =(13-3*3)/9 | =(13-4*3)/9 | =(13-3*3)/9 |
12 | =(13-3*3)/6 | =(13-5*3)/6 | =(13-3*3)/6 |
13 | =(13-3*3)/3 | =(13-5*3)/3 | =(13-4*3)/3 |
Excelで計算させたら、見事に使用データ上の数値と一致しました。
※各四半期内(1月~3月)の時期によっては11行や12行になったりするので、その時に合わせて分母や分子の数を調整する必要があります。
最後に
これで使用データの作り方は理解できましたので、2019年以降のデータは自分で作れるようになります。