Een concreet voorbeeld van een algoritme dat beschikbaar is binnen BigQuery is ARIMA time series forecasting. Een voorbeeld: veel bedrijven maken gebruik van targets. Ze stellen bijvoorbeeld een doel voor de maandelijkse omzet of winst. Vaak is de hoogte van de target enigszins uit de lucht gegrepen. Er is geen rekening gehouden met de invloed van factoren als bijvoorbeeld seizoen en andere historische data op de hoogte van de target.
ARIMA time series forecasting gebruikt historische data om voorspellingen te doen over de toekomst. Je kunt dit algoritme gebruiken om reëlere targets te stellen. Ook kun je het algoritme gebruiken om waarschuwingen af te geven als zich afwijkingen voordoen in de huidige data die een mogelijke breuk kunnen betekenen met de huidige verwachtingen, zogenaamde “anomaly detection”.
Voordat het ARIMA-algoritme kan worden toegepast moet de uit GA4 geïmporteerde data eerst omgezet worden naar het juiste format. De te genereren tabel hoeft slechts 2 kolommen te bevatten: een kolom met datum en één die de betreffende target bevat. Doordat de GA4 data in BigQuery geneste data bevat (vergelijkbaar met JSON) kan het even wat moeite kosten de data om te zetten. Todd Kerpelman geeft in een artikel een duidelijke uitleg van de opbouw van deze data. (lhttps://medium.com/firebase-developers/using-the-unnest-function-in-bigquery-to-analyze-event-parameters-in-analytics-fb828f890b42 ).
Hieronder volgen verschillende SQL-query’s die als voorbeeld dienen hoe een eenvoudige opzet eruit zou zien. Ben je geen SQL-whizzkid? Dat geeft niets. Je kunt de code gewoon overslaan. Onderstaande voorbeeld geeft dan in ieder geval een voorbeeld van de stappen die nodig zijn.
Een query om een tabel te genereren met conversies (gebaseerd op bereiken van een bepaalde webpagina) zou er ongeveer als volgt uit kunnen zien:
CREATE OR REPLACE TABLE `project.aggregates.conversions` AS
SELECT COUNT(DISTINCT user_pseudo_id) AS conversions, PARSE_DATE('%Y%m%d', event_date) AS conv_date
FROM `project.analytics_250567900.events_*`
WHERE event_name = "page_view" AND _TABLE_SUFFIX BETWEEN '20210618' AND '20210622' AND
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = "page_location") LIKE '%conversiepaginanaam.htm%'
GROUP BY conv_date
Vervolgens kun je op basis van deze tabel het ARIMA-model genereren. De query zou er dan zo uit kunnen zien:
CREATE OR REPLACE MODEL
`project.models.tseries` OPTIONS( MODEL_TYPE = 'ARIMA_PLUS',
TIME_SERIES_TIMESTAMP_COL = 'conv_date',
TIME_SERIES_DATA_COL = 'conversions',
HOLIDAY_REGION = 'NL' ) AS
SELECT conv_date, conversions
FROM `project.aggregates.conversions`
WHERE conv_date BETWEEN DATE('2019-01-01')
AND DATE('2021-04-01')
ORDER BY conv_date ASC
Zo eenvoudig is de basis opzet voor het genereren van het model. Minder dan 30 regels code. Als het model gegenereerd is, kun je de forecast genereren. In onderstaande geval betreft dit een forecast van 30 dagen. Het model produceert ook een onderste en bovenste confidence level. Een confidence level van 0,9 voorspelt de onder- en bovenwaarden waarvan 90% zeker is dat de werkelijke waarde daarbinnen zal vallen.
SELECT * FROM
ML.FORECAST( MODEL `project.models.tseries`,
STRUCT(7 AS horizon, 0.90 AS confidence_level) )
Zo’n forecast kan er dan als volgt uitzien.
De gele en grijze lijn zijn respectievelijk de onderste en bovenste confidence level. De rode lijn is de forecast. De blauwe lijn is het reële aantal conversies. We hebben een forecast gedaan over een periode in het verleden zodat we konden controleren hoe goed de voorspelling was. In dit geval blijft het daadwerkelijke aantal conversies in alle gevallen binnen de onderste en bovenste confidence level lijnen.
Je zou zo’n forecast regelmatig updaten om zo’n accuraat mogelijke voorspelling te hebben. Vervolgens zou je hetzelfde model kunnen gebruiken voor een “anomaly detection”. Hierbij doet het model een voorspelling of de daadwerkelijk behaalde waardes dusdanig afwijken van de voorspelling dat “er iets aan de hand is”.
SELECT * FROM
ML.DETECT_ANOMALIES(
MODEL `project.models.timeserie`,
STRUCT(0.9 AS anomaly_prob_threshold),
TABLE `project.aggregates.conversions')
De tabel die terugkomt bevat een kolom “is_anomaly”. Regels die de waarde “true” bevatten wijken dusdanig af dat ze aandacht behoeven.
Bovenstaande stappen geven een beeld wat nodig is om je eerste stappen te zetten met gebruik van ML algoritmes in combinatie met je GA4 data. Er zijn veel meer algoritmes beschikbaar in BigQuery zie: https://cloud.google.com/bigquery-ml/docs/introduction
Upgraden naar Google Analytics 4? De voor- en nadelen
Een half jaar nadat de nieuwe versie van Google Analytics uit bèta is, valt het op dat nog betrekkelijk weinig bedrijven verder zijn dan...
Lees hier verder