2017-09-02 9 views
0

私は特性によって価格を予測しようとしています。 かなりシンプルなモデルを選択しましたが、それは非常に奇妙です。損失機能は非常に高く、問題がどこにあるかわかりません。ここで ケラス極端に高い損失

は私のモデルである:私は、データの準備方法です

​​

:(ワンホットを、私は訓練するすべてのデータを分割し、テスト)

df = encode_onehot(dataframe, cols=['Shape', 'Cut', 'Color', 'Clarity', 'Polish', 'Symmetry', 'Culet', '\tFluorescence']) 

dataset = df.values 
X = dataset[1:,4:66] 
Y = dataset[1:,2] 

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=42) 

最後に、訓練:

baseline_model().fit(X_train, y_train, epochs=10, batch_size=64) 
scores = baseline_model().evaluate(X_test, y_test, verbose=0) 
print(baseline_model().summary()) 

結果は非常に悲しいです:

Epoch 1/10 
149767/149767 [==============================] - 4s - loss: 104759338.0333  
Epoch 2/10 
149767/149767 [==============================] - 4s - loss: 104594236.9627  
Epoch 3/10 
149767/149767 [==============================] - 4s - loss: 104556662.2948  

さらに改善されません。

私は間違っていますか?

+0

入力データと出力データはどのように見えますか? X 1の値は異なる整数またはベクトルとしてコード化されていますか? Yはホットにエンコードされていますか? – gionni

+2

「y_train」の範囲は何ですか?それは10000かそれ以上の値を含んでいますか?もしあなたが平均**二乗**エラーを使っているので、 'y_train'が大きな値を含んでいれば、大きな損失を見るのはあまり奇妙ではありません。あなたのモデルが非常に強力でないか、非常に強力な機能を持っていない限り、 'y_true - y_pred'の二乗は非常に大きくなる可能性があります。 –

+0

@gionniベクトルとしてホットエンコードされたX 1の値。 Yはホットエンコードされていません(単なる「価格」なので)。 –

答えて

1

@ Yu-Yangは、損失関数として平均二乗誤差を使用していると述べています。私は損失の値が非常に大きく、損失の機能をmean_squared_logarithmic_errorに変更したところで、これと同じ問題が発生しました。希望の結果が得られました。

model %>% compile(
optimizer = optimizer_rmsprop(lr=0.0001), 
loss = loss_mean_squared_logarithmic_error, 
metrics = c("accuracy") 
) 

損失値は======================
326981分の326981エポック1/10 [

に変更しました========] - 17秒 - 損失:0.0048 - acc:0.9896

これは役に立ちます。

+1

それは私のために働く。ありがとう – Jibin

関連する問題