R 套索:glmnet的交叉验证
我正在使用R 套索:glmnet的交叉验证,r,machine-learning,cross-validation,glmnet,R,Machine Learning,Cross Validation,Glmnet,我正在使用cv.glmnet()执行交叉验证,默认情况下10倍 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.c
cv.glmnet()
执行交叉验证,默认情况下10倍
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)
x = model.matrix(as.factor(V42)~.-1, data = trainingData)
crossVal <- cv.glmnet(x=x, y=trainingData$V42, family="multinomial", alpha=1)
plot(crossVal)
但正如下面所示,我似乎没有一个计数为0
或1
的观察级别
>table(trainingData$V42)
back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop
956 30 8 53 11 3599 18 9 7
neptune nmap normal perl phf pod portsweep rootkit satan
41214 1493 67343 3 4 201 2931 10 3633
smurf spy teardrop warezclient warezmaster
2646 2 892 890 20
任何指针?cv.glmnet
默认使用N=10进行N次交叉验证。这意味着它将您的数据分成10个子集,然后在10个子集中的9个子集上训练一个模型,并在剩余的1个子集上测试它。它重复这个过程,依次省略每个子集
您的数据非常稀疏,有时,训练子集会遇到此处(和中)遇到的问题。最好的解决方案是通过组合稀有类来减少响应中的类数(例如,您真的需要获得spy
或perl
的预测概率吗)
此外,如果您正在进行glmnet交叉验证并构建模型矩阵,则可以使用我编写的简化过程。cv.glmnet
默认情况下使用N=10进行N次交叉验证。这意味着它将您的数据分成10个子集,然后在10个子集中的9个子集上训练一个模型,并在剩余的1个子集上测试它。它重复这个过程,依次省略每个子集
您的数据非常稀疏,有时,训练子集会遇到此处(和中)遇到的问题。最好的解决方案是通过组合稀有类来减少响应中的类数(例如,您真的需要获得spy
或perl
的预测概率吗)
此外,如果您正在进行glmnet交叉验证并构建模型矩阵,则可以使用我编写的优化流程。使用级别(trainingData$V42)如果它是一个因子变量,则检查哪个因子级别在测试或训练集中没有观测值。问题可能是测试或训练数据中不存在的因子级别之一。这意味着V42存储为字符串向量。比较testdata$V42和traindata$V42的表。为什么要与testdata进行比较?这是一个10倍交叉验证,它处理我的训练数据集使用级别(trainingData$V42)(如果它是一个因子变量),并检查哪个因子级别在测试或训练集中没有观察到。问题可能是测试或训练数据中不存在的一个因子级别。这意味着V42存储为字符串向量。比较testdata$V42和traindata$V42的表。为什么要与testdata进行比较?这是一个10倍的交叉验证,它涉及到我的训练数据集eah,但我现在将尝试这样做。谢谢你的链接:是的,但我现在会尝试这样做。谢谢你的链接:
>table(trainingData$V42)
back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop
956 30 8 53 11 3599 18 9 7
neptune nmap normal perl phf pod portsweep rootkit satan
41214 1493 67343 3 4 201 2931 10 3633
smurf spy teardrop warezclient warezmaster
2646 2 892 890 20