学习笔记-神经网络及参数调优(一)

董圆成的公众号

学习篇

个人总结 | 学习借鉴 | 经验分享

数据集还是电信客户流失数据,而这次使用神经网络做一个模型。神经网络是黑核模型,也就意味着虽然模型预测效果好,但是不可解释,无法向上级进行解释。如果需要一个预测精准的模型神经网络是不二之选。

神经网络最初是模拟人脑进行的一个动作,知道现在人脑如何运作都没有研究出来,无知者无畏。最基本的单位为神经元,有多个变量作输入信号,每个输入都有一个权值,这个权值是在0左右的随机数构成,后经过梯度下降法进行选出合适的权值,有一个单独的阈值(相当于回归的残差),经过一个激活函数进行转化得到一个输出值。

神经元结构图

关于感知器,对于无隐藏层得到的判决面是一个半平面;而单隐藏层则可以形成凸域;而双隐藏层则可以形成任意形状。

感知器结构

神经网络有很多种,目前只有是深度学习的包里都有神经网络,虽然我不会深度学习,当然在机器学习里面也可以实现神经网络,这次主要使用BP神经网络,也就是数据流的正向传播和误差信号反向传播的过程。

而我们主要关心模型是如何迭代起来的和如何迭代停止

还是导入模块,导入数据集。将数据集进行分割为训练集和测试集数据。

因为sklearn的数据只接受数值,所以将分类变量进行标准化,以标准化的数据进行建模处理。

构建神经网络模型,只需要建立的话超参数可以自己根据数据情况大概设置一个,设定隐藏层节点个数、激活函数选什么、迭代步长、最大迭代次数。

根据构建的模型做预测和训练数据的预测值和概率,然后画出ROC曲线,根据图形曲线判断模型是否过度拟合。这里记录一下曲线下的面积值AUC: 0.908

利用网格搜索做网格判断,设置隐藏层层数、隐藏层节点个数、激活函数、迭代步长。利用搜索出的网格模型输出(.best_params_)也就是当前网格最优的参数值。如果最优的参数落到了网格参数的边界则调节网格的参数值,以此重复调整到最佳,此时AUC:0.926

根据做出的结果在重新做预测的值和概率,再用概率情况进行绘制新的ROC曲线,得到最终经过调优的模型。

-LOVE&PEACE-

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G1IDA800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券