質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

4308閲覧

機械学習(CNN)の評価について

akihico

総合スコア27

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

2クリップ

投稿2017/07/27 22:39

編集2017/07/28 17:18

O'Reilly Japan - ゼロから作るDeep LearningにあるCNNのソースを利用して、オリジナルのデータで学習をさせています。ソースで変更を加えているのは、画像の縦横ピクセル数だけです。
deep-learning-from-scratch/train_convnet.py at master · oreilly-japan/deep-learning-from-scratch

実際のソースはこちらです。
http://104.199.186.194/CNN/02_CNN.html

3500枚くらいの画像と、0 or 1の正解ラベルのセットのデータを使用しています。

データはこのような形です。
■学習用データ
x_train _ (2400, 1, 90, 90)
t_train _ (2400,)
■評価用データ
x_test _ (1059, 1, 90, 90)
t_test _ (1059,)

データの実物は下記になります。
http://104.199.186.194/stock_img_all.php

「チャート」の列が画像で、「判定」が正解ラベルです。
「判定」はこの銘柄が一定期間後に5%以上値上がりしたか?を判定したものになります。

学習用データと評価用データは証券コード順に並べたときの上位2400件、とそれ以外で分けていますので、元々の出処は、同じ作り方をしたデータです。

実行結果は下記のようになります。

イメージ説明

正解ラベルの内訳は次のとおりです。
+------+----------+
| 0 | 3236 |
| 1 | 223 |
+------+----------+

ざっくりとした質問で恐縮ですが、この結果から、画像データと正解ラベルのデータには相関関係がないと判断してよろしいでしょうか。

trainの正解率は除々に上昇しているので、CNNのパラメーターは最適化していると思いますが、testの結果が上昇してきませんので、そのように考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/07/28 00:57

学習後は、学習用データをほぼ全て判別できるようになったのですよね? 評価用のデータは、どのようにして作成されたのですか? 評価用データと学習用データが全く別のもの(共通する画像が無い)だとすると、評価用データの画像の正解ラベルは何を基準にして付与したのでしょうか?
MasashiKimura

2017/07/28 03:30 編集

コードもデータも、データの処理方法もわからないので答えようがありません。あえて答えるなら、「この結果からはわかりません」だと思います。
akihico

2017/07/28 17:19

coco_bauer様、学習用データも評価用データも同じ出処になります。
akihico

2017/07/28 17:22 編集

MasashiKimura様、先日はhttps://teratail.com/questions/84649でお世話になりました。ありがとうございました。おかげで今回のご質問のところまで進めることができました。コードとデータが不明だった点、申し訳ございません。質問を修正しました。
guest

回答1

0

ベストアンサー

単純にデータがスパースなのに対して、学習データ数が足りないため、オーバーフィッティングしているという話だと思います。

以下は、補足です。

また、不均衡データであることも問題です。更にデータが減りますが、アンダーサンプリングをした方が良いかもしれません。imbalanced-learnが便利です。

次に、「業種」データを捨てています。このデータは情報を持っていると思います。ネットワーク構造を変えて、学習すると精度が上がるのではないかと思います。単純に、輸出産業の株価が上がる時、輸入産業の株価が下がると予想できます。

私が、この問題を解くなら、株価の画像データをCNNにかけるのではなくて、生の株価データに対して、LSTM, Dilated CNN, UFCNNのようなネットワークを使うと思います。ご検討ください。

投稿2017/07/29 02:53

MasashiKimura

総合スコア1150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akihico

2017/07/31 22:40

MasashiKimura様、今回もありがとうございました。 不均衡データの影響を理解していなかったので、大変参考になりました。 ひとまず、株価の集計期間を変えることでデータは簡単に増やせるので、その方向で検討します。また、ご提案いただいたとおり、業種なども株価と相関があると思いますので、データが工夫できないか次に考えてみたいと思います。LSTM, Dilated CNN, UFCNNは不勉強で消化できていませんが、一歩一歩消化したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問