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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

5160閲覧

正解率が不安定(高い、引く、急激に上がるなど)

f001

総合スコア11

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/05/25 14:02

編集2019/05/28 07:53

機械学習初心者です...
今回、kerasの使用によって下記のコードを書き、実行できはしたのですが、
その結果である正解率が、毎回毎回安定しません。何が言いたいのかというと、下記の画像をご覧ください。
イメージ説明
まず、こちらの上図は、後ほど書くコードの1回目の実行結果です。
そして2回目の実行結果が...↓
イメージ説明
この後も4,5回行ったのですが、どれも正解率が極端に高いか、あまり高くないかといった両極端な結果が出てしまい、結果としては謎でしかないです。
これは単純にエポック数が少ないからなのでは?と思い、エポック数を100にした学習も行ったのですが、↓
イメージ説明
今度は途中から急に正解率が上がるという謎現象が起き、はっきり言って意味が不明な状況に陥っております。
※kernel Restartといったjupyter におけるリスタート?を行ってもダメでした.
下記にコードを載せますが... 正則化の値だったり、dropoutの値を変えても、この「急に正解率が上がったり、最初から正解率が異様に高かったり、逆に正解率が低かったり」する現象は根本から治りません...。
どなたかもし解決方法が分かるお方がいればぜひお願い致します...。

python

1#l1正則化0.01, dropout=0.5 2 3import keras 4from keras.models import Sequential 5from sklearn.model_selection import train_test_split 6from keras.layers import Dense, Dropout, Activation 7import pandas as pd 8import numpy as np 9from keras.utils import np_utils, to_categorical 10from sklearn.metrics import r2_score 11from keras import regularizers 12 13import matplotlib.pyplot as plt 14 15from keras.optimizers import Adam, RMSprop 16from livelossplot import PlotLossesKeras 17 18from sklearn.model_selection import StratifiedKFold 19 20from keras.callbacks import EarlyStopping 21from sklearn.decomposition import PCA 22from keras import losses 23 24df = pd.read_excel("---") 25df2 = np.array(df, dtype=int) 26X = df2[:,0:6] 27y = df2[:,[6]] 28 29kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=5) 30 31for train, test in kfold.split(X, y): 32 model = Sequential() 33 model.add(Dense(units=6, activation='relu', input_dim=6,kernel_regularizer=keras.regularizers.l2(0.1),activity_regularizer=regularizers.l1(0.1))) 34 model.add(Dropout(0.5)) 35 model.add(Dense(units=6, activation='relu', input_dim=6,kernel_regularizer=keras.regularizers.l2(0.1),activity_regularizer=regularizers.l1(0.1))) 36 model.add(Dropout(0.5)) 37 model.add(Dense(units=1, activation="sigmoid", input_dim=6)) 38---for文はここまでです--- 39 40model.compile(loss=losses.mean_squared_error,optimizer=Adam(lr=1e-4),metrics=['accuracy']) 41 42early_stopping = EarlyStopping(patience=0, verbose=1) 43 44fit = model.fit(X[train],y[train], 45 epochs=100, batch_size=64, 46 validation_split=0.3,callbacks=[early_stopping],verbose=1, shuffle=True) 47 48 49loss, accuracy = model.evaluate(X[test], y[test], verbose=0) 50print("\nloss:{} accuracy:{}".format(loss, accuracy)) 51 52 53fig, (axL, axR) = plt.subplots(ncols=2, figsize=(10,4)) 54 55# loss 56def plot_history_loss(fit): 57 # Plot the loss in the history 58 axL.plot(fit.history['loss'],label="loss") 59 axL.plot(fit.history['val_loss'],label="val_loss") 60 axL.set_title('model loss') 61 axL.set_xlabel('epoch') 62 axL.set_ylabel('loss') 63 axL.legend(loc='upper right') 64 65# acc 66def plot_history_acc(fit): 67 # Plot the loss in the history 68 axR.plot(fit.history['acc'],label="acc") 69 axR.plot(fit.history['val_acc'],label="val_acc") 70 axR.set_title('model accuracy') 71 axR.set_xlabel('epoch') 72 axR.set_ylabel('accuracy') 73 axR.legend(loc='upper right') 74 75plot_history_loss(fit) 76plot_history_acc(fit) 77

※目的変数yは0,1のデータ, 説明変数は小数が途中に含まれているため、dtype=int としています。
作業環境 Mac OS 10.13.6 jupyter notebook

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

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

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

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

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

guest

回答1

0

自己解決

コードの問題ではなく, 単純に使用していたデータが不均衡なものでした.
ですので, 正解率ではなくAUCなどの他の評価手法を用いて解決しました.

投稿2019/07/13 05:22

f001

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問