我试图找出如何处理我的预测问题,我不确定我的理解是否正确,所以如果有人能帮助我,这将是非常好的。首先,我的目标是预测回归的时间序列。除了使用ARIMA模型或其他启发式车型我想专注于机器学习技术,如回归,如随机森林回归,K近邻回归等。这里是数据集的概述:回归 - 样本外预测
Timestamp UsageCPU UsageMemory Indicator Delay
2014-01-03 21:50:00 3123 1231 1 123
2014-01-03 22:00:00 5123 2355 1 322
2014-01-03 22:10:00 3121 1233 2 321
2014-01-03 22:20:00 2111 1234 2 211
2014-01-03 22:30:00 1000 2222 2 0
2014-01-03 22:40:00 4754 1599 1 0
的时间戳以10分钟为单位增加,我想用自变量UsageMemory,Indicator等预测独立变量UsageCPU。此时我将解释我对预测部分的一般知识。所以对于预测来说,有必要将数据集分成训练集,验证集和测试集。为此,我的数据集包含2个整周,分为60%培训,20%验证和20%测试。这意味着对于训练集我有第一个8天包括和验证和我每3天的测试集。之后,我可以在SparkR中训练模型(设置不重要)。
model <- spark.randomForest(train, UsageMemory ~ UsageMemory, Indicator, Delay,
type = "regression", maxDepth = 30, maxBins = 50, numTrees=50,
impurity="variance", featureSubsetStrategy="all")
所以在这之后,我可以确认与验证组的结果,并计算RMSE看到模型和点在我的模型构建部分调整的精度。如果完成我可以预测的测试数据集:
predictions <- predict(model, test)
因此预测工作正常,但这只是一个样本内的预测,不能用于预测例如第二天。根据我的理解,样本内只能用于预测数据集中的数据,而不能预测未来可能发生的值。因此,真的很想预测第二天或仅接下来的10分钟/ 1小时,这只有通过样本外预测才能成功。我也对随机森林的预测值进行了类似的尝试(滚动回归),但在我的情况中,滚动回归仅用于评估不同回归因子对不同参数组合的表现。所以这是我的理解没有样本外预测。
t <- bind(prediction, RollingRegression3 = rollApply(prediction, fun=function(x) mean(UsageCPU), window=6, align='right'))
所以,在我的理解我需要的东西(也许滞后值?),建模过程开始之前。我还阅读了很多不同的论文和书籍,但没有清楚的方法来解决问题,关键是什么。只有t + 1,t + n这样的东西,但现在我甚至不知道该怎么做。如果有人能够帮助我,那真的很不错,因为我从三个月起就试图解决这个问题,谢谢。
只是为了澄清我的理解:你建立了一个随机森林模型,但你不知道如何使用它来预测未来的CPU使用率,对吧?这可能与“样本外”数据无关,如果我错了,请纠正我。因为“样本外”数据是未用于模型训练的数据,与未来(未知)数据相反? –
是的,我想用我的模型来预测下一个12/24小时的例子(样本中)。正如我所提到的,数据集分为训练,验证和测试集,但对我而言,只能预测此测试和验证集。我的目标是将上周的数据纳入预测,并在此基础上预测未来12/24小时。哦,好吧,对不起,我认为对于我而言,“样本外”这个词有一个误解。 – Daniel
好的,有一些想法可能不是解决方案:为了预测接下来的12/24小时,随机森林模型需要知道在接下来的12/24小时内UsageMemory,Indicator和Delay的值,而我们没有。因此,您可以尝试构建其他模型来预测这些变量,然后预测CPU使用情况。就我个人而言,我想用时间序列来解决这类问题。 ML不是解决所有问题的瑞士刀。 –