Code: forecast_spike.

To forecast a spike we start first with a good prediction

*difference between prediction and
forecast*

We see that the training process runs smoothly
*traning history*

To train the model we proceed in the following way:

- We flatten all peaks at 300ms
- We normalize the features between -1 and 1 excluding the 5 and 95 percentile interpolating the outliers
- We train 10 epochs on the complete data set
- We train 20 times 20 epochs on denoised series using rolling windows between train and test splits
- We train 500 times 20 epochs on single series on rolling windows between train and test splits
- We train 500 times 20 epochs on single series on cross validating series
- We train 20 times 20 epochs on denoised series using rolling windows between train and test splits

Than we roll different spike advance times until the spike is forecasted

*forecast advance effectivity*

We can see that around -0.5 seconds the spike is forecasted correctly

*forecast prior to the spike*

To speed up a bit the exploration we analyze the sec pace series. We see that the forecast for the denoised series is pretty accurate

*rolling forecast on the next 6
seconds*

In some cases forecast results are different for neighboring starting points

*rolling forecast on the next 6
seconds*

Some models are really accurate on the denoised series

*rolling forecast on the next 6
seconds*

We see that in some cases we have false positive

*false positive, a spike is forecasted where there is none*

If we analyze the maximum of the peak forecast we see that some models can forecast 3 seconds in advance

*maximum forecast on a rolling windows of 12 seconds*

Using modem features we can have an earlier estimation

*latency maximum forecast on a 6 seconds, modem features*

We iterate over every single series and forecast from every single
`from_peak`

value and compute the maximum of the forecasted
latency

*maximum latency forecast per series, deci seconds*

We than calculate the forecast curves per series and per starting point and calculate the maximum for each curve. For some models the forecast returns many false positives

*maximum forecast on a rolling windows of 6 seconds*

Using modem features we can forecast earlier on average

*latency maximum forecast on modem features, single series*

We than calculate the maximum latency per series per
`time_to_peak`

, we identify a peak setting a threshold

*true positive rate, modem features*

We show the tradeoff using different type of thresholds

*true positive rate, dependence on threshold*

Now we take the derivative of the signal

*derivative of camera latency*

And we train a model on the with all features derived

*latency forecast on single series and starting point*

We than calculate the accuracy depending on the threshold

*accuracy of forecast depending on the threshold*

We see that substantiall changing the size of the window doesn’t change much the results

*forecast on different rolling windows*

We now use a double history points to forecast the next point

*forecast on double history*

Forecast on single series and rolling windos

*double forecast series*

Accuracy on single series forecast

*double forecast accuracy*

Feature importance by substituing the feature by random values

*difference knock out*

For the validation we take calendar week 39 and we perform a pre trained model. We check that the model deliver reliable forecasts on a time window of 6 seconds

*forecast on a rolling window of 6 seconds on a denoised
series*

were we used the simple non derivative single step model for sake of speed. We take the maximum of each forecast and build the forecast line

*maximum forecast on the rolling
window*

We than perform a forecast for each second of the week and compare its maximum with the signal maximum on a rolling window of 1, 6, 12 and 30 seconds

*time series of camera latency considering
the maximum of the next n steps*

We than set a threshold and we count how many data points are above this threshod (spike) in a time bin of 4 seconds

*confusion matrix about the presence of spikes in the next 4
seconds*

and compute the same for the next 30 seconds

*confusion matrix about the presence of spikes in the next 30
seconds*

We see that the false negative rate is around 0.5% and that the model is pretty conservative since there are no false positive. That means that around 10% of the spikes are still undiscovered.

We started performing some naive forecasting on the time series and we compare the results of facebook prophet, a multi layer perceptron regressor and a arima. The first two models take into consideration the sensor features too.

We see that the peaks are really abrupt and the naive models can’t forecast it.

*first peak*