董圆成的公众号
学习篇
个人总结 | 学习借鉴 | 经验分享
数据集还是电信客户流失数据,而这次使用神经网络做一个模型。神经网络是黑核模型,也就意味着虽然模型预测效果好,但是不可解释,无法向上级进行解释。如果需要一个预测精准的模型神经网络是不二之选。
神经网络最初是模拟人脑进行的一个动作,知道现在人脑如何运作都没有研究出来,无知者无畏。最基本的单位为神经元,有多个变量作输入信号,每个输入都有一个权值,这个权值是在0左右的随机数构成,后经过梯度下降法进行选出合适的权值,有一个单独的阈值(相当于回归的残差),经过一个激活函数进行转化得到一个输出值。
神经元结构图
关于感知器,对于无隐藏层得到的判决面是一个半平面;而单隐藏层则可以形成凸域;而双隐藏层则可以形成任意形状。
感知器结构
神经网络有很多种,目前只有是深度学习的包里都有神经网络,虽然我不会深度学习,当然在机器学习里面也可以实现神经网络,这次主要使用BP神经网络,也就是数据流的正向传播和误差信号反向传播的过程。
而我们主要关心模型是如何迭代起来的和如何迭代停止。
还是导入模块,导入数据集。将数据集进行分割为训练集和测试集数据。
因为sklearn的数据只接受数值,所以将分类变量进行标准化,以标准化的数据进行建模处理。
构建神经网络模型,只需要建立的话超参数可以自己根据数据情况大概设置一个,设定隐藏层节点个数、激活函数选什么、迭代步长、最大迭代次数。
根据构建的模型做预测和训练数据的预测值和概率,然后画出ROC曲线,根据图形曲线判断模型是否过度拟合。这里记录一下曲线下的面积值AUC: 0.908。
利用网格搜索做网格判断,设置隐藏层层数、隐藏层节点个数、激活函数、迭代步长。利用搜索出的网格模型输出(.best_params_)也就是当前网格最优的参数值。如果最优的参数落到了网格参数的边界则调节网格的参数值,以此重复调整到最佳,此时AUC:0.926。
根据做出的结果在重新做预测的值和概率,再用概率情况进行绘制新的ROC曲线,得到最终经过调优的模型。
-LOVE&PEACE-
领取专属 10元无门槛券
私享最新 技术干货