We have some power load functions that of course are driven heavily by a workday rhythm that we need to forecast, and after some light research into the topic, I see that using ARIMA would seemingly be the logical/usual way to go here. However a colleague suggested that an Random Forest could do just as well and would be much less work. I know RFs can be somewhat magical in their ability to fit things, almost like Neural Networks, and I suppose the proof of the pudding is in the eating. But what is the opinion of this community? Is this a naive approach that will likely not work, or is it worth a try?
It has been awhile, but this is still getting upvotes. So ...
In the event, I did use a Random Forest, and it worked really well. A boosted tree did a bit better that that even. Also since then I know of several other similar projects that took the same route with success and very little fuss. While ARIMA is surely a powerful method with a distinguished history, it seems in today's world the ensemble methods will usually get you where you want to go much quicker, but maybe with the disadvantage of not shed as much light as to what is really going on under the covers.
One thing to watch out for is don't just split your training/test set randomly and test on it, you have to chunk it out so that the test points are not right up against to the training points (on the time axis). This is necessary for any time series which has slowly changing data, otherwise the forest always gets to see training points almost identical to the test points and will thus fit it almost exactly, giving you highly misleading performance that will not reflect real life performance on unseen data.I made that mistake in the first round and was euphoric about my model explaining 90% plus of the variation - for about a day until I realized what was going on. 60% to 80% was what it really did.
I don't see the argument that Random Forest is less work than ARIMA. I would present RF is more work.
Here is the process for ARIMA: 1. Detrend / transform your data 2. Test for stationarity 3. Run autocorrelation plots 4. Set your parameters for your model 5. Run a grid search if you want 6. Look at RMSE
Here is the process for Random Forest: 1. You still have to transform your data 2. You still have to test for stationarity 3. You have to think about creating a bunch of useful features like season, time of day, t-1, t-7, t-14, split weeks, holidays, features that go into all machine learning models 4. Set up cross validation (train, test) 5. Optimize with gridsearch or kfold 6. Pick parameters, then run a model 7. Look at results