Overzicht van prognosemethoden in AutoML
In dit artikel worden de methoden beschreven die AutoML in Azure Machine Learning gebruikt om tijdreeksgegevens voor te bereiden en prognosemodellen te bouwen. Zie AutoML instellen voor tijdreeksprognoses voor instructies en voorbeelden over het trainen van prognosemodellen in AutoML.
Prognosemethoden in AutoML
AutoML gebruikt verschillende methoden om tijdreekswaarden te voorspellen. Deze methoden kunnen grofweg worden toegewezen aan twee categorieën:
- Tijdreeksmodellen die gebruikmaken van historische waarden van de doelhoeveelheid om voorspellingen in de toekomst te doen
- Regressie- of verklarende modellen die voorspellende variabelen gebruiken om waarden van het doel te voorspellen
Stel dat u de dagelijkse vraag naar een bepaald merk sinaasappelsap van een supermarkt moet voorspellen. Laat $y_t$ voor de expressie de vraag naar dit merk weergeven op dag $t$. Een tijdreeksmodel voorspelt de vraag op $t+1$ met behulp van een functie van historische vraag met de volgende expressie:
$y_{t+1} = f(y_t, y_{t-1}, \ldots, y_{t-s})$
De functie $f$ heeft vaak parameters die u kunt afstemmen met behulp van waargenomen vraag uit het verleden. De hoeveelheid geschiedenis die $f$ gebruikt om voorspellingen te doen, $s$, kan ook worden beschouwd als een parameter van het model.
Het tijdreeksmodel in het voorbeeld van de vraag naar sinaasappelsap is mogelijk niet nauwkeurig genoeg omdat er alleen informatie over eerdere vraag wordt gebruikt. Er zijn veel andere factoren die invloed kunnen hebben op de toekomstige vraag, zoals prijs, dag van de week en vakantieperioden. Overweeg een regressiemodel dat gebruikmaakt van deze predictorvariabelen met de volgende expressie:
$y = g(\text{price}, \text{day of week}, \text{holiday})$
Ook hier heeft de functie $g$ over het algemeen een set parameters, waaronder waarden die regularisatie bepalen, die AutoML tunest met behulp van eerdere waarden van de vraag en de voorspellingsfactoren. U laat $t$ weg uit de expressie om te benadrukken dat het regressiemodel correlatiepatronen gebruikt tussen gelijktijdig gedefinieerde variabelen om voorspellingen te doen. Als u $y_{t+1}$ wilt voorspellen van $g$, moet u weten welke dag van de week overeenkomt met $t+1$, of de dag een vakantie is en de sinaasappelsapprijs op dag $t+1$. De eerste twee gegevens zijn gemakkelijk te herkennen met behulp van een agenda. Een detailhandelsprijs wordt meestal vooraf ingesteld, dus de prijs van sinaasappelsap is waarschijnlijk ook een dag van tevoren bekend. De prijs is echter mogelijk niet 10 dagen in de toekomst bekend. Het is belangrijk om te begrijpen dat het nut van deze regressie wordt beperkt door hoe ver in de toekomst u prognoses nodig hebt, ook wel de prognosehorizor genoemd, en in welke mate u de toekomstige waarden van de voorspellingsfactoren kent.
Belangrijk
Bij de voorspellingsregressiemodellen van AutoML wordt ervan uitgegaan dat alle functies van de gebruiker in de toekomst bekend zijn, ten minste tot aan de prognose horizon.
Regressiemodellen van AutoML kunnen ook worden uitgebreid om historische waarden van het doel en de voorspellers te gebruiken. Het resultaat is een hybride model met kenmerken van een tijdreeksmodel en een puur regressiemodel. Historische hoeveelheden zijn extra predictorvariabelen in de regressie aangeduid als onregelmatige hoeveelheden. De volgorde van de vertraging verwijst naar de mate waarin de waarde bekend is. De huidige waarde van een order-twee vertraging van het doel voor het voorbeeld van de vraag naar sinaasappelsap is bijvoorbeeld de waargenomen vraag naar sap van twee dagen geleden.
Een ander belangrijk verschil tussen de tijdreeksmodellen en de regressiemodellen is hoe ze prognoses genereren. Recursierelaties definiëren over het algemeen tijdreeksmodellen die prognoses één voor één produceren. Als u veel perioden in de toekomst wilt voorspellen, herhalen ze de horizon van de prognose, zodat eerdere prognoses weer in het model worden ingevoerd om zo nodig de volgende prognose voor één periode te genereren. De regressiemodellen worden daarentegen beschouwd als directe prognoses die alle prognoses tot aan de horizon genereren in één poging. Directe prognosefuncties kunnen de voorkeur geven aan recursieve methoden, omdat recursieve modellen samengestelde voorspellingsfout wanneer ze eerdere prognoses weer in het model invoeren. Wanneer vertragingsfuncties zijn opgenomen, brengt AutoML enkele belangrijke wijzigingen aan in de trainingsgegevens, zodat de regressiemodellen kunnen functioneren als directe prognoses. Zie Lag-functies voor het voorspellen van tijdreeksen in AutoML voor meer informatie.
Modellen voorspellen in AutoML
AutoML in Machine Learning implementeert de volgende prognosemodellen. Voor elke categorie worden de modellen grofweg weergegeven in volgorde van de complexiteit van patronen die ze kunnen opnemen, ook wel bekend als de modelcapaciteit. Een Naïef model, dat eenvoudigweg de laatst waargenomen waarde voorspelt, heeft een lage capaciteit terwijl het Tijdelijke Convolutional Network (TCNForecaster), een deep neural network (DNN) met mogelijk miljoenen parameters, een hoge capaciteit heeft.
Tijdreeksmodellen | Regressiemodellen |
---|---|
Naïef, Seizoensgebonden Naïef, Gemiddelde, Seizoensgemiddelde, ARIMA(X), Exponentieel gladmaken | Linear SGD, LARS LASSO, Elastic Net, Prophet, K Nearest Neighbors, Decision Tree, Random Forest, Extreem randomized Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster |
AutoML bevat ook ensemblemodellen die gewogen combinaties maken van de best presterende modellen om de nauwkeurigheid verder te verbeteren. Voor prognoses gebruikt u een soft voting ensemble waar compositie en gewichten worden gevonden met behulp van het Caruana Ensemble Selection Algorithm.
Notitie
Er zijn twee belangrijke opmerkingen voor het voorspellen van model ensembles:
- De TCN kan momenteel niet worden opgenomen in ensembles.
- Standaard schakelt AutoML de stack ensemblemethode uit, die is opgenomen in standaardregressie- en classificatietaken in AutoML. Het stack ensemble past bij een metamodel op de beste modelprognoses om ensemblegewichten te vinden. Tijdens interne benchmarking heeft deze strategie de neiging om de tijdreeksgegevens over te nemen. Dit resultaat kan leiden tot slechte generalisatie, dus het stack-ensemble is standaard uitgeschakeld. U kunt het ensemble indien nodig inschakelen in de AutoML-configuratie.
Hoe AutoML uw gegevens gebruikt
AutoML accepteert tijdreeksgegevens in tabelvormige 'brede' indeling. Elke variabele moet een eigen corresponderende kolom hebben. AutoML vereist dat één kolom de tijdsas is voor het prognoseprobleem. Deze kolom moet worden geparseerd in een datum/tijd-type. De eenvoudigste tijdreeksgegevensset bestaat uit een tijdkolom en een numerieke doelkolom. Het doel is de variabele die u in de toekomst wilt voorspellen. In de volgende tabel ziet u voorbeeldwaarden voor deze indeling:
timestamp | quantity |
---|---|
2012-01-01 | 100 |
2012-01-02 | 97 |
2012-01-03 | 106 |
... | ... |
2013-12-31 | 347 |
In complexere gevallen kan de gegevensset andere kolommen bevatten die zijn afgestemd op de tijdindex:
timestamp | SKU | price | Geadverteerd | quantity |
---|---|---|---|---|
2012-01-01 | SAP1 | 3.5 | 0 | 100 |
2012-01-01 | BREAD3 | 5.76 | 0 | 47 |
2012-01-02 | SAP1 | 3.5 | 0 | 97 |
2012-01-02 | BREAD3 | 5.5 | 1 | 68 |
... | ... | ... | ... | ... |
2013-12-31 | SAP1 | 3,75 | 0 | 347 |
Het tweede voorbeeld bevat een SKU, een detailhandelsprijs en een vlag om aan te geven of een item naast de tijdstempel en doelhoeveelheid is geadverteerd. De tweede gegevensset toont twee reeksen: één voor de JUICE1-SKU en één voor de BREAD3-SKU. De SKU-kolom is een kolom met tijdreeks-id's omdat groeperen op deze kolomwaarden twee groepen produceert die elk één reeks bevatten. Voordat het model wordt geveegd, voert AutoML basisvalidatie uit van de invoerconfiguratie en -gegevens en voegt hij ontworpen functies toe.
Vereisten voor gegevenslengte
Als u een prognosemodel wilt trainen, moet u voldoende historische gegevens hebben. Deze drempelwaarde is afhankelijk van de trainingsconfiguratie. Als u validatiegegevens opgeeft, wordt het minimale aantal trainingsobservaties dat per tijdreeks is vereist, als volgt uitgedrukt:
$T_{\text{user validation}} = H + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
In deze expressie is $H$ de prognose horizon, $l_{\text{max}}$ de maximale vertragingsvolgorde en is $s_{\text{window}}$ de venstergrootte voor rolling aggregatiefuncties. Als u kruisvalidatie gebruikt, wordt het minimale aantal waarnemingen als volgt uitgedrukt:
$T_{\text{CV}} = 2H + (n_{\text{CV}} - 1) n_{\text{step}} + \text{max}(l_{\text{max}}, s_{\text{window}}) + 1$
In deze versie is $n_{\text{CV}}$ het aantal kruisvalidatievouwen en $n_{\text{step}}$ de grootte van de CV-stap of verschuiving tussen CV-vouwen. De basislogica achter deze formules is dat u altijd ten minste een horizon van trainingsobservaties moet hebben voor elke tijdreeks, inclusief een opvulling voor vertragingen en kruisvalidatiesplitsingen. Zie Modelselectie in AutoML voor meer informatie over kruisvalidatie voor prognose.
Ontbrekende gegevensverwerking
De tijdreeksmodellen in AutoML vereisen regelmatig ruimtelijke waarnemingen in de tijd, waaronder gevallen zoals maandelijkse of jaarlijkse waarnemingen waarbij het aantal dagen tussen waarnemingen kan variëren. Voordat het modelleringsproces wordt gestart, moet AutoML ervoor zorgen dat er geen reekswaarden ontbreken en dat de waarnemingen regelmatig zijn. Als gevolg hiervan ontbreken er twee ontbrekende gegevenscases:
- Er ontbreekt een waarde voor een bepaalde cel in de tabelgegevens.
- Er ontbreekt een rij , die overeenkomt met een verwachte observatie op basis van de tijdreeksfrequentie.
In het eerste geval worden ontbrekende waarden door AutoML door gebruikgemaakt van algemene configureerbare technieken. In de volgende tabel ziet u een voorbeeld van een verwachte rij die ontbreekt:
timestamp | quantity |
---|---|
2012-01-01 | 100 |
2012-01-03 | 106 |
2012-01-04 | 103 |
... | ... |
2013-12-31 | 347 |
Deze reeks heeft een dagelijkse frequentie, maar er is geen observatie voor 2 januari 2012 (2012-01-02). In dit geval probeert AutoML de gegevens in te vullen door een nieuwe rij toe te voegen voor de ontbrekende waarde. De nieuwe waarde voor de quantity
kolom en eventuele andere kolommen in de gegevens worden vervolgens als andere ontbrekende waarden ingerekend. Om dit proces uit te voeren, moet AutoML de reeksfrequentie herkennen om waarnemingsgaten te kunnen invullen, zoals in dit geval wordt aangetoond. Deze frequentie wordt automatisch gedetecteerd door AutoML, of optioneel kan de gebruiker deze in de configuratie opgeven.
De imputatiemethode voor het opgeven van ontbrekende waarden kan worden geconfigureerd in de invoer. De volgende tabel bevat de standaardmethoden:
Kolomtype | Standaardmethode voor imputatie |
---|---|
Doel | Opvulling vooruit (laatste waarneming) |
Numerieke functie | Mediaanwaarde |
Ontbrekende waarden voor categorische functies worden verwerkt tijdens numerieke codering door een andere categorie op te geven die overeenkomt met een ontbrekende waarde. In dit geval is de imputatie impliciet.
Geautomatiseerde functie-engineering
AutoML voegt doorgaans nieuwe kolommen toe aan gebruikersgegevens om de nauwkeurigheid van modellen te verhogen. Ontworpen functies kunnen standaard- of optionele items bevatten.
Standaardfuncties die zijn ontworpen:
- Kalenderfuncties die zijn afgeleid van de tijdindex, zoals de dag van de week
- Categorische functies die zijn afgeleid van tijdreeks-id's
- Categorische typen coderen naar numeriek type
Optionele, ontworpen functies:
- Indicatorfuncties voor feestdagen die zijn gekoppeld aan een bepaalde regio
- Vertraging van doelhoeveelheid
- Vertragingen in functiekolommen
- Aggregaties van rollend venster, zoals het rolling gemiddelde, van de doelhoeveelheid
- Seizoensgebonden decompositie ((Seizoensgebonden en Trenddecompositie met behulp van Loess (STL))
U kunt featurization configureren vanuit de AutoML SDK met behulp van de klasse ForecastingJob of vanuit de Azure Machine Learning-studio-webinterface.
Detectie en verwerking van niet-stationaire tijdreeksen
Een tijdreeks waarbij gemiddelde en variantie in de loop van de tijd veranderen, wordt niet-stationair genoemd. Tijdreeksen die stochastische trends vertonen, zijn van nature niet-stationair.
In de volgende afbeelding ziet u een visualisatie voor dit scenario. In de grafiek wordt een reeks uitgezet die over het algemeen naar boven gaat. Als u de gemiddelde (gemiddelde) waarden voor de eerste en tweede helft van de reeks berekent en vergelijkt, kunt u de verschillen identificeren. Het gemiddelde van de reeks in de eerste helft van de plot is kleiner dan het gemiddelde in de tweede helft. Het feit dat het gemiddelde van de reeks afhankelijk is van het tijdsinterval dat wordt beoordeeld, is een voorbeeld van de tijdsafhankelijke momenten. In dit scenario is het gemiddelde van een reeks het eerste moment.
In de volgende afbeelding ziet u een grafiek waarin de oorspronkelijke reeks in eerste verschillen wordt uitgezet, $\Delta y_{t} = y_t - y_{t-1}$. Het gemiddelde van de reeks is ongeveer constant gedurende het tijdsbereik, terwijl de variantie lijkt te variëren. In dit scenario ziet u een voorbeeld van een tijdreeks voor postorderposten:
AutoML-regressiemodellen kunnen niet inherent omgaan met stochastische trends of andere bekende problemen met betrekking tot niet-stationaire tijdreeksen. Als gevolg hiervan kan de nauwkeurigheid van out-of-sampleprognoses slecht zijn wanneer dergelijke trends aanwezig zijn.
AutoML analyseert automatisch een tijdreeksgegevensset om het niveau of de stationariteit ervan te bepalen. Wanneer niet-stationaire tijdreeksen worden gedetecteerd, past AutoML automatisch een differentiërende transformatie toe om de effecten van niet-stationair gedrag te beperken.
Model opruimen
Nadat gegevens zijn voorbereid met ontbrekende gegevensverwerking en functie-engineering, wordt met AutoML een set modellen en hyperparameters overgezet met behulp van een modelaanbevelingsservice.
De modellen worden gerangschikt op basis van validatie- of kruisvalidatiegegevens en vervolgens kunnen de topmodellen eventueel worden gebruikt in een ensemblemodel. Het beste model, of een van de getrainde modellen, kan indien nodig worden geïnspecteerd, gedownload of geïmplementeerd om prognoses te produceren. Zie Het opruimen en selecteren van modellen voor prognoses in AutoML voor meer informatie.
Modelgroepering
Wanneer een gegevensset meer dan één tijdreeks bevat, zijn er meerdere manieren om de gegevens te modelleren. U kunt groeperen op de gegevens in de kolommen met tijdreeks-id's en onafhankelijke modellen trainen voor elke reeks. Een meer algemene benadering is het partitioneren van de gegevens in groepen die elk meerdere (waarschijnlijk gerelateerde) reeksen kunnen bevatten en een model per groep kunnen trainen.
AutoML-prognose maakt standaard gebruik van een gemengde benadering voor het groeperen van modellen. Tijdreeksmodellen, plus ARIMAX en Prophet, wijzen één reeks toe aan één groep en andere regressiemodellen wijzen alle reeksen toe aan één groep.
Hier ziet u hoe elk modeltype gebruikmaakt van groepen:
Elke reeks in een afzonderlijke groep (1:1): Naïef, Seizoensgebonden Naïef, Gemiddelde, Seizoensgebonden Gemiddelde, Exponentiële Smoothing, ARIMA, ARIMAX, Prophet
Alle reeksen in dezelfde groep (N:1): Linear SGD, LARS LASSO, Elastic Net, K Nearest Neighbors, Decision Tree, Random Forest, Extremely Random Trees, Gradient Boosted Trees, LightGBM, XGBoost, TCNForecaster
Meer algemene modelgroepen zijn mogelijk met behulp van de vele modellenoplossing in AutoML. Zie Veel modellen - Geautomatiseerd ML-notebook voor meer informatie.