为什么我的具有 2 个特征的 MLP 比具有 1 个特征的 MLP 表现差,其中一个特征是 feature1*feature2 的组合?

数据挖掘 scikit-学习 毫升 深度学习
2022-03-09 22:26:11

我为一个数据集(约 500 行)编写了一个 MLP,其中包含生物体的长度(L)和宽度(W)以及生物量的输出(生物体的重量,以磅为单位,B)。

            mlp = MLPRegressor((5, 5), max_iter=1000)

我已经用特征训练了模型

# Model 1
# Input = Feature 1: Length, Feature 2: Width. Output = Biomass
df = {'length': [60.1, 59.2, 59.4, 58.5], 'width': [15.4, 16.2, 14.9, 15.7], 'weight': [8.34, 7,65, 7.89, 7.14]}


# Model 2
# Input =  Feature 1: Length * Width^2. Output = Biomass
df = {'length*height^2': [60.1, 59.2, 59.4, 58.5], 'weight': [14253.31, 15536.44, 13187.39, 14419.66]}

我的模型具有一个特征的整体准确率超过 95%,但分离特征的准确率约为 85%。

我对 MLP 的理解是,模型 1 应该比模型 2 做得更好,因为它基本上会找到长度和高度与生物量的最佳组合,但是我的 1 特征模型做得更好。我也尝试过使用缩放器标准化数据集,但没有成功。

scaler = StandardScaler()
1个回答

h- 高度
w- 宽度
p- 重量

在现实世界中,我们知道重量是体积乘以密度。体积是高度、宽度和深度的乘积。如果您假设恒定的深度和密度,则重量只是某个常数乘以宽度和高度,即p=c×hw. 如果你有hw作为 NN 快速学习的一个特征c. 这提供了良好的性能。

假设您的 NN 具有作为激活函数的身份,即没有激活函数。它所能学习的只是输入特征的线性组合。

所以它只会学习phwh+www+b在哪里wh,ww是权重和b是偏见。

如果你有像 ReLU/Sigmoid 这样的激活函数,它仍然会学习 ReLU/Sigmoid 输出的线性组合。这些输入只是线性组合hw. 在这一切中,从来没有一个简单的 hw学期。这使得模型变得复杂而没有体积(面积)的重要特征。

我认为这就是为什么hw模型更好。


如果你有一个 NN,在隐藏层中有 2 个神经元具有 sigmoid 激活,1 个输出神经元没有激活,那么这就是hw术语出现。

11+exp(hw11+ww12+b1)+11+exp(hw21+ww22+b2)=+exp(w11w22hw+w12w21hw)

如果你只是想学习一个常数乘数,那将是一个非常棘手的地方。