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

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

機械学習の勉強再開 使用データ寄与の確認

はじめに

以前、使用データの解析をして「Grate」と「Crate」と「Prate」のデータの求め方が分かりました。
yaju3d.hatenablog.jp

出来れば使用するデータは最小限にしたいので、「Grate」と「Crate」と「Prate」が結果に寄与(意味がある?)しているのかを検証します。

使用データの意味

このサザエさんじゃんけんの使用データは、もともと下記サイトのYukiさんが考案したものです。

使用するデータは「2017sze.csv」になります。各列の内容は次の通りです。
X:サザエさんの出した手
X1:サザエさんが1回前に出した手
X2:サザエさんが2回前に出した手
X3:サザエさんが3回前に出した手
Q:四半期初の場合は1、それ以外は0
Grate:グーチョキパーが四半期内で均等に出ると仮定した場合のグーの出やすさ
Crate:グーチョキパーが四半期内で均等に出ると仮定した場合のチョキの出やすさ
Prate:グーチョキパーが四半期内で均等に出ると仮定した場合のパーの出やすさ
機械学習でサザエさんと本気でじゃんけんしてみた① - アクチュアリーはデータサイエンスの夢を見るか?

ソースコードの変更

yaju3d.hatenablog.jp

前回のソースコードでは最後の日付のみが削除されていましたが、今回はGrateとCrateとPrateと日付を削除します。

sze = sze_row.iloc[:, :-1]
# ↓  GrateとCrateとPrateと日付を削除
sze = sze_row.iloc[:, :-4]

結果の見方

f:id:Yaju3D:20210104100225p:plain

行(たて)が正解(実際に出された手)、列(よこ)が予測となります。
機械学習では出す手を予測するので勝ち手を選んだことにして勝敗を出しています。※勝ち手を選んだとこまでは現状でプログラムを組んでいません。

  • 黄色セルは、例えばチョキ(C)を出すと予測して勝ち手のグー(G)出した、実際に出された手はチョキ(C)なので勝ちになります。
  • 赤色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はパー(P)なので負けとなります。
  • 白色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はグー(G)なので引き分けとなります。

線形SVM

0.6666666666666666

C G P
C 13 2 2
G 2 9 4
P 5 1 10

32勝11敗5分け

RBFカーネル

0.7083333333333334

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

決定木

0.7083333333333334

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

ランダムフォレスト

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

ナイーブベイズ

0.6666666666666666

C G P
C 6 7 4
G 0 13 2
P 0 3 13

32勝9敗7分け

最終結果

種類 今回使用データ版勝敗 前回使用データ版勝敗
線形SVM 32勝11敗5分け(勝率0.744) 32勝11敗5分(勝率0.744)
RBFカーネル 34勝9敗5分け(勝率0.790) 34勝9敗5分け(勝率0.790)
決定木 34勝9敗5分け(勝率0.790) 29勝7敗12分け(勝率0.805)
ランダムフォレスト 34勝9敗5分け(勝率0.790) 29勝8敗11分け(勝率0.783)
ナイーブベイズ 32勝9敗7分け(勝率0.780) 31勝10敗7分け(勝率0.756)

最後に

結果だけ見ると「Grate」と「Crate」と「Prate」のデータは結果に寄与してないようです。
逆に存在することで結果が悪くなってしまっていました。

次は久しぶりにTensorFlowでDeepLearningとして組んでみます。

スポンサーリンク