前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >回归问题的深层神经网络

回归问题的深层神经网络

作者头像
liuxuewen
修改2018-10-12 18:35:58
3.8K0
修改2018-10-12 18:35:58
举报
文章被收录于专栏:技术翻译

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

在本文中,我将使用一个深层次的神经网络来预测房屋价格(使用一个来自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上的提交结果
深度神经网络在Kaggle上的提交结果

第五:尝试另一个ML算法

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

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

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

Random forest validation MAE =  19089.71589041096

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

随机森林提交Kaggle的结果
随机森林提交Kaggle的结果

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

[out]: XGBoost validation MAE =  17869.75410958904

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

XGBoost关于Kaggle的结果
XGBoost关于Kaggle的结果
总结一下我们所做的:

· 加载并处理数据集

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

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

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

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

· 还测试了另外两种型号

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

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

下一步:

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

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

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

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

作者:Mohammed Ma’amari

译者:lemon

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

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容:
  • 第一:处理数据集
    • 加载数据集:
    • 第二:构建深层神经网络
    • 第三:训练模式:
    • 第四:测试模型
    • 第五:尝试另一个ML算法
      • 总结一下我们所做的:
      • 下一步:
      相关产品与服务
      机器翻译
      机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档