人工知能を使った予測の研究を進めている。
すでに実施している方もいると思うが、単純にはいかないだろう。
データをどう使うかが、キモであると考える。
人工知能のシステムは、機械学習という手法を使って、あたかも学習をするかのように、難解な問題を
コンピューターが解を導くというものである。
当選金の分配の観点から、当選数字は意図的に変えられている可能性があるのだが、そういったものにも
特徴がでてくるのは、間違いない。そういったものは、人工知能のようなものを使わないと、
とらえきれない、と思われる。しかし、精度のいい解を得られるかはやり方次第なのだ。
例えば、将棋ソフトで人工知能の技術を使って、プロ棋士にも勝てるようになったわけだが、
将棋ソフトもいろいろな人が作っており、強いソフト、弱いソフトが存在する。
同じような技術を使っても、その性能には大きな差がでるのが実情である。
まずは、基本的な、機械学習の手法を使った予測を試行して、検証を進める。
もっとも簡単なくじである、ナンバーズ3で試行したいと思う。
最強といわれる将棋ソフトのポナンザを作製した山本一成さんは東大出身の天才ですが、こういう人がAIで予測をしたら、
当てるソフトを作ってしまいそうですのでお願いしたいところですが、そんな暇はないと一蹴されるでしょうね。
当方のような一般技術者では難しいかもしれませんが、凡人の夢のため、とにかく挑戦あるのみですね。
Googleの3大プログラミング言語は、C言語、JAVA、Pythonと言われています。
GoogleでもAIで使われてることが多いというPythonを使ってプログラミングをしていきたいと思います。
機械学習には、「分類」「回帰」「クラスタリング」という3つの主な分野があります。
将棋ソフトのポナンザでは、ディープラーニング(深層学習)という手法ではなく、
ロジスティック回帰という機械学習の手法をつかっていると、著書に記載がありました。
数値を予測するという課題なので、「回帰」の手法を使うことを考えたいと思います。
もともとわたしは、技術者でも、機械技術者ですから、情報処理の専門家ではありません。
統計的手法については、ある程度の知識をもっています。
実験計画法や品質工学といった学問を勉強していますので、統計的手法であれば、ある程度できるのですが、制御された結果を
予測するのは、こういう手法では、不可能です。したがって、人工知能、機械学習を使いたいのです。
いずれにしても、まず情報を整理するところからスタートです。
目的変数: 当選数字
説明変数: 過去の当選数字
教師あり学習か教師なし学習か: 正解がある教師あり学習
線形回帰か非線形回帰か: 非線形回帰
といったところが、基本情報になるでしょうか。
Pythonで機械学習をやるのに、すでにライブラリが存在します。
scikit-learnというライブラリを使うと、自動的に計算してくれるようです。
エクセルより簡単すぎますね。
しかし、その前にPythonの使い方を勉強しなければなりませんので、ハードルはあります。
その前にAnacondaというプラットフォームがあり、これをインストールすると、科学技術計算できる
ライブラリがすべて使えるというではありませんか。これは便利。
早速インストールすると、開発環境のプログラムもあるではありませんか。
いくつかありますが、プログラムと実行結果を左右の画面でみれるSpyderというのがよさそうです。
(しかし、ネーミングがおもしろいですね。Pythonというのは、にしきへび、Anacondaというのは、巨大へびですね。
Spyderは、くも。すべて恐怖映画の定番動物です。Pythonという名前は、コメディアンのモンティパイソンからとられたという
説ですが、そこから発展してるんですね。)
しばらく、本記事を更新していませんでいたが、その間研究を進めておりました。
経緯を記載したいと思います。
まず、回帰で予測するのは、難しいということがわかりました。
非線形の近似をとるわけですが、次数がどこに設定すればよいかわかりません。
この次数の設定で予測値が変わるわけですが、前の2回分の数値によって変わり、そこから通りうる曲線の予測値がでるわけです。
この予測値は連続した数値には適していますが、不連続なデータには意味がないことになります。
もちろん、ナンバーズ3の予測値が連続なはずないわけなので、まったく使えない予測になります。
Software Designという雑誌の2018年4月号に機械学習をつかってナンバーズ3を予測するというまさにドンピシャの
わたしがやろうとしている記事があり、驚きましたね。もちろん精読しましたよ。
↓Software Design(2018年4月号)
Micorsoft AzureML というクラウドサービスを使うと、プログラミングをしなくても簡単に機械学習が行えるということで確認
しましたが、記事の通りやるとまったくおかしな答えになります。著者も実際には使えないことを述べていますが、おかしなところが
あることがわかりました。この例では、線形回帰なので、まったく意味がない答えになっています。
しかし、非線形でも基本的に同じことになります。
したがって、回帰での予測はやめることにしました。
使えるとしたら、やはりディープラーニングしかなさそうです。
これで、主催者の意図のくせを読んでいくしか方法はなさそう、ということです。
それで、ディープラーニングを実施する方向としました。
現時点で、ディープラーニングの実施前に、基礎となる多層ニューラルネットワークを使った予測を研究しています。
これ、どういうデータをどう使うかで、結果が変わってくるのです。
過去のデータを使って、テストをすることで、的中率が確認できるわけですが、現時点では3割程度の的中率が最大です。
しかも、わたしの予測方法は、生データを3つの因子に分解した状態なので、単純に3割当てられるわけではないのです。
また、ディープラーニングでは、過学習という鬼門が存在します。
的中率があがると、過学習になってしまうというジレンマに陥ることがわかります。
過学習というのは、過去のデータとまったく同じものを探しくるという検索をしているのと同じになります。
ですので、傾向を考慮した結果でなく、過去と同じもの見つけてくることになります。
(どこかの癖をみつけこないとだめです。たとえば、30個前の結果に影響されているなど。しかし、過学習になると、
おそらく最近の3個程度の数字の並びと同じところを過去のデータから探してくるだけになると思われます。)
数字選択式宝くじは、おおよそ、過去と同じ結果を作らないように結果を出していると思われますので、
過去と同じ結果を予測値にすると逆に外れることが多くなります。
過去のデータそのものを覚えるのではなくて、過去のデータの傾向、なにかの癖を学習してもらわないと当たらないわけです。
過学習にならずに、的中率をどこまであげられるかが、いまの課題になります。
設定値をどこまで洗練できるか、ここにかかっています。
どういう生データを使うか、何層にするか、ニューロン数はどうするか。
過学習にならずに、正解率をどこまであげられるのか。
テストをしまくって、確認するしかなさそうです。
当面の的中率は50%を目指します。
90%ができたら、富豪への道がひらけます。最終目標は90%ですね。
ですので、他にAI予測をしている方もいると思いますが、同じ結果にはなりえませんね。
まずは、宝くじ研究をしていない人だと、生データを使っているでしょうから、これでは的中率があがることはありえません。
とにかく、難しいところですが、継続ですね。
※
AI予測をビンゴ5で試行していますので、ご興味のある方はぜひご覧ください。
左側のコラムの投稿欄に毎週予測を実施しています。