株価予測AIアプリ

こんにちは。

弊社で開発したAIを使って任意の会社の株価の動きを予測するアプリを作りました。

企業コードを入れることで様々な企業の株価の動きを予測してくれます。

データは6時間おきに自動更新され、最新の情報のもとで予測します。

 

以下、予測例です

f:id:ois-blog:20200129091540j:plain

A社

f:id:ois-blog:20200129091558j:plain

B社

f:id:ois-blog:20200129091619j:plain

C社

f:id:ois-blog:20200129091635j:plain

D社

青線・・・実際の株価

赤線・・・AI予測

 

グラフを見るとAI予測の赤線はしっかりトレンドを捉えていることがわかります。

右端の赤線だけの部分が向こう10日間の予測になります。

 

以上、開発したアプリの紹介でした。

F XをAIで予測!

こんにちは。

今日は弊社で新しく開発したAI(回帰モデル)で実際にFXのデータを予測できるか試してみました。

 

用意したのは毎日の円/ドルデータです。

過去200日まで遡って170日分を学習データ、直近30日分を予測用データとしました。

結果がこちら

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

FXデータとAIの予測

青線・・・学習データ

赤線・・・AIの予測

緑線・・・正解

 

全体としてトレンドは掴めていますね。

予測部分に関しては当たったのか微妙です・・・。

この後下がったとしたら当たっていると言うことになりますね。

 

今回開発したAI、複数の要素からの予測も可能になっています。

いきなりハードルの高いF Xにチャレンジしてみましたが、他のデータにもチャレンジしてみたいと思います。

統計とマーケティング

あけましておめでとうございます。

今年もよろしくお願い致します。

 

新年最初の記事は、統計とマーケティングです。

 

統計ってどんなことに役に立つのか?

.

.

.

そもそも統計ってなんだ?

という方も多いと思うので、今日はざっくりと紹介していきたいと思います。

 

まず統計の話をするにはデータが必要です。

売り上げデータ、視聴者データ、試験データなど、世の中はデータで溢れています

 

これらのデータは自分からはなにも語りませんが、

こちらから積極的に話しかけることで色々なことを教えてくれます。

 

統計をする上で必ず登場するのが統計量

統計量とはデータから算出される値の総称です。

例えば売り上げデータなら、売り上げ合計も統計量、売り上げ平均も統計量です。他にもさまざまな統計量があります。

 

では、より実践的な話をしましょう。

 

販売業において、あるキャンペーンを打ったとしましょう。果たしてキャンペーンの効果があったのかなかったのか、統計が教えてくれます。

 

キャンペーンにより売り上げが上がっていればそれで効果があったといえるのではないか?と思うかもしれませんが、そもそもキャンペーンを打たなくとも売り上げというのは上下するはずで、売り上げの伸びがキャンペーンによるものか、"たまたま"なのか判定する必要があります。

 

その答えは、統計学の中の"仮説検定"が教えてくれます。まずは確かめたいことの逆の仮説をたてます。

キャンペーンは売上に"影響していない"。」そして対抗馬として「キャンペーンは売上に"影響している"」という仮説をたてます。ここで、"影響していない"という前提で話を進めていきます。その結果、実際の売上の伸びが"たまたま"で起こり得る出来事なのかを確率論で判断します。

 

"たまたま"で起こり得ないことが起きている

"影響していない"という前提がおかしい

"影響している"

 

といった流れになります。

もちろん"たまたま"で起こり得ると判定されることもあります。

その場合は、"影響してるとはいいきれない"というなんともどっちつかずな回答になります。

 

このように、統計は人間の直感に対して理論的な根拠を与えてくれます

とは言っても統計も100%の自信では回答できません。

しかし人間の感覚よりもはるかに客観的で確かな回答をしてくれます。

 

ただ単にデータを眺めて直感で判断するのではなく、統計的にデータを眺めると意外な答えが返ってくるかもしれません。

Twitter 男女別データ比較

こんにちは。

今日はTwitterAPIを使って取り出したデータを使ってお話していきたいと思います。

 

TwitterAPIを使えば、

・ツイート本文

・いいね数

リツイート

・投稿日時

・ユーザー情報

など、様々な情報を手に入れることができます。

 

今回は「菅田将暉 ANN」で検索した結果のツイートを男女別に分析してみました。

リツイート、URLを含むツイートははじいています。

 

ツイートごとのいいね数の平均値を男女別に比較してみましょう。

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

いいね数男女別平均値

女性のほうがややいいねが多い傾向があるようです。

 

今度はばらつきの大きさをみてみましょう。

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

男女別ばらつき

女性の方がばらつきが大きいと出ています。

つまり女性の方がいいねが多いものから少ないものまでばらついているということですね。

 

ここまで簡単に男女別にデータ分析をしてきましたが、実はTwitterAPIでは性別はわかりません。そもそもTwitterの性別はアカウントの持ち主からしかわからないようになってます。

 

ではどうやって性別のデータを手に入れたか?

今回はベイズ統計モデルの機械学習を使用しました。

機械学習といっても、教師なし学習なので教師データは要りません

詳しいアルゴリズムは割愛しますが、ツイッターの本文を読み込ませて男女に自動分類させました。

 

実はこの男女の判別こそが今回手がかかっったところであり、上の統計はオマケです笑

ツイートに限らずあらゆるテキストを男女に分類することができ、他の場面でも活躍しそうです。

 

ちなみにこの分類アルゴリズム

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

観測データ

例えばこのようなデータをインプットすると、

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

色分け分類データ

このように3つに分類してくれます。

確かに近しいデータ同士をひとかたまり(クラスター)として分類してくれていますね。

同じように男女を分類しています。

 

では。

ベイズ推定と最尤法

こんにちは。

今日は多項式回帰を通じてベイズ推定最尤法について話していきたいと思います。

 

まず準備したダミーデータはこちら

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

ダミーデータと真の分布

青い点が今回観測された(とする)データです。

本来はオレンジの曲線上に乗るはずのデータが、なんらかのノイズによりずれてしまっていると考えます(実際は意図的にずらしました)。

 

さて、多項式回帰を使って、観測された青い点からオレンジの曲線=真の分布を予測しようという試みます。

 

多項式回帰とは

y=w_0+w_1x+w_2x^2+...+w_nx^n

の形で真の分布を予測するものです。

本来はモデルエビデンスの評価によって何次式になるか予想するのですが、今回は10次式で固定します。

あとは観測されたデータからw_0〜w_{10}を学習するだけ。

 

まずは最尤法を試してみましょう。

観測値と予測値のずれが最小になるようにします。

解析的に解けるのですが、途中計算は割愛します。

w=(X^TX)^{-1}X^Ty

Xとyが観測データです。この数式に観測データをあてはめてグラフを描いたのがこちら

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

最尤法グラフ

大まかには形を捉えていますが、細かいところでグニャグニャと曲がりノイズまで学習してしまっています。

その代わり全ての観測データを通っています。

今回はそこまでひどくありませんが、学習データに適合しすぎて真の分布とはかけ離れてしまうことを過学習と言います。

最尤法は過学習を起こしやすいという点があります。

 

今度はベイズ推定をしてみましょう。

ベイズ推定の場合は最尤法と違い重みwを一つの値として求める(点推定)ではなく、確率分布として求めます。

ベイズの定理により観測データを学習した重みwの事後分布と、重みwを固定した時のyの分布を掛け算すれば、yとwの同時分布になります。

これをwについて積分消去(周辺化)することで、あらゆるwをその確率を考慮して重み付けしたyの分布が求まります。

これが予測分布です。

今回は重みwの分布としてガウス分布を使用したので解析的に予測分布を求めることができ、スチューデントのt分布になります。

その期待値をグラフ化したのがこちら

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

ベイズ推定グラフ

微妙にずれてはいますが、最尤法のようにグニャグニャと曲がってはいません。真の分布をよく捉えていると思います。

 

ベイズ推定の良さが少しでも伝わったでしょうか?

ベイズ推定の理論についてはかなりはしょった書き方になってしまいましたが、今回伝えたかったのは

 

最尤法→簡単だが過学習しやすい

ベイズ推定→やや難しいが過学習を起こしにくい

 

です。

 

〜統計検定2級 合格記〜

こんにちは。

今日は統計検定2級を受けた時のレポを書きたいと思います。

 

統計検定2級を受けるにあたってまず最初に勉強したのが、

 

統計学入門 東京大学出版会

 

言わずと知れた”赤本”です。

文体はやや硬いものの、高度な数学は使っておらず、目で追うだけでさらさら読めました。

念のため2回読んだのですが、やはり2周するとかなり理解度が上がります。

 

そして公式テキストで過去問を解きました。

 

1回目 55%

2回目 65%

3回目 75%

4回目 80%

 

と順調に正答率は上がったのですが、その後は70〜80%の間で伸び悩み、

6割で合格とはいえ少し不安でいました。

 

そこで、評判はめちゃくちゃ悪いのですが、標準テキストを購入。

ほぼ1日で読みました笑

最後の方は少し難しかったので試験に関連する部分だけつまみ読み。

評判の割には読みやすく内容も濃いいい本だったと思います。

(改訂されたからかも?)

 

過去問(6回分)をほぼ2周していざ試験。

 

今回受けたのはCBT方式の試験で、パソコンスクールで受験しました。

 

90分 32問(過去問の筆記試験は34,35問でした)

 

序盤は表やグラフの読み取りなど割と簡単で地味な問題が続きます。

中盤になると確率や確率分布の問題(計算ミス注意)。

終盤は区間推定や検定、回帰分析でした。

 

序盤→中盤→終盤 と確実に難易度が上がっていきます。

そして終盤になるともう疲れてくるので問題文読むのもしんどいです‥

 

それでもなんとか最後まで解き、結果は‥

 

88点(合格点は60点)

 

まさかの初見の問題では自己ベストでした笑

 

やはり資格に向けて勉強すると成長を感じます!

これからもG検定や統計検定1級など、チャレンジしていきたいですね!

リッジ回帰と正則化

こんにちは!

今日は正則化について扱っていきます。

前回FXデータに対して重回帰分析を行いましたが、重みはさほど大きくなりませんでした。これはもともとのデータが直線的だったからです。

 

しかし一般的にデータが直線的であるとは限らず、すると重みがとても大きい値になることがあります。これを過学習と呼びます。

 

過学習してしまうと、学習データにはよく当てはまるのですが、未知のデータに対する予測精度は下がってしまいます。

 

そこで過学習を防ぐために重みが大きくならないようにするのが正則化です。

正則化された回帰分析はラッソ回帰リッジ回帰が有名ですが、ここでは実装が簡単なリッジ回帰を行うこととします。

 

まずはこちらの画像、

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

観測されたデータと真の分布

青い点が観測された10個のデータ

赤いラインは本来観測されるべき真の値です。

このようにデータを観測すると誤差がでます

 

誤差のあるデータから本来の分布を探し出すのが回帰分析です。

 

まずは普通に多項式回帰をしてみます。

あえて過学習しやすいように9次の多項式回帰です。

結果がこちら

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

正則化なしの回帰分析

赤い線が正解、緑が回帰分析で予測した曲線です

青い点(観測データ)は全て通っているものの、赤い線をうまく捉えているとは言いづらいです。

 

そこで正則化をして重みの絶対値を小さい値に抑えてみました。

するとこちら

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

正則化した回帰分析

多少のズレはあるものの赤い線の特徴をだいぶ捉えているのがわかります。

観測データの外れ値は無視されていますね。