1
$\begingroup$

I've got 1325 days of revenue data and when plotting the components it makes 100% sense from a domain expert point of view, so the model is capturing the variations quite well (or it seems it does...). I've added the country holidays using m.add_country_holidays(country_name='GB')

However, when it comes to accuracy I'm getting the following averages:

MAPE: 0.3
MAE: 721,415

721,415 is not an acceptable error. Around 100K would be.

These are the MAE and MAPE plots: MAE

MAPE

Time-series plot: time-series

Performance metrics (first 20):

performance metrics

What else can I do to improve the accuracy of this model? Thank you

$\endgroup$
8
  • $\begingroup$ It might be helpful to outline the process you've followed so far - e.g. what are you trying to predict, any transformations applied to the target, and the model parameterisation. $\endgroup$
    – bradS
    Nov 20, 2019 at 12:07
  • $\begingroup$ I haven't applied any transformation to the target or modified any parameter. Prophet model is quite straightforward and automatic. It only needs 2 columns, date and number, which, in my case are revenue figures. $\endgroup$
    – raulb1
    Nov 20, 2019 at 14:03
  • $\begingroup$ Can you include a plot of the time-series data and the predictions made by your model? $\endgroup$
    – zachdj
    Nov 20, 2019 at 14:27
  • 1
    $\begingroup$ Your target looks very noisy - it seems to fluctuate between 1m and 5m. Maybe you should consider applying some sort of transformation. There also seem to be massive downward spikes (2017, 2018, 2019)... have you taken a look at these in any detail? $\endgroup$
    – bradS
    Nov 20, 2019 at 16:14
  • 1
    $\begingroup$ I would start with something like the log (base of your choice, 10 or e is common). I would also consider removing the Christmas data and treating it separately - it looks to be an outlier and is likely distorting the modelling. $\endgroup$
    – bradS
    Nov 21, 2019 at 9:17

2 Answers 2

2
$\begingroup$

The data here is bit noisy and has a lot of fluctuations. As a few of the comments suggest, apply some transformation on it. I would say get your data in some smaller range and then apply a LSTM to predict it. I made time-series work with a LSTM with removal of noise by eliminating outliers and it worked with nice further prediction.

RNNs tend to work better with time-series data especially bidirectional-LSTM due to their backwards learning capabilities.

$\endgroup$
0
$\begingroup$

I do not recommend DNNs for the noisy data! Actually, probably it is the worst algorithm to deal with noisy data. Here is a solution:

  1. Try to smoothen your data. There are many algorithms such as Kernel ridge.

  2. Reproduce the smoothen data.

  3. Learn the smoothen data and predict a smoothen curve which indicates the most probable interval in which, the future values will come.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.