如何减少验证 MAE?
How can I reduce validation MAE?
我有一个包含 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?
所以我想,我必须先对数据进行预处理,我怎样才能提高数据或梅分数?
首先你能否从标签中删除keras这是一个基本的Machine/Deep学习问题。
对于X_i_0,它似乎是某些对象的类别,其中每个数字指的是一个特定类别。
另一方面,Xi 数据的分布是模糊的,它可以使预测远离它应该的样子,所以我强烈建议对你的数据进行规范化/标准化,你可以检查这个 Source and this One更好地理解数据预处理
尝试在同一图中可视化训练和验证损失,以准确了解训练期间发生的情况。
这是应用逻辑回归的示例
案例一:
解释:
典型的是良好拟合模型
的特征
训练损失和验证损失彼此接近,验证损失略大于训练损失。
最初减少训练和验证损失,并且在某个点之后直到结束时训练和验证损失相当平坦。
案例二:
解释:
这是一个过拟合模型的学习曲线
- 训练损失和验证损失相距甚远。
添加训练示例后逐渐减少验证损失(不展平)。
- 非常低的训练损失,在添加训练示例后会略有增加。
案例三:
解读:
欠拟合模型的学习曲线
增加训练损失 添加 训练样本。
训练损失和验证损失在末尾接近。
最后训练损失和验证损失突然下降(并非总是如此)。
您可以查看 towards data science 了解更多详情。
请将您的图表添加到问题中,以便更好地记录您的问题。
我有一个包含 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?
所以我想,我必须先对数据进行预处理,我怎样才能提高数据或梅分数?
首先你能否从标签中删除keras这是一个基本的Machine/Deep学习问题。
对于X_i_0,它似乎是某些对象的类别,其中每个数字指的是一个特定类别。
另一方面,Xi 数据的分布是模糊的,它可以使预测远离它应该的样子,所以我强烈建议对你的数据进行规范化/标准化,你可以检查这个 Source and this One更好地理解数据预处理
尝试在同一图中可视化训练和验证损失,以准确了解训练期间发生的情况。
这是应用逻辑回归的示例
案例一:
解释:
典型的是良好拟合模型
训练损失和验证损失彼此接近,验证损失略大于训练损失。
最初减少训练和验证损失,并且在某个点之后直到结束时训练和验证损失相当平坦。
案例二:
解释:
这是一个过拟合模型的学习曲线
- 训练损失和验证损失相距甚远。 添加训练示例后逐渐减少验证损失(不展平)。
- 非常低的训练损失,在添加训练示例后会略有增加。
案例三:
解读:
欠拟合模型的学习曲线
增加训练损失 添加 训练样本。
训练损失和验证损失在末尾接近。
最后训练损失和验证损失突然下降(并非总是如此)。
您可以查看 towards data science 了解更多详情。
请将您的图表添加到问题中,以便更好地记录您的问题。