【发布时间】:2014-04-30 10:05:04
【问题描述】:
我正在尝试使用客户数据库构建预测模型。
我有一个包含 3,000 个客户的数据集。每个客户在测试数据集中有 300 个观察值和 20 个变量(包括因变量)。我还有一个分数数据集,每个唯一的客户 ID 有 50 个观察值和 19 个变量(不包括因变量)。我将测试数据集放在一个单独的文件中,每个客户都由唯一的 ID 变量标识,同样,分数数据集也由唯一的 id 变量标识。
我正在开发一个基于 RandomForest 的预测模型。以下是单个客户的示例。我不确定如何自动为每个客户应用模型并有效地预测和存储模型。
install.packages(randomForest)
library(randomForest)
sales <- read.csv("C:/rdata/test.csv", header=T)
sales_score <- read.csv("C:/rdata/score.csv", header=T)
## RandomForest for Single customer
sales.rf <- randomForest(Sales ~ ., ntree = 500, data = sales,importance=TRUE)
sales.rf.test <- predict(sales.rf, sales_score)
我对 SAS 非常熟悉,开始学习 R。对于 SAS 程序员来说,有很多 SAS 程序是通过组处理来实现的,例如:
proc gam data = test;
by id;
model y = x1 x2 x3;
score data = test out = pred;
run;
此 SAS 程序将为每个唯一 ID 开发一个游戏模型,并将其应用于每个唯一 ID 的测试集。有R等价物吗?
如果有任何例子或想法,我将不胜感激?
非常感谢
【问题讨论】:
-
您应该需要的唯一“非显而易见”命令是
split。除此之外,这只不过是一个for循环。只需确保预先分配将包含每个客户的模型和预测值的列表。 (另外,对于大量变量,避免使用randomForest的公式接口。它通常会慢得多。) -
乔丹,谢谢。你能详细说明一下避免公式界面吗?
-
由于您是 R 新手,因此您应该学习文档。关于公式界面的注释就在注释部分。阅读论据
x和y(位于文档顶部)以获取替代方案。
标签: r sas grouping prediction random-forest