首页 理论教育 使用AMORE包构建多层神经网络分类模型

使用AMORE包构建多层神经网络分类模型

时间:2023-06-28 理论教育 版权反馈
【摘要】:nnet包提供了最常见的前馈反向传播神经网络算法,AMORE包则更进一步提供了更为丰富的控制参数,并可以增加多个隐藏层。使用AMORE包构建一个分类DNN。分离RSNNS包并加载AMORE<detach<library建模绝大部分包的用法都类似于之前看到的。但需注意,AMORE包需要指定输入和输出结点的数量以及隐藏结点。AMORE软件包中的其他鲁棒选择包括Tao error60的“TAO”以及标准均方误差,参数方法指定使用的学习方法,而本例选择使用自适应动量梯度下降的方法——ADA-PTgdwm。

使用AMORE包构建多层神经网络分类模型

nnet包提供了最常见的前馈反向传播神经网络算法,AMORE包则更进一步提供了更为丰富的控制参数,并可以增加多个隐藏层。

【例11.6】使用AMORE包构建一个分类DNN。

(1)分离RSNNS包并加载AMORE

<detach("package:RSNNS",unload=TRUE)

<library(AMORE)

(2)建模

绝大部分包的用法都类似于之前看到的。但需注意,AMORE包需要指定输入和输出结点的数量以及隐藏结点。这里使用语句n.neurons=c(6,12,8,1)来实现,第一个数字反映了六个输入属性,第二个和第三个值表示第一和第二隐藏层中神经元的数量,并且在这种情况下最终输出神经元的数量为1。

多数情况下,数据科学家通过最小化训练集的均方差来训练DNN。然而,当出现异常值时,训练得到的模型可能难以捕获生成数据的机制。为此,在构建DNN模型时,希望最小化鲁棒的误差度量。建议使用平均对数平方误差(LMLS)。AMORE软件包中的其他鲁棒选择包括Tao error60的“TAO”以及标准均方误差(LMS),参数方法指定使用的学习方法,而本例选择使用自适应动量梯度下降的方法——ADA-PTgdwm。

(3)数据集

将属性变量赋值给R对象X,将响应变量赋值给R对象Y。

<X<-temp[train,]

<Y<-temp[train,7]

(4)数据拟合

● 训练集拟合

模型运行时,将看到如下的输出:

index.show:1 LMLS 0.239138435481238

index.show:2 LMLS 0.236182280077741

index.show:3 LMLS 0.230675203275236(www.xing528.com)

index.show:4 LMLS 0.222697557309232

index.show:5 LMLS 0.214651839732672

● 测试集拟合

一旦模型开始收敛,立即使用sim算法基于测试样本拟合模型。

<pred<-sign(sim(fit$net,temp[-train,]))

<table(pred,sign(temp[-train,7]),dnn=c("Predicted","Observed"))

Observed

Prdeicted -1 1

-1 71 10

1 17 26

(5)模型部署

通过误差率评估模型:

<error_rate=(1-sum(pred==sign(temp[-train,7]))/124)

<round(error_rate,3)

[1]0.218

总体上,具有动量学习的自适应梯度下降结合鲁棒误差的方法,相对于使用RSNNS包建立的分类DNN有较低的误分类率,其误分类率约为22%。这里的关键是,当建立DNN模型时,要使用不同的包、不同的学习算法、不同的网络架构等。换言之,构建卓越的DNN就是通过实验。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈