回归 - 随机森林与全连接神经网络

数据挖掘 神经网络 回归 随机森林
2022-03-06 20:24:50

我正在对以下数据集进行回归以预测白葡萄酒的质量

数据集链接https ://archive.ics.uci.edu/ml/datasets/wine+quality

数据 csv 名称:winequality-white.csv

特性:1-固定酸度,2-挥发性酸度,3-柠檬酸,4-残糖,5-氯化物,6-游离二氧化硫,7-总二氧化硫,8-密度,9-pH,10-硫酸盐, 11 - 酒精

目标变量:质量

测试拆分: 33%


模型一:

随机森林回归 scikit-learn 实现

预处理: sklearn 标准缩放器(尽管 RFR 不需要)

超参数: 'rf_regr__max_features':'auto','rf_regr__max_leaf_nodes':无,'rf_regr__min_samples_leaf':1,'rf_regr__min_samples_split':5,'rf_regr__n_estimators':10

测试 R2 分数: 0.84


模型二

全连接神经网络

预处理: sklearn 标准缩放器

超参数:优化器=tf.keras.optimizers.Adam(learning_rate=1e-3),loss=tf.keras.losses.mse, callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss',耐性=10)
chpt = tf.keras.callbacks.ModelCheckpoint('wine_model',monitor='val_loss',save_best_only=True)

拓扑:

tf.keras.Input(shape=(num_features)),

tf.keras.layers.Dense(16,activation='relu'),

tf.keras.layers.Dense(8,activation='relu'),

tf.keras.layers.Dense(4,activation='relu'),

tf.keras.layers.Dense(2,activation='relu'),

tf.keras.layers.Dense(2,activation='relu'),

tf.keras.layers.Dense(1,activation='linear')               

我已经尝试过各种其他拓扑和学习率/其他 HP。

在测试数据上获得的最佳 R2 分数: 0.33。


为什么随机森林( 0.84)和神经回归(0.33 )之间的测试 R2 分数存在如此巨大的差异

此外,我观察到即使有 6-7 个隐藏层,神经网络甚至无法拟合训练数据。添加超过 4 层后,测试分数开始下降。

1个回答

神经元网络需要大量数据进行训练。此外,如果您的数据量很少,它通常会像您评论的那样遭受过度拟合。通常,神经网络用于更复杂的问题。另一个可能的原因是神经网络更适合缩放特征,你做到了吗?最后,NN 有很多参数需要调优:层、神经元、激活函数……找对是很复杂的;而且,它是一门艺术。

如您所见,根据您的数据集,某些算法比其他算法更适合,这是一门艺术。