Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中执行预测模型的时间_R_Machine Learning_Time - Fatal编程技术网

在R中执行预测模型的时间

在R中执行预测模型的时间,r,machine-learning,time,R,Machine Learning,Time,我有一个数据集,大约有20k行和160列。经过一些简单的预处理,比如接近零的方差和用大量NAs删除变量,我只保留了56列作为特征。现在,我想用随机森林方法对这些数据执行一个训练模型。但大约一个小时后,它没有应答,我中止了它 是否有任何代码可以根据我的电脑配置预测训练模型所需的时间? 通常,在具有此维度的数据集上执行随机林或rpart训练方法需要多少钱?尝试为随机林函数设置一些参数。从少量树(ntree)和/或在每次拆分时绘制的少量变量(mtry)和/或少量“叶子”(maxnodes)开始。然后更

我有一个数据集,大约有20k行和160列。经过一些简单的预处理,比如接近零的方差和用大量NAs删除变量,我只保留了56列作为特征。现在,我想用随机森林方法对这些数据执行一个训练模型。但大约一个小时后,它没有应答,我中止了它

是否有任何代码可以根据我的电脑配置预测训练模型所需的时间?
通常,在具有此维度的数据集上执行随机林或rpart训练方法需要多少钱?

尝试为
随机林
函数设置一些参数。从少量树(
ntree
)和/或在每次拆分时绘制的少量变量(
mtry
)和/或少量“叶子”(
maxnodes
)开始。然后更改参数以增加模型的复杂性和准确性。这也将有助于您的计算机的计算速度,因为您可以从小处开始,慢慢增加参数,以查看它们对性能的影响

注意,如果您使用
randomForest
进行特征选择(这就是我使用它的原因),请使用大量的
ntree
,少量的
mtry
,以及少量的
maxnodes
,因此您可以提取有关单变量的良好信息。

您可以使用软件包库预测随机森林算法的经验复杂性和计算时间。让我们创建一个与您相同大小的假数据:

df = data.frame(matrix(rpois(20000*56, 3), ncol=56))
然后,加载库

library(GuessCompx)
library(randomForest)
运行测试时,您会得到一个N*log(N)时间复杂度:

CompEst(df, randomForest)
#### $`TIME COMPLEXITY RESULTS`$best.model
#### [1] "NLOGN"
#### $`TIME COMPLEXITY RESULTS`$computation.time.on.full.dataset
#### [1] "3M 30.31S"
#### $`MEMORY COMPLEXITY RESULTS`
#### $`MEMORY COMPLEXITY RESULTS`$best.model
#### [1] "QUADRATIC"
#### $`MEMORY COMPLEXITY RESULTS`$memory.usage.on.full.dataset
#### [1] "14033 Mb"

时间似乎不是问题,但内存限制更大(理论上估计为14Go),因为它达到了系统的限制,这会妨碍算法的运行,可能会大大降低算法的速度(实际总时间预测的3分钟超出了内存需求,我花了12分钟)?尽量增加内存限制

你在较小的子集上做了基准测试吗?也考虑添加你正在使用的库/函数和哪些参数。例如,
randomForest
有一个类似于
ntrees=
的参数,用于指定要训练多少棵树。在这里设置一个较高的数字将增加执行时间。非常感谢您的完整回答。这很有帮助。因此,我在合理的时间内获得了50棵树和41 mtry的高精度.9998。但我的问题是关于一个命令,我可以预测执行任何模型所需的时间。如果有这样一个选项,我们可以管理时间,在巨大的数据集上运行这类代码。我不知道这是否可行,因为它有大量的依赖项。编译、硬件、实现、算法、调优参数、数据类型。。。这个名单还有很多。随机森林是一个缓慢的算法相对于其他。。。但是,相对于知道为什么要使用算法以及如何有效地调整算法,每个算法的速度的相对感觉并没有那么有用。