【问题标题】:How can I reduce validation MAE? [closed]如何减少验证 MAE? [关闭]
【发布时间】:2021-11-09 21:01:10
【问题描述】:

我有一个包含 300 列和目标变量的数据集。

|X_0_0|X_0_1|X_0_2|X_1_0|X_1_1|X_1_2|...|X_99_2|  y  |   
|:---:|:---:|:---:|:---:|:---:|:---:|...|:----:|:---:|
| 3.0 | 48.0| 1.04| 3.0 |78.0 | 1.14|...| 0.01 | 19.0|
| 0.0 | 5.0 |-1.0 | 0.0 | 4.0 |-1.00|...| 1.36 | 25.0|
| 1.0 | 49.0| 3.0 | 3.0 | 90.0| 0.61|...| 0.99 | 22.0|
| 0.0 | 3.0 |-1.0 | 3.0 |28.0 | 2.0 |...| 2.04 | 22.0|
| 3.0 | 0.0 | 1.7 | 0.0 | 5.0 |-1.00|...| 1.16 | 24.0|

我发现 X_i_0 只采用以下值:

sub = train.loc[:,::3] 
for col in sub:
    print(sub[col].unique())

输出:

[3. 0. 1. 2.]
[3. 0. 1. 2.]
[1. 0. 2. 3.]
[0. 1. 2. 3.]
[1. 0. 2. 3.]
[0. 1. 3. 2.]
[3. 0. 1. 2.]
[0. 3. 1. 2.]
[2. 1. 0. 3.]
[3. 1. 0. 2.]
.............

我为 X_i_1 和 X_i_2 执行了相同的代码,它们具有更多的唯一值。

我也可视化了目标率,似乎有 Normal Distribution 之类的东西

我决定尝试序列模型训练。我尝试过正则化、dropout、浅层和深层 NN,但我无法让 mae err 小于 4.5。

def create_model(factor, rate): # regularization and Dropout
    model = Sequential([
        Dense(32, kernel_regularizer=l2(factor),activation="relu", input_shape=(n_features,)),
        Dense(16,kernel_regularizer=l2(factor), activation="relu", kernel_initializer='he_normal'),
        Dense(16, kernel_regularizer=l2(factor), activation="relu", kernel_initializer='he_normal'),
        Dense(8, activation="relu", kernel_initializer='he_normal'),
        Dense(1)
    ])
    return model

通常的错误结果:Test curve higher than train,overfitting?

所以我想,我必须先对数据进行预处理,我该如何改进数据或者可能是 mae 分数?

【问题讨论】:

标签: python machine-learning deep-learning


【解决方案1】:

首先请您从标签中删除 keras,这是一个基本的机器/深度学习问题。

对于 X_i_0,它似乎是一些对象的类别,其中每个数字都指一个特定的类别。

另一方面,Xi 数据的分布是模糊的,它会使预测远离应有的状态,因此我强烈建议标准化/标准化您的数据,您可以查看 SourceOne为了更好地理解数据预处理

尝试在同一图中可视化训练和验证损失,以准确了解训练期间发生的情况。

这是一个应用逻辑回归的例子

案例 1:

解读:
典型的这些是良好拟合模型

的特征
  1. 训练损失和验证损失彼此接近,验证损失略大于训练损失。

  2. 最初会减少训练和验证损失,并且在某个时间点后训练和验证损失相当平坦。

案例 2:

解读:

这是一个过拟合模型

的学习曲线
  1. 训练损失和验证损失彼此相距甚远。 在添加训练示例后逐渐减少验证损失(没有展平)。
  2. 非常低的训练损失,在添加训练示例后会略微增加。

案例 3:

解读:

欠拟合模型

的学习曲线
  1. 在添加训练示例时增加训练损失

  2. 训练损失和验证损失在结束接近

  3. 在训练损失和验证损失结束时突然下降(并非总是如此)。

您可以查看towards data science了解更多详情。

并且请将您的图表添加到问题中,以便更好地记录您的问题。

【讨论】:

  • 我从标签中删除了keras,最后有一个指向情节照片的链接,我应该添加代码吗?
  • @VladislavPanteleev 好的,我明白了,问题是过度拟合,是的,请添加您的代码,指定您要解决的确切问题以及功能标签(如果它不是一般应用程序)跨度>
  • 版主好像关闭了问题,我可以在这里分享 kaggle notebook 吗?
猜你喜欢
  • 2016-06-30
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多