非线性回归与Keras损失没有减少:异常值和/或数据格式的问题?

问题描述 投票:0回答:2

我拥有一个数据表和它的两个列产生一个情节,看起来像这样。请注意,Y轴是在日志中。

Don't mind the random Kanji. That's already fixed

我想这可能是一个好主意,显示通过使用TF和Keras通过机器学习产生非线性回归这种关系。代码如下所示:

def createModel():
    model = Sequential()
    model.add(Dense(50, activation='relu', input_dim=1))
    model.add(Dense(25, activation='relu', input_dim=1))
    model.add(Dense(1, activation='linear'))

    return model

model1 = createModel()
model1.compile(SGD (lr=0.0001),loss='mse')
print(model1.summary())

Taisha_Learn=model1.fit(Heisei_Learn["竣工年月"],Heisei_Learn["平成27年まで詰めた堆砂容量_Percent"],batch_size=50, epochs=1000, validation_split=(0.08), verbose=2)

predictions = model1.predict(Heisei_Learn["竣工年月"], verbose=1)
plt.plot(Heisei_Learn["竣工年月"],predictions)
# plt.legend([ 'Predictated Y'])
plt.show()

该模型进行可怕的。损失几乎没有减少。随后,这是预测。

Absolutely horrible prediction

我已经打得四处不同的优化(亚当,RMSprop),学习有关的批量大小,没有积极的影响。我想着是否可能是一个数据问题,是由于异常值。我只是过滤它NaN的相应列。

Heisei = pd.read_excel("日本ダム/平成27.xlsx")
Heisei_Learn=Heisei.dropna(subset=['平成27年まで詰めた堆砂容量_Percent'])

我真的尝试了许多变化,但通常的损失看上去某事像这样:

Nightmarish Loss

必须有一个更好的方式来获得真正的非线性回归出来的数据。有没有关于他们......我必须改变?再次,PLZ看看张贴在原来的问题的图。这RLY乐不可支--. - ...

是否有任何像样的都来助阵愚蠢的人喜欢我?

machine-learning keras outliers non-linear-regression loss
2个回答
0
投票
  1. NN是不是回归进行amazying。考虑你的问题转化为分类问题(如果可能)
  2. RELU更好地与LeakyReLU取代
  3. 最大的问题可能是损失,其中“MSE”原因因为异常的大量流失。尝试“美”。但要准备好,因为第一点的平均结果。

0
投票

既然你在回归设置,您的输出层的激活应该是线性的,并且绝对不使用SoftMax(其normaly仅用于分类);更改模型的最后一层

model.add(Dense(1, activation='linear'))

或者干脆

model.add(Dense(1))

因为默认激活(即,如果你不指定任何东西)是线性的(docs)。

这样做之后,开始绕0.001学习速率LR值试验...

© www.soinside.com 2019 - 2024. All rights reserved.