0 / 0
Go back to the English version of the documentation
SPSS predictive analytics forecasting using data preparation for time series data in notebooky
Last updated: 28. 4. 2023
SPSS predictive analytics forecasting using data preparation for time series data in notebooky

Příprava dat pro data časové řady (TSDP) poskytuje funkce pro převod dat nezpracovaných dat (ve vyrovnaném vícedimenzionálním formátu, který zahrnuje transakční (event) a sloupcová data) do běžných dat časových řad (v kompaktním formátu založeném na řádcích), který je vyžadován následujícími metodami analýzy časové řady.

Hlavní úlohou TSDP je generovat časovou řadu ve smyslu kombinace každé jedinečné hodnoty v polích dimenze s poli metrik. Kromě toho seřadí data založená na časovém razítku, extrahuje metadata časových proměnných, transformuje časovou řadu s jinou granularitou času (interval) použitím funkce agregace nebo distribuce, zkontroluje kvalitu dat a v případě potřeby zpracovává chybějící hodnoty.

Příklad kódu produktu Python :

from spss.ml.forecasting.timeseriesdatapreparation import TimeSeriesDataPreparation

tsdp = TimeSeriesDataPreparation(). \
    setMetricFieldList(["Demand"]). \
    setDateTimeField("Date"). \
    setEncodeSeriesID(True). \
    setInputTimeInterval("MONTH"). \
    setOutTimeInterval("MONTH"). \
    setQualityScoreThreshold(0.0). \
    setConstSeriesThreshold(0.0)

tsdpOut = tsdp.transform(data)

Produkt TimeSeriesDataPreparationConvertor

Toto je rozhraní API pro convertor data/času, které se používá k poskytnutí některých funkcí konvertoru data/času v TSDP pro aplikace, které se mají použít. Pro tuto komponentu existují dva případy použití:

  • Výpočet časových bodů mezi určeným časem zahájení a časem ukončení. V tomto případě se počáteční a koncový čas oba objevují po prvním pozorování ve výstupu předchozího TSDP.
  • Spočítejte časové body mezi počátečním indexem a koncovým indexem odkazujícím na poslední pozorování ve výstupu předchozího TSDP.

Časová příčinná souvislost

Časová příčinná souvislost (TCM) se odkazuje na sadu metod, které se pokoušejí objevit klíčové časové vztahy v datech časových řad s použitím kombinace algoritmů Ganger causality a regresních algoritmů pro výběr proměnných.

Příklad kódu produktu Python :

from spss.ml.forecasting.timeseriesdatapreparation import TimeSeriesDataPreparation
from spss.ml.common.wrapper import LocalContainerManager
from spss.ml.forecasting.temporalcausal import TemporalCausal
from spss.ml.forecasting.params.predictor import MaxLag, MaxNumberOfPredictor, Predictor
from spss.ml.forecasting.params.temporal import FieldNameList, FieldSettings, Forecast, Fit
from spss.ml.forecasting.reversetimeseriesdatapreparation import ReverseTimeSeriesDataPreparation

tsdp = TimeSeriesDataPreparation().setDimFieldList(["Demension1", "Demension2"]). \
    setMetricFieldList(["m1", "m2", "m3", "m4"]). \
    setDateTimeField("date"). \
    setEncodeSeriesID(True). \
    setInputTimeInterval("MONTH"). \
    setOutTimeInterval("MONTH")
tsdpOutput = tsdp.transform(changedDF)

lcm = LocalContainerManager()
lcm.exportContainers("TSDP", tsdp.containers)

estimator = TemporalCausal(lcm). \
    setInputContainerKeys(["TSDP"]). \
    setTargetPredictorList([Predictor(
    targetList=[["", "", ""]],
    predictorCandidateList=[["", "", ""]])]). \
    setMaxNumPredictor(MaxNumberOfPredictor(False, 4)). \
    setMaxLag(MaxLag("SETTING", 5)). \
    setTolerance(1e-6)

tcmModel = estimator.fit(tsdpOutput)
transformer = tcmModel.setDataEncoded(True). \
    setCILevel(0.95). \
    setOutTargetValues(False). \
    setTargets(FieldSettings(fieldNameList=FieldNameList(seriesIDList=[["da1", "db1", "m1"]]))). \
    setReestimate(False). \
    setForecast(Forecast(outForecast=True, forecastSpan=5, outCI=True)). \
    setFit(Fit(outFit=True, outCI=True, outResidual=True))

predictions = transformer.transform(tsdpOutput)
rtsdp = ReverseTimeSeriesDataPreparation(lcm). \
    setInputContainerKeys(["TSDP"]). \
    setDeriveFutureIndicatorField(True)

rtsdpOutput = rtsdp.transform(predictions)
rtsdpOutput.show()

Dočasný model s automatickým regresivním modelem

Autoregresivní (AR) modely jsou sestaveny tak, aby vypočítaly zastaralé prognózy pro řady prediktorů, které nejsou cílové řady. Tyto prognózy prediktorů se pak použijí k vypočítání prognóz z výběrového souboru pro cílovou řadu.

Model vytvořený příkazem TemporalCausal

TemporalCausal exportuje výstupy:

  • soubor JSON, který obsahuje informace o modelu TemporalCausal
  • soubor XML, který obsahuje model s více řadami

Příklad kódu produktu Python :

from spss.ml.common.wrapper import LocalContainerManager
from spss.ml.forecasting.temporalcausal import TemporalCausal, TemporalCausalAutoRegressiveModel
from spss.ml.forecasting.params.predictor import MaxLag, MaxNumberOfPredictor, Predictor
from spss.ml.forecasting.params.temporal import FieldNameList, FieldSettingsAr, ForecastAr

lcm = LocalContainerManager()
arEstimator = TemporalCausal(lcm). \
    setInputContainerKeys([tsdp.uid]). \
    setTargetPredictorList([Predictor(
        targetList = [["da1", "db1", "m2"]],
        predictorCandidateList = [["da1", "db1", "m1"],
                                  ["da1", "db2", "m1"],
                                  ["da1", "db2", "m2"],
                                  ["da1", "db3", "m1"],
                                  ["da1", "db3", "m2"],
                                  ["da1", "db3", "m3"]])]). \
    setMaxNumPredictor(MaxNumberOfPredictor(False, 5)). \
    setMaxLag(MaxLag("SETTING", 5))

arEstimator.fit(df)

tcmAr = TemporalCausalAutoRegressiveModel(lcm).\
    setInputContainerKeys([arEstimator.uid]).\
    setDataEncoded(True).\
    setOutTargetValues(True). \
    setTargets(FieldSettingsAr(FieldNameList(
        seriesIDList=[["da1", "db1", "m1"],
                      ["da1", "db2", "m2"],
                      ["da1", "db3", "m3"]]))).\
    setForecast(ForecastAr(forecastSpan = 5))

scored = tcmAr.transform(df)
scored.show()

Detekce odlehlých příčinných odlehlých hodnot

Jednou z výhod sestavování modelů TCM je schopnost detekovat outliery založené na modelu. Detekce odlehlých hodnot odkazuje na schopnost identifikovat časové body v cílové řadě s hodnotami, které jsou příliš daleko od očekávaných (instalovaných) hodnot založených na modelech TCM.

Časová analýza základní příčinné příčiny

Analýza základní příčiny odkazuje na schopnost prozkoumat příčinnou graf pro Granger, aby bylo možné analyzovat hodnoty klíče/kořenové hodnoty, které měly za následek danou odlehlější hodnotu.

Analýza časového příčinného scénáře

Analýza scénáře odkazuje na schopnost modelů TCM na "playout" důsledky umělého nastavení hodnoty časové řady. Scénář je sada prognóz, která se provádí nahrazením hodnot kořenové časové řady přenašečem substitučních hodnot.

Dočasný příčinný souhrn

Souhrn TCM vybere Prvních N modelů založených na jednom měření kvality modelu. Existuje pět vzorových opatření kvality: RMSE (Root Mean Squared Error), Chyba v procentech (RMSPE), Bayesovo informační kritérium (BIC), Akaike Information Criterion (AIC) a R na druhou (RSQUARE). Uživatel může nastavit jak N, tak i měřítko kvality modelu.

Prozkoumání časové řady

Prozkoumání časových řad zkoumá vlastnosti dat časových řad na základě některých statistik a testů ke generování předběžných poznatků o časové řadě před modelováním. Pokrývá nejen analytické metody pro zkušené uživatele (včetně klastrování časových řad, testování jednotek root a korelace), ale také poskytuje proces automatického prozkoumání na základě jednoduché metody dekompozice časové řady pro obchodní uživatele.

Příklad kódu produktu Python :

from spss.ml.forecasting.timeseriesexploration import TimeSeriesExploration

tse = TimeSeriesExploration(). \
    setAutoExploration(True). \
    setClustering(True)

tseModel = tse.fit(data)
predictions = tseModel.transform(data)
predictions.show()

Příprava reverzních dat pro data časové řady

Příprava reverzních dat pro data časové řady (RTSDP) poskytuje funkce, které převádí formát CRB (compact row based) generovaný TimeSeriesDataPreperation (TSDP) nebo TemporalCausalModel (TCM Score) zpět do zploštělé vícerozměrné (FMD) formátu.

Příklad kódu produktu Python :

from spss.ml.common.wrapper import LocalContainerManager
from spss.ml.forecasting.params.temporal import GroupType
from spss.ml.forecasting.reversetimeseriesdatapreparation import ReverseTimeSeriesDataPreparation
from spss.ml.forecasting.timeseriesdatapreparation import TimeSeriesDataPreparation

manager = LocalContainerManager()
tsdp = TimeSeriesDataPreparation(manager). \
    setDimFieldList(["Dimension1", "Dimension2", "Dimension3"]). \
    setMetricFieldList(
    ["Metric1", "Metric2", "Metric3", "Metric4", "Metric5", "Metric6", "Metric7", "Metric8", "Metric9", "Metric10"]). \
    setDateTimeField("TimeStamp"). \
    setEncodeSeriesID(False). \
    setInputTimeInterval("WEEK"). \
    setOutTimeInterval("WEEK"). \
    setMissingImputeType("LINEAR_INTERP"). \
    setQualityScoreThreshold(0.0). \
    setConstSeriesThreshold(0.0). \
    setGroupType(
    GroupType([("Metric1", "MEAN"), ("Metric2", "SUM"), ("Metric3", "MODE"), ("Metric4", "MIN"), ("Metric5", "MAX")]))

tsdpOut = tsdp.transform(changedDF)
rtsdp = ReverseTimeSeriesDataPreparation(manager). \
    setInputContainerKeys([tsdp.uid]). \
    setDeriveFutureIndicatorField(True)

rtdspOut = rtsdp.transform(tsdpOut)
import com.ibm.spss.ml.forecasting.traditional.TimeSeriesForecastingModelReEstimate

val tsdp = TimeSeriesDataPreparation().
   setDimFieldList(Array("da", "db")).
   setMetricFieldList(Array("metric")).
   setDateTimeField("date").
   setEncodeSeriesID(false).
   setInputTimeInterval("MONTH").
   setOutTimeInterval("MONTH")

val lcm = LocalContainerManager()
lcm.exportContainers("k", tsdp.containers)

val reestimate = TimeSeriesForecastingModelReEstimate(lcm).
  setForecast(ForecastEs(outForecast = true, forecastSpan = 4, outCI = true)).
  setFitSettings(Fit(outFit = true, outCI = true, outResidual = true)).
  setOutInputData(true).
  setInputContainerKeys(Seq("k"))

val rtsdp = ReverseTimeSeriesDataPreparation(tsdp.manager).
  setInputContainerKeys(List(tsdp.uid)).
  setDeriveFutureIndicatorField(true)

val pipeline = new Pipeline().setStages(Array(tsdp, reestimate, rtsdp))
val scored = pipeline.fit(data).transform(data)
scored.show()

Nadřízené téma: Algoritmy prediktivních analýz produktuSPSS

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more