我刚开始深造,一般都是机器学习。我试图通过将8个特性中的每一个特性传递到一个5层网络和关于价格输出的培训来处理加利福尼亚房价数据集。我使用MSE损失和准确度作为度量,以2000年代为标准。损失开始是可以理解的大,减少到一定程度,并被困在相同的价值。对于所有的2000个历代,精度都保持在0。
我在网上看到了一些解决方案,比如把房间总数除以家庭数量来找出每个家庭的平均房间数。我看到这样的特性工程可以帮助模型更快地收敛,但是我希望模型能够在没有特性工程的情况下收敛。
据我所知,神经网络是函数逼近器,它从数据集的输入到输出建立一个函数。理想情况下,我希望它也能找到复杂的特性,比如在线解决方案中手工计算的特性。我有这些期望是错的吗?模型不收敛的原因是什么?
train_data = pd.read_csv('./sample_data/california_housing_train.csv', sep=',')
test_data = pd.read_csv('./sample_data/california_housing_test.csv', sep=',')
model = tf.keras.models.Sequential([
layers.Dense(8),
layers.Dense(5, activation=tf.nn.relu),
layers.Dense(7, activation=tf.nn.relu),
layers.Dense(5, activation=tf.nn.relu),
layers.Dropout(0.2),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mean_squared_error', shuffle=True, metrics=['accuracy'])
model.fit(train_data.values[:, 0:8], train_data.values[:, 8], epochs=2000)输出

发布于 2019-06-23 06:48:49
对于回归问题,准确性不是一个有效的度量。当损失为均方误差(MSE)时,什么函数定义Keras的准确性?
另外,请使用Min或零均值/单位方差归一化来规范输入数据.此外,输出数据的学习范围( 10,000次)非常大,因此,可以将输出值除以10,000(在预测期间可以将此值乘以)。这些变化将有助于网络更快地融合。网络的容量可能也需要增加。
数值数据的不同类型的规范化:https://developers.google.com/machine-learning/data-prep/transform/normalization
发布于 2019-06-23 06:51:19
在这里,您正在解决一个回归问题,因此精度不能用作评估模型的标准。相反,您可以使用性能度量,如mae、mape、mse,它们更适合于评估预测连续目标变量的模型。
而且,我不会说你的模型没有收敛,如果你看损失在不断减少,所以收敛没有问题,你只需要把你的评估措施改变为我上面提到的东西。
有关如何实施这些性能度量的详细信息,请参阅如何使用度量与Python中的Keras进行深度学习或度量的使用。
https://stackoverflow.com/questions/56721196
复制相似问题