1 red neuronal RBF
En el capítulo de estadísticas, el bloguero presentó el principio de la red neuronal RBF Al convertir los datos linealmente inseparables en datos linealmente separables a través de la distancia de base radial, la función de base radial se usa para la clasificación.
En este capítulo, usaremos el código R para implementar la red RBF
rm(list=ls())
install.packages("mlbench")
install.packages("RSNNS")
install.packages("mlbench")
library(mlbench)
library(RSNNS)
library(ROCR)
Dependencias de paquetes relacionados
Este capítulo hereda el código del capítulo anterior
Enlace: enlace .
2 Construya el modelo y estime
Dado que los datos utilizan el conjunto de datos que viene con R y se han limpiado y transformado, el modelado directo
#############################RBF neural network##################################
myrbf<- rbf(Sonar$inputsTrain, Sonar$targetsTrain, size=100,
maxit=1000,linOut=F)
```
Estimación de umbral de 0,5, el umbral general está diseñado de acuerdo con el negocio
##model predict
out<-predict(myrbf, Sonar$inputsTest)
out[out<0.5543928]=0
out[out>=0.5543928]=1
#calculation accuracy
rate<-sum(out==Sonar$targetsTest)/length(Sonar$targetsTest)
3 Trace la curva ROC
El método es el mismo que el del capítulo anterior, dibuja la curva ROC y encuentra el valor auc
##Prediction probability
tr_rbf<-predict(myrbf,Sonar$inputsTrain)
te_rbf<-predict(myrbf,Sonar$inputsTest)
##draw ROC curve
tr_pred<-prediction(tr_rbf,Sonar$targetsTrain)
tr_perf<-performance(tr_pred,"tpr","fpr")
te_pred<-prediction(te_rbf,Sonar$targetsTest)
te_perf<-performance(te_pred,"tpr","fpr")
plot(tr_perf,col='green',main="ROC of Models")
plot(te_perf, col='black',lty=2,add=TRUE);
abline(0,1,lty=2,col='red')
tr_auc<-round(as.numeric(performance(tr_pred,'auc')@y.values),3)
tr_str<-paste("Train-AUC:",tr_auc,sep="")
legend(0.3,0.45,c(tr_str),2:8)
te_auc<-round(as.numeric(performance(te_pred,'auc')@y.values),3)
te_ste<-paste("Test-AUC:",te_auc,sep="")
legend(0.3,0.25,c(te_ste),2:8)
4 Encontrar el mejor umbral
library(colorspace)
library(pROC)
modelroc=roc(Sonar$targetsTest,te_rbf,plot=T)
plot(modelroc,print.auc=T,auc.polygon=T,grid=c(0.1,0.2),grid.col=c("green","red"),max.auc.polygon=T,auc.polygon.col="skyblue",print.thres=T)
modelauc=auc(modelroc)
modelauc
rocbest=coords(modelroc,"best")
Se encontró que el umbral óptimo era 0.5543928