R e1071比Libsvm训练更快

时间:2016-08-30 18:06:44

标签: c r performance libsvm

我尝试在R(包e1071)中使用它后,尝试在库中的Libsvm中使用nu和epsilon SVR。但是训练时间差异太大,在R中生成我的模型花了不到一秒钟,在C中花了不到2分钟。这是正常行为吗?

在C中,我正在运行它:

./ svm-train -s 3 -t 0 -q series.train series.model

我尝试过更多的参数,使用更多的高速缓存,并在编译中加入-fopenmp标志(它增加了大约10秒的运行时间)。

任何提示都将不胜感激!

编辑: 我的培训档案:

5.7367 1:1
5.46076 1:2
4.80722 1:3
4.80722 1:4
4.64745 1:5
4.66924 1:6
4.52401 1:7
4.76364 1:8
4.06652 1:9
4.03748 1:10
...
...
...
64.02734 1:1999
63.6241 1:2000

它应该是一个金融时间序列,第一列是股票的收盘价,第一个指数只是递增顺序的数值(而不是日期)。

R代码:

data<-read.csv("/home/manzha/series/GCARSO.csv",header=TRUE)
X <- c(1:2310) # 2310 is the total of rows
trainL<-2000
X_train <- c(1:trainL)
X_test <- c((trainL+1):length(X))
Y_test<-data$Adj.Close[(trainL+1):length(X)]
Y_train <- data$Adj.Close[1:trainL]
DF <- data.frame(x = X_train, y = Y_train)
model <- svm(y ~ x, data = DF, kernel= "linear", cost=2, epsilon=0.5, type="eps-regression")
predictedY <- predict(model, newdata= data.frame(x= X_test))

我已经阅读了一些e1071库文档,它会自动扩展数据。我试过把我的数据搞得一团糟,而且培训时间不长!但结果与R.不同 如果我写:

model <- svm(y ~ x, data = DF, kernel= "linear", cost=2, epsilon=0.5, type="eps-regression",scale=FALSE)

R比C libsvm花费更多时间进行训练,结果相同。

所以现在,我认为我的问题是如何编写缩放后的训练和测试文件。

0 个答案:

没有答案
相关问题