我試圖找出如何處理我的預測問題,我不確定我的理解是否正確,所以如果有人能幫助我,這將是非常好的。首先,我的目標是預測迴歸的時間序列。除了使用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不是解決所有問題的瑞士刀。 –