2015-10-06 18 views
1

因爲在插入符號ml中有一些方法可用don't have a built in feature selection,我正在試驗rfeR插頁:火車和rfe之間的區別

有人可以解釋,train()rfe()之間的區別是什麼 - 除了培訓時間和排名的功能列表?事情只有train()可以做,反之亦然?

這是我的例子來說明這個問題:

# worker functions 
useRFE <- function(trainctrl) { 
    control <- rfeControl(functions=caretFuncs, 
    method="cv", 
    repeats=5, 
    number=5, 
    returnResamp="final", 
    verbose = TRUE) 


# run the RFE algorithm 
resultsRFE <- 
    rfe(
     training[,1:ncol(iris) - 1], 
     training$Species, 
     sizes = subsets, 
     rfeControl = control, 
     method = "svmRadial", 
     metric = "Accuracy", 
     trControl = trainctrl 
    ) 

    # test 
    predictedClasses <- predict(resultsRFE, testing) 
    confmat <- confusionMatrix(data = predictedClasses$pred, reference = testing$Species) 
    confmat 
    # Balanced Accuracy = 100% 
} 

useTrain <- function(trainctrl) {  
    # train 
    resultsTrain <- train(
     Species ~ ., 
     data = training, 
     method = "svmRadial", 
     metric = "Accuracy", 
     trControl = trainctrl 
) 

    # test 
    predictedClasses <- predict(resultsTrain, testing) 
    confmat <- confusionMatrix(data = predictedClasses, 
     reference = testing$Species) 
    confmat 
    # Balanced Accuracy = 100% 
} 
# load library 
library(caret) 

# load iris data 
data(iris) 

# create datasets 
inTrain <- createDataPartition(y = iris$Species, 
    p = .75, 
    list = FALSE) 

## The output is a set of integers for the rows of Sonar 
## that belong in the training set. 
training <<- iris[ inTrain,] 
testing <<- iris[-inTrain,] 

# select count of features 
subsets <- c(1:ncol(iris)-1) 

# set controls 
trainctrl <- trainControl(
    classProbs= TRUE, 
    method="cv", 
    repeats=5, 
    number=5, 
    verbose = TRUE) 

# compare 
ptm <- proc.time() 
useTrain(trainctrl = trainctrl) 
proc.time() - ptm 
# Accuracy : 0.9167  
# User  System  passed 
# 1.54  0.06  10.27 

ptm <- proc.time() 
useRFE(trainctrl = trainctrl) 
proc.time() - ptm 
# Accuracy : 0.9167 
# User  System  passed 
# 0.86  0.04  24.44 
+0

'useTrain'功能是什麼? – 2015-10-06 08:16:00

+0

請參閱第二個片段,其中定義了兩個函數'useTrain()'和'useRFE()':)。對不起,我想提供運行它所需的所有代碼。 – Boern

+1

之前更好地定義這些函數,因爲人們傾向於按順序加載示例。 – 2015-10-06 08:44:23

回答

1

trainbuilds and tunes更與所有的預測作爲輸入。 rfe以遞歸特徵消除的方式嘗試優化模型性能,其中different predictors are removed。你可以將rfe想象成圍繞train的可能包裝。

這些方法的解釋在website

+0

爲變量消除首先運行rfe()是否有意義,然後運行train()進行建模? –