python模型训练效果没有优化_LSTM模型训练效果好,但测试结果较差,不能看出拟合过度...
以下是我的數據:
我有500個錄音(任意分成訓練,驗證和測試集)。每個記錄包含一定數量的行,每一行對應一個1s的EEG片段,換句話說,每個記錄的長度等于一個EEG信號的長度(s)。每行包含22個通道*22個時間/頻率特征=484個特征+輸出標簽(0或1)。在
所以我想執行二進制分類。在
正如許多論文(看this good paper)所建議的那樣,對于每一個記錄,我創建長度為look_back的序列,以便在預測每個標簽時考慮到“周圍”片段的特征。代碼如下:def create_dataset(feat,targ, look_back=1):
semi_window=math.floor(look_back/2)
dataX, dataY = [], []
for i in range(semi_window,len(targ)-semi_window):
a = feat[i-semi_window:(i+semi_window+1), :]
dataX.append(a)
dataY.append(targ[i])
return np.array(dataX), np.array(dataY)
此函數返回大小為(samples, look_back=time_steps, features=484)的三維數組。在
為了處理不平衡的類,我測試了make_imbalance函數以刪除實例以保持每個類的實例數不變,以及在loss函數中考慮到不平衡的class_weight參數。在
所以,我使用了一個LSTM模型,并使用earlystup回調參數,在驗證精度沒有增加給定容差的情況下停止。在
這是我的完整模型:
^{pr2}$
我得到的結果是:
訓練混淆矩陣顯著,但驗證矩陣和測試矩陣較差。。。在
我想這并不過分,因為我的模型尺寸很小(一層,…)。此外,我認為這個模型是恰當的,因為它能夠很好地區分(巨大)訓練集上的數據。。。在
那么,怎么了?在
NB:我說的是,我對經典的Keras前饋神經網絡也有同樣的問題
編輯:以下是我繪制學習曲線時得到的結果:
你可以看到的是,訓練精度仍然很高,而驗證精度(實際上橙色曲線應該是“驗證”)仍然很低。。。在
編輯:我嘗試使用XGBoost和SVM分類器,但是我無法得到結果(仍然是相同的行為)
編輯:我試著洗牌數據看看。我得到了很好的結果,但這有點像海市蜃樓。。。事實上,我有來自相同記錄的數據(不完全相同,但非常接近)在訓練和驗證集。。。有點作弊。當我向模特展示一張全新的唱片時,它崩潰了。。。所以,我還沒有找到解決辦法
總結
以上是生活随笔為你收集整理的python模型训练效果没有优化_LSTM模型训练效果好,但测试结果较差,不能看出拟合过度...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可变车道怎么走不违章_郑州街头现可变车道
- 下一篇: 计算机的优势和劣势_100亿倍,中国量子