AIでスロット!

こんにちは。

今日はAIを使えばスロットで勝てるのか?

みていきたいと思います。

 

とは言いましても諸事情により実際にお金はかけられないので、

iPhoneのスロットアプリで検証していきたいと思います。

 

まず前提として、スロットには『設定』というものがあります。

今回ターゲットにした機種も1~6まで『設定』があり、

『設定』が高いほど勝ちやすいです。

そして各設定ごとの当たりの確率が公開されています。

 

つまりAIですべきことは『設定』を予測することです。

 

店頭に並ぶ台にはもちろん『設定』は書いていません。

わかるのは

・累計回転数

・大当たりの数

・中当たりの数

です。

 

これらのデータから『設定』を予測してみようという試みです。

 

幸いなことに今回検証に使うスロットアプリは、本物を忠実に再現している上に、事前に設定を決めることができます。

 

今回は

設定1、設定4、設定6

の3つについて1万回まわした結果をインプットして設定を当てられるか検証してみました。

 

○設定1の場合

AIの予測は…

f:id:ois-blog:20200322210616p:plain

設定1の予測

ダントツで設定1を予測しています!

 

○設定4の場合

AIの予測は…

f:id:ois-blog:20200322211156p:plain

設定4の予測

惜しいですね!でもほぼほぼ当たってます。

 

○設定6の場合

AIの予測は…

f:id:ois-blog:20200322211319p:plain

設定6の予測

こちらも惜しいです!ほぼ当たっています。

 

ということで大成功!と思いお店に見に行くだけ見に行ってみました。

 

すると…

 

1万回も回っていることはなく、1500回程度でした…

本当は1500回程度で何回か予測してみるのがよかったかもしれません…。

 

一応、お店のデータも解析しました。

5台解析したのですが、4台は設定1か2という判定。

1台だけ設定3か4という判定でした。

コロナウィルスのTwitterでの反応

こんにちは。

日本でもコロナウィルスが猛威をふるうようになりました。

みなさまが健康であることを祈るばかりです。

 

さて、ここではTwitterでのコロナウィルスの反応を見ていきます。

当社のTwitter感情分析アプリを使って『コロナ』で検索しました。

 

結果がこちら

f:id:ois-blog:20200312102720p:plain

感情分析結果

ネガティブな感情ばかりかと思いきやわりとまんべんなく感情が分散していました。

試しに分析対象になったツイートを読んでいくと、第一印象として冷静なツイートが多く、感情的なツイートばかりではなかったことがあげられます。

また、政府の対策によって最悪の事態は回避できたとするような、ポジティブなツイートもみられました。

 

「喜び」が強く出ていますが、

・楽しみが奪われた

・~だったら嬉しい

のような表現にも反応してしまった可能性が高いです。

これは自然言語処理の難しさですね。

Twitter分析!

こんにちは。

今日はひさびさにTwitterを分析していきたいと思います。

 

今回気になったのは

『ツイートをキーワード検索したとき、どの時間帯でもいいねやリツイートの数の見込みは変わらないか?』

です。

 

とりあえず見込みは変わらないものとして分析していきましょう。

 

キーワードに選んだのは、お笑い芸人のオードリーさん。

『オードリー』で検索、ツイートを集めたとある日の時間帯ごとのいいね、リツイート数の平均値がこちら

f:id:ois-blog:20200303103437p:plain

時間帯別データ

夜中の3時台に突然高いいいね数(の平均値)を記録しています。

夜中になぜ?

 

調べてみると、夜中の1時~3時までオードリーさんがラジオ『オールナイトニッポン』に出演していたようです。

 

ラジオの直後にTwitterがにぎわったのかもしれませんね。

ここで、いいねやリツイートは時間帯に依らないとかんがえたときに、

この高い数値はどれくらい起こりにくいことなのか?

分析してみました。

 

検証法①

今回は時間帯ごとにそもそもツイート数が違うであろうことを踏まえて、

平均値で考えています。

そのせいでほとんど小数になっています。

小数のまま扱うには全体の平均が低いのですが、とりあえず小数のまま分析しました。

 

結果は

平均いいね 23.22以上が起こる確率

0.00000000477%  限りなく起こりえない…

平均リツイート 1.84以上が起こる確率

16.9%    まあまあ起こりうる…

 

いいねとリツイートでだいぶかけ離れた結果にはなりましたが、だいぶ起こりえないことが起こっているようです。

つまりオールナイトニッポン』出演の影響は無視できなそう…

 

検証法②

今度は小数のままではなく四捨五入して整数に直します

そうすることで、もともと当てはめたかった確率分布で分析できます。

(検証法①はやむを得ず別の確率分布を使っています。)

 

一応四捨五入したデータがこちら

f:id:ois-blog:20200303105700p:plain

時間帯別データ

 

結果は

平均いいね 23以上が起こる確率

0.0000149%

平均リツイート 2以上が起こる確率

5.22%

 

検証法①と比べると、いいねのほうは確率が上がっていますが、リツイートの方は下がっています。

どちらもかなり起きにくいことが起きているのが分かります。

やはりオールナイトニッポン』出演の影響は無視できなそうですね。

 

しかし先程から3時台に数値が上がっているのは『オールナイトニッポン』が影響していると決めつけていますが、本当に原因はそれだけなのでしょうか。

 

気になったので、

キーワード『オードリー ANN』でツイートを検索し、調べてみました。

※ANN…オールナイトニッポンのこと

 

同じように時間帯別平均値をみてみると

f:id:ois-blog:20200303110707p:plain

時間帯別データ

なんと3時台の平均いいね数は1.0

リツイートにいたっては0.0

 

いやいや、とはいえ前後よりは高いから1.0でも高いほうなのではと思ったのですが、上の検証法②を適用したところ、

 

平均いいね数 1.0以上が起こる確率

95.6%

余裕でもっといいね数つくみたいです。

 

ということで、

時間帯に関係なくいいねやリツイートがつくというのは、どうやら無理がありそうなことが分かりましたが、それがラジオ『オールナイトニッポン』出演の影響なのかはなんとも言えない結果になりました。

というのも『オールナイトニッポン』を聞いていた人全員がツイート内に『ANN 』といれることはないでしょうし、他に有力な原因も考えられません。

 

そもそもこれは特定のキーワードの特定の日にちの場合を分析したにすぎないので(とはいってもツイート数は3000ツイート以上ですが)Twitterの分析としてはだいぶ偏りがあるでしょう。

ロジスティック回帰実装

こんにちは。

 

AIの重要な課題の1つは”分類”です。

 

今日は分類アルゴリズムの中でも特に有名なロジスティック回帰を実装してみました。

 

数式で書き起こすところから実装したところ、感想は

簡単だ。。。。

しかし簡単さにも関わらずアヤメデータ(花のデータ)の分類問題の正解率は90%以上

 

ちなみに2値分類(例えば男女の判別など)と多値分類(選択肢が2以上の場合)の両方とも実装してみましたが、どちらも簡単に実装でき、多値での正解率(交差検証法による)は

98.7%!

 

ちなみにCythonによる高速化も行ってみました。

 

2値分類→1.5倍高速化

多値分類→高速化できず

 

Cythonは使い方によっては100倍以上高速化されることもあるのでなんとかAIに適用したいものです。。。

 

 

最終決戦! 弊社AI VS Scikit-Learnライブラリ

前回の記事で気象庁からダウンロードした気象データに対して正解率を競い、

弊社AIが全勝ということで終わりました。

 

しかしですよ、こう思った人もいるのではないでしょうか…

アヤメデータで勝たないと意味ないんじゃない?

そうです。最初に負け気味判定だったアヤメデータ。

アヤメデータで勝ってこそ真の勝利

 

そこで弊社AI、ゼロから作り直しました。

ベイズモデルには変わりありませんが、別の理論を採用しました。

 

アヤメデータと気象データの両方についていざ勝負!

 

判定方法はより公平性を期すため、交差検証法の一種であるジャックナイフ法を5回行った時の平均正解率を競うことにしました。

(テスト回数はそれぞれ750回になります。)

また、前処理、チューニングは原則してませんが、敵に塩を送るようですがSVMだけは線形分離だと不利かなと思い非線型カーネルにしています。

 

結果がこちら

f:id:ois-blog:20200207162933p:plain

検証結果

僅差ではありますが、

弊社AIの全勝です!

 

でもこう思った人もいるでしょう、

僅差だし、偶然なんじゃないの?

 

そこで今回は仮説検定にかけてみました。

統計的に”弊社AIの正解率の方が高い”と言えるのか確認しました。

 

有意水準5%のt検定によると、

◯アヤメデータについて

決定木ランダムフォレストについては明らかに弊社AIの方が正解率が高い

ロジスティック回帰SVMについては差があるとは言い切れない

◯気象データについて

SVMのみ明らかに弊社AIの方が正解率が高い

他は差があるとは言い切れない

 

という結果でした。

ほんとに僅差の戦いで、心臓に悪い企画でした笑

しかして圧倒的に負けているのは速度です。

Cythonによる実装を試みる予定なので、今度は速度を記事に取り上げるかも知れません。

 

【続報】ついに勝利!? 弊社AI VS Scikit-Learnライブラリ

初めての連続投稿です。

 

前回”やや負け気味”の判定で終わった

 

弊社AI  VS  Scikit-Learnライブラリ

 

しかし負けたままでは終われません。

負けた直後に弊社AIを強化改善しました。

それとアルゴリズムの致命的なミスを発見しました…。

 

そして前回はScikit-Learn側で用意しているアヤメデータを対象データとしましたが、

今回は公平を期して気象庁の天気データを対象データとしました。

 

気温、日照時間、気圧から天気を判別できるか??

ただし気象庁の天気の判定は”晴後一時雨”などバリエーションが多すぎたので、

”晴後一時雨”→”晴”

のようにシンプルに直してあります。

 

今回は学習データの量は100、50、30で検証しました。

前回と同様1000回計算したときの平均正解率です。

以下が勝敗結果

f:id:ois-blog:20200204173149p:plain

勝敗結果

全勝でした!!

しかし今回は弊社AIも含めどのアルゴリズムも前処理やチューニングしていません。

なのでベストな結果同士を比較できたわけではありませんが、ここに一つベイズモデルの優秀さを示せたと思います。

【訂正】表の学習データですが、上から「50,100,120」となってますが、「100,50,30」の間違いでした。

弊社AI VS Scikit-Learnライブラリ

こんにちは。

今回は対決企画です。

弊社開発の分類用AI(ベイズ確率モデル)とPython機械学習ライブラリとしてお馴染みのScikit-Learnライブラリのアルゴリズムで予測精度を競います。

 

対象のデータはSkit-Learnライブラリから提供されている、有名なアヤメデータ(分類用の花のデータ)です。

 

今回Scikit-Learnからエントリーしてもらうのは

・ロジスティック回帰

SVMサポートベクターマシン

そして最後は最強の刺客

・ランダムフォレスト

 

性能の検証は、データを学習用と予測用に分けて検証するホールドアウト法を使います。今回は学習データの量を変えて、それぞれ1000回予測させたときの正解率の平均値を比較します。

 

では対決結果

f:id:ois-blog:20200204114110p:plain

対決結果

学習データ量が少ない場合は弊社AIがロジスティック回帰やSVMに優っています

データ量が少なくても予測できるのはベイズモデルの強みです。

しかしデータ量が増えてくると逆転されてしまいます。

 

そしてランダムフォレスト。さすが最強の刺客だけあって1回も勝てませんでした。

ランダムフォレスト最強説を唱えるデータサイエンティストがいるのもわかります。

 

Scikit-Learnとの対決はやや負け気味といったところでしょうか。

しかしデータ量が少ない環境ではScikit-Learnロジスティック回帰SVMを上回れたのは良い成果と言えるでしょう。

 

弊社の分類AIはまだ開発したばかりでまだまだ伸びしろがあります。

改良を重ねてより良いモデルを目指します。