こんにちはー。管理人のピヨ猫でーす。
機械学習の回帰分析という手法で将来の予測が出来るって聞いたんだけど、やり方が良く分からないんだ。
やり方を教えてほしいなー。
分かったよー。回帰分析がどのようなものなのかと、SONY Neural Network Consoleを使って回帰分析を行う具体的なやり方を説明するね。
1.機械学習で予測を行う手法(回帰とは)
将来を予測するとはどういうことか
将来の予測をするとはどういうことでしょうか?
将来の予測には例えば天気予報で明日は晴れるとか、明日の株価は上がるだろうなどがあります。
こういう予測はどうやって行っているのでしょうか?あてずっぽうでは当たらないので、予測には何らかの根拠が必要です。
では根拠とは何かと言えば過去の実績です。
天気を予想する場合、雲が多ければ雨が降りそうとか、雨の日が続いたから次の日は晴れるだろうとかです。
この場合、雲が多い = 雨が降る確率が高い という過去事例を参照し、今雲が多いから雨が降るだろうという予測を立てています。
また、過去に晴→雨→雨→雨→晴というパターンが多かったから、晴→雨→雨→雨ときたら、次は晴だろうと予測を立てています。
分類と回帰
先ほど述べた通り、将来を予測するには過去の実績を参照しますが、過去実績の使い方には大きく分類と回帰の2つの手法があります。
分類とは
分類はその名の通り、物事を分類することです。
例えば空を見て雲が多い、雲が少ないと分けることを分類と言います。
分類を使って将来を予想する場合、例えば過去1ヶ月の雲の量と次の日の天気を集計しておきます。
- 雲が多い日 = 次の日に雨が降った回数 10日、雨が降らなかった回数 5日
- 雲が少ない日 = 次の日に雨が降った回数 5日、雨が降らなかった回数 10日
上記の場合、今日の雲の量を確認すれば、明日の天気がどうなる可能性が高いかを予測できます。
回帰とは
回帰は連続値のデータに近似する法則を導くことです。
いきなり難しくなりましたが、例えば投げたボールの軌道を予測する様な場合に用いられる手法です。
ボールの動きは連続的ですし、将来の動きも連続的です。こういう場合にどうするかというと一つの方法としてボールの動きに合わせて線を引いてみることが考えられます。
ボールの動きに合わせて線を引いてみると、将来のボールの軌道が見えてきますね。これを近似曲線と言います。
回帰はこの近似曲線を導くことを言います。
参考資料
回帰についてもっと詳しく知りたい場合は、以下の記事を読むのが良いかと思います。
https://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90
2.SONY Neural Network Consoleとは
今回、回帰を試すにあたり、SONY Neural Network Consoleを用いますので、簡単にSONY Neural Network Consoleを紹介します。
SONY Neural Network Consoleは、SONY製の機械学習オープンソースNNabla(Neural Network Libraries)の統合開発環境です。機械学習の開発環境としてはGoogleのTensorFlowが有名どころですが、NNabla/NNCはTnesorFlowと比べ開発環境が視覚的で初心者には分かり易いところに一日の長があります。2017年11月にβ版が公開され、2018年5月に正式サービス化されました。
詳しくはこちらの記事を参照ください。
3.回帰分析の手順
ディープラーニングで回帰を行う前に、簡単に回帰のやり方を見てみましょう。
注1)初めて回帰を行う方に分かり易い様に簡単に記載しています。 機械学習の世界でこういう言い方はしないなーという書き方もしています。
注2)画像はイメージです。試しながら画像とったので、一部、整合が取れていない部分がありますm(__)m。手順は合っています。
① データを用意する
まずは回帰を行うための過去データを用意します。今回は(x, y)のデータセットをx=1~x=20の20個用意しました。
② 近似曲線を引いてみる
用意したデータをたどって線を引いてみます。今回は3本の線を引いてみました。
③ 正解と比較する
さて、上記で引いた線はどれが正解でしょうか?
どれも合っている様に見えます。実はどれが正解かは正解と突き合わせてみないと分かりません。
x=21~x=25のデータも実は用意してあったので、結果があっていたか見てみましょう。
真ん中の直線が合っていそうですね。
回帰分析の手順の纏め
回帰分析は、①過去データを用意する → ②近似曲線を引く → ③正解データと突き合わせて近似曲線の妥当性を確認する。
を行います。近似曲線が答えと合わなければ②と③を繰り返します。
今回は近似曲線を手で適当に引きました。しかし、適当に線を引いていると何時正解に辿り着けるか分かりません。
ここで機械学習の出番になります。機械学習を用いると、より正解に近いだろう線をAIが考えて線を引いてくれます。
4.SONY Neural Network Consoleを使って回帰を実施する方法
① データを用意する
1.CSVデータの準備
まずは回帰を行うための過去データを用意します。
訓練データ(tran.csv)は近似曲線をAIが引く際に参照するデータで、テストデータ(test.csv)は引いた近似曲線が合っているかをAIが検証するためのデータです。
◆ tran.csv
◆ test.csv
2.CSVデータの取り込み
a. 新規プロジェクトの作成
b. 訓練データ(tran.csv)の取り込み
c. テストデータ(test.csv)の取り込み
②③ 近似曲線の算出と正解との比較
a. AIの作成 (学習モデルの作成)
近似曲線を引いてくれるAI(学習モデルの作成)をNeural Network Consoleに作成します。
AI(学習モデル)にもたくさんの種類があるのですが、今回はもっともシンプルなモデルを使います。
以下の手順でNeural Network Consoleの左側に表示されるレイヤーを選択し、下図となる様にレイヤーを組み立てて下さい。
設定画面でBatch Sizeに5を設定します。
b. AIの実行
作成したAIを実行します。
c. AIの実行結果
実行ボタンを押すとAIが近似曲線の作成と近似曲線の結果検証を開始します。
Epochが学習回数(近似曲線を作成した回数)で、Validation Errorがテストデータとの比較結果です。
学習を繰り返すたびに結果が良くなっていることが分かります。
④ AIが引いた近似曲線の確認
a. テスト結果の作成
Run Evaluationボタンを押下し、AIによるテスト結果を生成します。
b. テスト結果ファイルの確認
AIが作成した近似曲線を確認します。
テキストだと分かりづらいのでExcelでグラフにしてみましょう。
微妙な結果ですが、多少は近似している様です。(予想(y)と同じ下向きの線にはなっている)
5.回帰分析の精度を上げる方法
データ量を増やす
機械学習(AI)の精度を上げるのに最初に試すのはデータを増やすことです。
データを20個から1000個に増やして試してみました。
わりと良い結果になりました(^▽^)/
さらに精度を上げるには
データは十分にあっても精度が上がらない場合は、頭の良いAI(学習モデル)に切り替える方法が考えられます。
機械学習で連続データの回帰を行う場合、RNN、LSTMといった連続データの学習に強いAI(学習モデル)が存在ます。
次回はその中でも頭の良い、LSTMを試して記事にしたいと思います。
それでは、少しでもこの記事がお役にたったら嬉しいです。