studio ridge regresion multiple modelo lineal r machine-learning regression glmnet

ridge - modelo de regresion lineal multiple en r studio



Modelo de regresiĆ³n de Ridge: glmnet (1)

Ajustar un modelo de regresión lineal usando mínimos cuadrados en mi conjunto de datos de entrenamiento funciona bien.

library(Matrix) library(tm) library(glmnet) library(e1071) library(SparseM) library(ggplot2) trainingData <- read.csv("train.csv", stringsAsFactors=FALSE,sep=",", header = FALSE) testingData <- read.csv("test.csv",sep=",", stringsAsFactors=FALSE, header = FALSE) lm.fit = lm(as.factor(V42)~ ., data = trainingData) linearMPrediction = predict(lm.fit,newdata = testingData, se.fit = TRUE) mean((linearMPrediction$fit - testingData[,20:41])^2) linearMPrediction$residual.scale

Sin embargo, cuando trato de ajustar un modelo de regresión de cresta en mi conjunto de datos de entrenamiento,

x = model.matrix(as.factor(V42)~., data = trainingData) y = as.factor(trainingData$V42) ridge = glmnet(x, y, family = "multinomial", alpha = 1, lambda.min.ratio = 1e-2)

Tengo el siguiente error para las distribuciones multinomial y binomial .

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, : one multinomial or binomial class has 1 or 0 observations; not allowed

¿Me estoy perdiendo de algo? Cualquier comentario sería muy apreciado. Aquí hay una parte de cómo se ven mis datos por cierto.

> trainingData$V42[1:50] [1] "normal" "normal" "neptune" "normal" "normal" "neptune" "neptune" "neptune" "neptune" "neptune" "neptune" [12] "neptune" "normal" "warezclient" "neptune" "neptune" "normal" "ipsweep" "normal" "normal" "neptune" "neptune" [23] "normal" "normal" "neptune" "normal" "neptune" "normal" "normal" "normal" "ipsweep" "neptune" "normal" [34] "portsweep" "normal" "normal" "normal" "neptune" "normal" "neptune" "neptune" "neptune" "normal" "normal" [45] "normal" "neptune" "teardrop" "normal" "warezclient" "neptune" > x (Intercept) V1 V2tcp V2udp V3bgp V3courier V3csnet_ns V3ctf V3daytime V3discard V3domain V3domain_u V3echo V3eco_i V3ecr_i V3efs V3exec V3finger V3ftp 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > y[1:50] [1] normal normal neptune normal normal neptune neptune neptune neptune neptune neptune neptune normal [14] warezclient neptune neptune normal ipsweep normal normal neptune neptune normal normal neptune normal [27] neptune normal normal normal ipsweep neptune normal portsweep normal normal normal neptune normal [40] neptune neptune neptune normal normal normal neptune teardrop normal warezclient neptune 22 Levels: back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop neptune nmap normal phf pod portsweep rootkit satan smurf spy ... warezmaster > table(y) y back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop neptune 196 6 1 10 5 710 1 1 2 8282 nmap normal phf pod portsweep rootkit satan smurf spy teardrop 301 13449 2 38 587 4 691 529 1 188 warezclient warezmaster 181 7


Tiene observaciones únicas para algunas de las clases (como ftp_write con solo 1 observación), lo cual no está permitido (y se indica claramente en el error).