0

分類の問題があり、予測子の 1 つは、3 つのダミー変数 A、B、C に変換された 4 つのレベル A、B、C、D を持つカテゴリ変数 X です。キャレット パッケージの Recursive Feature Selection (RFE) を使用して機能選択を行おうとしていました。A、B、C、D を一緒に考慮するように RFE 関数に指示するにはどうすればよいですか? つまり、A を除外すると、B&C も除外されます。

一日中これと戦った後、私はまだどこにも行きません...フォーミュラインターフェイスを使用してRFEをフィードすることも機能しません。RFE は自動的に因子をダミー変数に変換すると思います。

以下は私のコード例です:

#rfe settings
lrFuncs$summary<- twoClassSummary
trainctrl <- trainControl(classProbs= TRUE,
                      summaryFunction = twoClassSummary)

ctrl<-rfeControl(functions=lrFuncs,method = "cv", number=3)

#Data pre-process to exclude nzv and highly correlated variables
x<-training[,c(1, 4:25, 27:39)]
x2<-model.matrix(~., data = x)[,-1]
nzv <- nearZeroVar(x2,freqCut = 300/1)
x3 <- x2[, -nzv]
corr_mat <- cor(x3)
too_high <- findCorrelation(corr_mat, cutoff = .9)
x4 <- x3[, -too_high]

excludes<-c(names(data.frame(x3[, nzv])),names(data.frame(x3[, too_high])))

#Exclude the variables identified
x_frame<-x[ , -which(names(x) %in% c(excludes))]

#Run rfe
set.seed((408))
#This does not work with the error below
glmProfile<-rfe(x_frame,y,sizes =subsets, rfeControl = ctrl,trControl =trainctrl,metric = "ROC")
Error in { : task 1 failed - "undefined columns selected"
In addition: Warning messages:
1: glm.fit: fitted probabilities numerically 0 or 1 occurred 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 
3: glm.fit: fitted probabilities numerically 0 or 1 occurred 

#it works if convert x_frame to matrix and then back to data frame, but this way rfe may remove some dummy variables (i.e.remove A but leave B&C)
glmProfile<-rfe(data.frame(model.matrix(~., data = x_frame)[,-1]),y,sizes =subsets, rfeControl = ctrl,trControl =trainctrl,metric = "ROC")

ここの x_frame には、複数のレベルを持つカテゴリ変数が含まれています。

どんな助けでも大歓迎です!

4

1 に答える 1