デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理と英語を基礎からやり直す。https://qiita.com/yaju

機械学習の勉強再開 使用データの解析

はじめに

前回、線形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年以降のデータは自分で作れるようになります。

スポンサーリンク