R语言 使用BP神经网络解决银行信用评估问题

一、学习R语言AMORE包中的newff函数

    这是个前馈神经网络工具包,类似的还有nnet,RSNNS等。AMORE比nnet参数要丰富一些。AMORE用来构建前馈神经网络的函数是newff.

newff(n.neurons, learning.rate.global, momentum.global, error.criterium, Stao, 
	hidden.layer, output.layer, method)

    其中。n.neurons是个数值向量,包含在每个层的神经元的数目。第一个数是输入神经元的数量,最后是输出神经元的数量,其余的都是隐藏层神经元的数量。learning.rate.global全局的学习率。momentum.global全局的动量值(有的学习算法需要设置这个值?貌似是步长)。error.criterium误差衡量算法,我用误差平方和,所以选“LMS”。hidden.layer隐藏层激活函数。output.layer输出层激活函数。method学习方法,翻译过来都是梯度下降?不是BP最速下降?还好这里反正不影响结果。

二、构建神经网络预测银行客户的信用。

    原始数据下载http://yun.baidu.com/share/link?shareid=668466015&uk=1175373848

    german.data-numeric是德国一家银行的数据,共1000行,前24个变量是用户的各种存款贷款记录,最后一个变量是信用好坏,只有1和2两种情况。

#读入数据,因为分隔符不确定,所以不写,空格和制表符都行
x <- read.table("D:\\baiduyundownload\\ml\\week09\\credit\\german.data-numeric",header=F)
#数据最后一行为1和2表示信用好和信用不好,对其进行归一化
x$V25[x$V25 == 1] <- 0
x$V25[x$V25 == 2] <- 1
#把训练数据和测试数据拆开并归一化
T <- x$V25
P <- x[,1:24]
#把输入样本归一化  这里使用y=(x-MinValue)/(MaxValue-MinValue)来处理
maxP <- apply(P,2,"max")
minP <- apply(P,2,"min")
P <- t(P)
mm <- maxP-minP
mm[mm ==0] <- 1  #避免除0
P <- (P-minP)/mm
P <- t(P)
#抽样300作为测试集
testc <- sample(1:nrow(x),300,replace=F)
trainP <- P[-testc,]
trainT <- T[-testc]
testP <- P[testc,]
testT <- T[testc]
#创建网络
net <- newff(n.neurons=c(24,24,1), learning.rate.global=1e-4, momentum.global=0.01,
        error.criterium="LMS", Stao=NA, hidden.layer="tansig", 
        output.layer="purelin", method="ADAPTgdwm")
#训练
model <- train(net, trainP, trainT, error.criterium="LMS",
 report=TRUE, show.step=100, n.shows=10 )
#测试
testO <- sim(model$net, testP)
testO[testO <0.5] <- 0
testO[testO >= 0.5] <- 1
table(testO,testT)

多次运行,发现正确率在百分之76左右。八错八错

你可能感兴趣的:(R语言,BP神经网络,AMORE)