2

我正在阅读caret包作者的《应用预测建模》一书。

第一个 svm 训练示例需要几个小时才能在我的 64 位 i7 16 GB xubuntu 桌面上运行 [我在 4 小时后放弃了]。由于这是一个“玩具”数据集 [800 行,42 个变量],因此肯定有一种方法可以在合理的时间内运行它。

library(caret)
data(GermanCredit)

library(doMC)
registerDoMC(8)

GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)]
GermanCredit$CheckingAccountStatus.lt.0 <- NULL
GermanCredit$SavingsAccountBonds.lt.100 <- NULL
GermanCredit$EmploymentDuration.lt.1 <- NULL
GermanCredit$EmploymentDuration.Unemployed <- NULL
GermanCredit$Personal.Male.Married.Widowed <- NULL
GermanCredit$Property.Unknown <- NULL
GermanCredit$Housing.ForFree <- NULL

## Split the data into training (80%) and test sets (20%)
set.seed(100)
inTrain <- createDataPartition(GermanCredit$Class, p = .8)[[1]]
GermanCreditTrain <- GermanCredit[ inTrain, ]
GermanCreditTest  <- GermanCredit[-inTrain, ]

set.seed(1056)
svmFit = train(Class ~ ., 
           data = GermanCreditTrain,
           method = "svmRadial")

问题:如果这段代码是正确的,它如何在合理的时间内运行?

4

1 回答 1

2

svmRadial我在 Linux 上遇到了非常糟糕的性能。事实证明,我的问题也是使用 multicore DoMCsvmRadial在单核上运行良好。这些函数是我见过kernlab的唯一表现出这种行为的函数。caret这非常令人沮丧,因为我不得不为我的整个脚本放弃多核,只是为了让 SVM 功能正常工作。

于 2016-06-19T11:23:13.360 回答