回归问题的深层神经网络

众所周知,神经网络可用于解决分类问题,例如,它们被用于手写体数字分类,但问题是,如果我们将它们用于回归问题,它会有效果吗?

在本文中,我将使用一个深层次的神经网络来预测房屋价格(使用一个来自Kaggle的数据集)。

你可以从这里下载。

我建议你跟着我一起使用notebook在GoogleCoLab上运行代码。【here】

内容:

1- Process the dataset 2- Make the deep neural network 3- Train the DNN 4- Test the DNN 5- Compare the result from the DNN to another ML algorithm

首先,我们将导入所需的依赖项:

第一:处理数据集

我们不会深入处理数据集,我们所要做的就是将数据集输入到我们的模型中。

我们将去掉任何缺少值的特性,然后对分类特性进行编码。

加载数据集:

· 将训练和测试数据加载到pandas数据框架中

· 将训练和测试数据结合在一起进行处理。

combined.describe()

让我们定义一个函数来获取不缺少任何值的列。

让我们看看我们有多少列:

[out]: Number of numerical columns with no nan values : 25 Number of nun-numerical columns with no nan values : 20

特征直方图

特征之间的相关性

从上述相关热图可以看出,约有15个特征与目标高度相关。

一个热门编码的分类特征:

我们将使用一个热编码对分类特性进行编码。

[out]: There were 45 columns before encoding categorical features There are 149 columns after encoding categorical features

现在,将组合数据框架拆分回训练数据和测试数据

第二:构建深层神经网络

· 定义顺序模型

· 增加一些致密的层

· 使用‘relu‘作为隐藏层的激活函数

· 用‘normal‘初始化器为核初始化器

Initializers define the way to set the initial random weights of Keras layers.

· 我们将使用均值绝对误差作为损失函数。

· 定义只有一个节点的输出层

· 使用‘linear‘作为输出层的激活函数

[Out]: _________________________________________________________________ Layer (type)                 Output Shape              Param #    ================================================================= dense_1 (Dense)              (None, 128)               19200      _________________________________________________________________ dense_2 (Dense)              (None, 256)               33024      _________________________________________________________________ dense_3 (Dense)              (None, 256)               65792      _________________________________________________________________ dense_4 (Dense)              (None, 256)               65792      _________________________________________________________________ dense_5 (Dense)              (None, 1)                 257        ================================================================= Total params: 184,065 Trainable params: 184,065 Non-trainable params: 0 _________________________________________________________________

定义检查点回调:

第三:训练模式:

[out]: Train on 1168 samples, validate on 292 samples Epoch 1/500 1168/1168 [==============================] - 0s 266us/step - loss: 19251.8903 - mean_absolute_error: 19251.8903 - val_loss: 23041.8968 - val_mean_absolute_error: 23041.8968   Epoch 00001: val_loss did not improve from 21730.93555 Epoch 2/500  1168/1168 [==============================] - 0s 268us/step - loss: 18180.4985 - mean_absolute_error: 18180.4985 - val_loss: 22197.7991 - val_mean_absolute_error: 22197.7991   Epoch 00002: val_loss did not improve from 21730.93555 . . . Epoch 00500: val_loss did not improve from 18738.19831

<keras.callbacks.History at 0x7f4324aa80b8>

We see that the validation loss of the best model is 18738.19

第四:测试模型

我们将把测试数据的预测提交给Kaggle,看看我们的模型怎么样。

深度神经网络在Kaggle上的提交结果

第五:尝试另一个ML算法

现在,让我们尝试另一个ML算法来比较结果。

我们将使用随机森林回归和XGBRegressor。

将培训数据拆分为培训和验证数据,我们将首先尝试随机森林模型:

Random forest validation MAE =  19089.71589041096

创建一个提交文件并将其提交给Kaggle以查看结果:

随机森林提交Kaggle的结果

现在,让我们试试XGBoost模型:

[out]: XGBoost validation MAE =  17869.75410958904

创建一个提交文件并将其提交给Kaggle以查看结果:

XGBoost关于Kaggle的结果

总结一下我们所做的:

· 加载并处理数据集

· 通过绘制一些直方图和特征的相关热图来熟悉数据集

· 使用了一个由三个隐层组成的深度神经网络,每个隐层有256个节点

· 在输出层上使用了线性激活函数

· 训练了模型,然后在Kaggle上测试

· 还测试了另外两种型号

· 深层神经网络能够超过这两个模型

· 我们相信,如果调整它们的超参数,这两种模型都能超越深层神经网络模型

下一步:

· 尝试将更多的精力放在处理数据集上

· 尝试其他类型的神经网络

· 尝试调整我们使用的两个模型的超参数

原文标题《Deep Neural Networks for Regression Problems》

作者:Mohammed Ma’amari

译者:lemon

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://towardsdatascience.com/deep-neural-networks-for-regression-problems-81321897ca33

原文作者:Mohammed Ma’amari

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

TF.Learn 手写文字识别

minist问题 计算机视觉领域的Hello world 给定55000个图片,处理成28*28的二维矩阵,矩阵中每个值表示一个像素点的灰度,作为feature...

4056
来自专栏人工智能LeadAI

什么!卷积要旋转180度?!

一看这个标题就会想,这有什么大惊小怪的,可能好多人觉得这是个脑残话题,但我确实误解了两三年……

1561
来自专栏刁寿钧的专栏

使用 Tensorflow 构建 CNN 进行情感分析实践

本次实验参照的是 Kim Yoon 的论文,代码放在我的 github 上,可直接使用。

3K1
来自专栏企鹅号快讯

深入机器学习系列7-Random Forest

1 Bagging   采用自助采样法()采样数据。给定包含个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍...

4936
来自专栏AILearning

卷积神经网络

注意:本教程面向TensorFlow 的高级用户,并承担机器学习方面的专业知识和经验。 概观 CIFAR-10分类是机器学习中常见的基准问题。问题是将R...

22610

用Python的长短期记忆神经网络进行时间序列预测

长短期记忆递归神经网络具有学习长的观察序列的潜力。

2.9K8
来自专栏大数据挖掘DT机器学习

如何用TensorFlow和TF-Slim实现图像标注、分类与分割

本文github源码地址: 在公众号 datadw 里 回复 图像 即可获取。 笔者将和大家分享一个结合了TensorFlow和slim库的小应用,来实现...

6124
来自专栏目标检测和深度学习

如何从零开发一个复杂深度学习模型

深度学习框架中涉及很多参数,如果一些基本的参数如果不了解,那么你去看任何一个深度学习框架是都会觉得很困难,下面介绍几个新手常问的几个参数。 batch 深度学习...

5417
来自专栏人工智能

使用Keras在训练深度学习模型时监控性能指标

Keras库提供了一套供深度学习模型训练时的用于监控和汇总的标准性能指标并且开放了接口给开发者使用。

2.2K10
来自专栏AI研习社

图片数据集太少?Keras Image Data Augmentation 各参数详解

图像深度学习任务中,面对小数据集,我们往往需要利用Image Data Augmentation图像增广技术来扩充我们的数据集,而keras的内置ImageDa...

7184

扫码关注云+社区

领取腾讯云代金券