機械学習でサザエさんと本気でじゃんけんしてみた①
本記事は以下のサイトに掲載されている知見およびデータを参考に執筆しています。
サザエさんじゃんけん研究所公式ウェブサイト(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追記:続編となる記事を作成しました。
今回使用したソースコードは次の通りです。
Rで株価変動を分析してみた(隠れマルコフモデル, Regime-Switching Model)
今回は隠れマルコフモデルを利用して、個別銘柄の株価リターンを評価してみます。隠れマルコフモデルの概要については下記などをご参照ください。
https://www.slideshare.net/thinkn1108/150719-hmm
隠れマルコフモデルでは、「背後に観測できない状態が複数あること」を仮定して、説明能力の高いモデルを推定することができます。例えば、株価リターンデータに隠れマルコフモデルを適用すると、株式市場の背後にあるボラティリティの高い状態と低い状態、リターンの高い状態と低い状態を分けて評価することができます。
隠れマルコフモデルを用いた株価の実証分析については、下記のような論文があります。株価リターンの変動を表現する際にはRegime-Switching Modelと呼ばれることがありますが、内容は隠れマルコフモデルとほとんど同義と考えられます。
今回分析する銘柄は何でもよいのですが、野村ホールディングス【8604】を対象とします。隠れマルコフモデルを用いて野村HDの株価リターンがtopixのリターンから大きく乖離する部分を特定し、ニュースリリースなどがなかったかを検証します。
まずは、2016年の野村HDとtopixのチャートを重ねてみます。
上図は2016年中の株価変動率(対2016年1月4日終値)を示しています。赤がtopix、緑が野村HDの変動率を示しています。横軸が営業日(2016年は245日)、縦軸が変動率を示しています。(縦軸は左端で変動率0となります)赤線と緑線の推移は似通っているようですが、野村HDの方が変動率の絶対値が大きくなっているように見受けられます。
次は野村HDおよびtopixの日次対数リターンを算出し、単純にtopixリターンを説明変数として野村HDのリターンを単回帰してみます。
Call:
lm(formula = y ~ x, data = data)Residuals:
Min 1Q Median 3Q Max
-0.092599 -0.008326 -0.000348 0.007715 0.099519Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0001375 0.0011676 0.118 0.906
x 1.5476281 0.0702720 22.023 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 0.01824 on 242 degrees of freedom
Multiple R-squared: 0.6671, Adjusted R-squared: 0.6658
F-statistic: 485 on 1 and 242 DF, p-value: < 2.2e-16
単純な回帰分析でも決定係数は0.67程度とそれなりに高いことが分かります。なお、AICは次の通り-1258となりました。
> AIC(m.lm)
[1] -1257.639
次に、状態が2つの隠れマルコフモデルを適用してみます。
Markov Switching Model
Call: msmFit(object = m.lm, k = 2, sw = c(TRUE, TRUE, TRUE))
AIC BIC logLik
-1348.283 -1312.305 678.1414Coefficients:
Regime 1
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) 0.0021 0.0056 0.3750 0.7077
x(S) 2.1379 0.3910 5.4678 4.557e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 0.03490673
Multiple R-squared: 0.5042Standardized Residuals:
Min Q1 Med Q3 Max
-0.1048995084 -0.0031676084 -0.0005867352 0.0025023988 0.0904901470Regime 2
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) -0.0005 0.0008 -0.625 0.532
x(S) 1.4155 0.0502 28.197 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 0.01026669
Multiple R-squared: 0.8402Standardized Residuals:
Min Q1 Med Q3 Max
-0.0211668822 -0.0061988674 0.0001718118 0.0063824874 0.0202230937Transition probabilities:
Regime 1 Regime 2
Regime 1 0.5184655 0.1063328
Regime 2 0.4815345 0.8936672
Regime 1 は決定係数が0.5程度と小さいことから、topixリターンでは説明できない部分が大きい状態です。一方、Regime 2は決定係数も0.8程度と大きく、topixリターンによりほぼ説明可能な状態と言えます。AICも-1,348となり、単純な回帰モデルよりは改善していることが分かります。
上段が野村HDの株価リターン、下段がtopixのリターンになります。グレーの網がかかっている部分がRegime 1 の状態と予測される期間です。グレーの期間では野村HDの株価リターンが個別要因で変動していたことが推測されます。また、各Regime ごとの確率は次の通り予測されています。
Regime 1 と予測されている130~150営業日付近では、2016年7月28日の第1四半期決算発表および自社株買い発表等を受けて環境要因では説明できない株価変動が発生していたと評価できます。
今回使用したソースコードは次の通りです。
Rで葉っぱを分類してみた②(SVM, randomForest, Naive Bayesなど)
前回の記事からの続編になります。
前回は36種の葉っぱの形状データと手触り(texture)データについて、k近傍法による識別を行いました。今回はSVMやRandomForest, Naive Bayesなどの手法により、識別を行います。
今回使用する ソースコードは次の通りです。
各手法による識別率の結果は次の通りとなりました。
パラメータチューニングをだいぶ怠っておりますが、k近傍法以外の手法ではまずまずの結果を得ることができました。
前回の記事の考察の繰り返しになりますが、k近傍法での判別が難しいことから、各クラスの中でデータ距離が大きいことが示唆されます。また、各変数が独立であるとの仮定を置くNaive Bayesでも良い結果が出ており、ある程度変数間の相関を無視できることが示唆されます。
識別率のみを見ると線形判別が最もよい成績を出していますが、他の手法が優れている部分もあります。たとえばクラス7のデータなどはrandom Forestの方が優れています。
今回の記事では手法それぞれの特性と結果の違いを分析することはしませんが、それぞれの識別関数をアンサンブルする(組み合わせる)ことで、識別率は向上を図れると思われます。
仮にこのような多クラス分類が、葉っぱの分類ではなく、保険の料率にビックデータを織り込んでいく場合(例えばウェアラブル端末から取得した活動データを料率に反映する場合)に活用されることを考えてみます。
アクチュアリーに期待される役割として考えられることは、①多次元のデータをわかりやすく要約すること、②モデルの精緻さと簡明さのバランスをとること、③コストとリターンのバランスをとること、などでしょうか。
次回は株価リターンもしくはpython導入を扱う予定です。
Rで学ぶ損保数理②(パンジャーの再帰式とは?)
以前の記事(Rで学ぶ損保数理① - アクチュアリーはデータサイエンスの夢を見るか)
の続編になります。第2回目はクレーム総額の確率分布の導出を扱います。
損害額Xを指数分布、クレーム件数Nを負の二項分布とする複合分布について、パンジャーの再帰式やフーリエ変換を使用して近似値を求めています。
今回使用したコードについては次の通りです。
Rを使って葉っぱを分類してみた①(k近傍法)
今回はk近傍法をRで動かしてみます。
使用するデータセットは以下のサイトから引用します。
https://archive.ics.uci.edu/ml/datasets/Leaf
UCI Machine Learning Repository: Leaf Data Set
40種の葉っぱについて、形状データと手触り(texture)データが記録されています。今回はこのデータセットを用いて、多クラス分類の手法の一つであるk近傍法を利用してみます。
変数1~7の形状データを用いて散布図を描いてみます。
変数8~14の手触り(texture)データは次の通りになります。
変数とクラスが多いため、散布図で一見して評価するのは難しいように思われます。
今回利用するk近傍法は、直近のk点の学習データから多数決を行って最も多いクラスに分類を行う直感的に分かりやすい方法になります。
データセットを区分せず、学習データ=テストデータとすると次のような結果になりました。
k=3の場合の識別率 0.7764706
k=5の場合の識別率 0.7264706
k=10の場合の識別率 0.6588235
多数決に用いるデータ数を増やすと識別率が落ちることが分かりました。
参考に以前取り上げた線形判別分析も行ってみると、次の通りになりました。
線形判別分析の識別率 0.8705882
線形判別分析の方が良い結果を得られてしまいました。結果の評価の仕方は難しいですが、クラス内でのデータの距離が大きいことで、kNNが機能しにくくなっている可能性があります。
次回はSVMやNaiveBayesを取り上げたいと思います。
今回使用したソースコードは以下の通りです。
統計検定準1級に効率的に合格する勉強方法と参考書籍
本記事では自分が統計検定準1級を受験した際の勉強方法についてまとめます。
1.試験の特徴
統計検定は専用の参考書などがまだ少なく、独学を中心に勉強を進める必要があります。その一方で試験範囲は非常に広いものになっており、全範囲を満遍なく学習しておく必要があります。アクチュアリー試験の数学と比較すると、多変量解析や機械学習のトピックが含まれていることが注意点になります。
統計検定準1級の試験問題は、前半の選択問題及び部分記述問題、後半の論述問題に大きく分かれます。それぞれに足切りなどは設定されていないようですが、時間配分が偏らないように配慮するとともに、バランスよく点数をとれるように実力をつける必要があります。自分が受験した際には、前半の計算問題などで確実に得点できるよう問題演習を行うとともに、後半で的外れな記述をしないように過去問の研究を行いました。
また試験時間が120分とかなり短いことから、効率的に問題を解くことも重要になります。過去問を解く際などには実際に時間を計って練習を行いました。普段使用することが少ない関数電卓も迷いなく操作できるようにすることを心がけました。
2.使用した参考書
参考書としては下記の書籍を利用しました。
日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2014〜2015年]
- 作者: 日本統計学会
- 出版社/メーカー: 実務教育出版
- 発売日: 2016/03/15
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
統計検定の公式問題集は解答・解説が充実しており、本番の練習になります。2016年11月現在では収録されている年数が少ないので、2017年の受験を考えている方は2016年度試験分が収録されるまで購入を待った方がいいかもしれません。
機械学習分野の知識を学習するのに最適と思われます。ある程度統計の知識がある方は入門書としてスラスラ読める一冊です。数式がきちんと解説されているのもさることながら、各手法の説明が丁寧になされており、統計検定の論述問題に回答するのに非常に参考になります。章ごとに練習問題があるのも理解につながります。
大学の一般教養レベルの確率・統計の問題が分野別に練習できます。解説が充実しており、基礎から復習できる良書です。アクチュアリー試験の数学の際にも重宝しましたが、統計検定でも役立ちました。高校数学のレベルから導入があるため、初学者の方にも学習しやすい一冊です。
- 作者: 東京大学教養学部統計学教室
- 出版社/メーカー: 東京大学出版会
- 発売日: 1991/07/09
- メディア: 単行本
- 購入: 158人 クリック: 3,604回
- この商品を含むブログ (82件) を見る
統計学の教科書としては最もオススメな本です。統計検定の勉強の際には、忘れてしまった分布の性質などを復習するため、辞典のように参照しました。
3.終わりに
統計検定準1級は1回の試験で出題される問題数が多く、論述や作図問題など、問題の種類も多岐にわたることから、さまざまなタイプの問題を想定しムラなく準備しておく必要があります。試験までの残り時間は少ないですが、今回受験される方は是非追い込みを頑張ってください。