Napomena: Sljedeći članak će vam pomoći: Vodič za Sktime – Python knjižnica za podatke vremenskih serija (kompatibilno sa Sci-kit učenjem)
Podaci vremenskih serija naširoko se koriste za analizu različitih trendova i sezonalnosti proizvoda tijekom vremena u različitim industrijama. Sktime je objedinjeni python okvir/biblioteka koja pruža API za strojno učenje s podacima o vremenskim serijama i sklearn kompatibilnim alatima za analizu, vizualizaciju, podešavanje i provjeru višestrukih modela učenja vremenskih serija kao što su predviđanje vremenskih serija, regresija vremenskih serija i klasifikacija. Sktime je u istraživačkom radu pod nazivom ‘sktime: Objedinjeno sučelje za strojno učenje s vremenskim serijama’ za NeurIPS predstavila grupa istraživača s Instituta Alan Turing – Markus Loning, Franz J Kiraly, sa Sveučilišta East Anglia – Anthony Bagnall, Jason Lines i sa University College London – Sajaysurya Ganesh, Viktor Kazakov.
Sktime istražuje mješavinu značajki popularnih algoritama vremenskih nizova i knjižnice za učenje sci-kita. Koristi sklearn algoritme za smanjenje golemih tabličnih podataka. Ostale značajke uključuju regresiju vremenske serije, klasifikaciju (multivarijantnu i univarijantnu), klasteriranje vremenske serije, komentare vremenske serije, predviđanje, procjenu, transformaciju, skupove podataka, značajke alate i uslužne funkcije (pretprocesiranje i crtanje).
Pod transformacije vremenskih nizova spadaju panelni transformatori i serijski transformatori. Za Panel transformatore postoji Shapelet, Segment, Reduce, Rocket, PCA, Matrix profile, Compose, Summarize, tsfresh. Za serijske transformatore postoji DTrend, Adapt, box-cox, AutoCorrelation, Cosine. Popularne biblioteke vremenskih nizova dostupne u sktimeu su ARIMA, AutoARIMA, fbprophet. Očekuje se da će ulazni podaci za sktime biti u pandas podatkovnom okviru. Za više informacija provjerite dokumentaciju.
Glavni cilj knjižnice je pružiti:
- Standardno sučelje za izradu različitih vrsta zadataka učenja vremenskih serija korištenjem značajki učenja sci-kit-a Primjena različitih algoritama redukcije. Pružanje alata za sastavljanje modela, alata za procjenu modela i usporednih alata za usporedbu. Sučelje za rukovanje različitim podacima vremenskih serija
Montaža:
pip instaliraj sktime
Predviđanje
from sktime.forecasting.all import * y = load_airline() y_train, y_test = temporal_train_test_split(y) fh = ForecastingHorizon(y_test.index, is_relative=False) predicter = ThetaForecaster(sp=12) # mjesečna sezonska periodičnost weatherer.fit(y_train ) y_pred = predicter.predict(fh) smape_loss(y_test, y_pred)
0.08661468139978168
Klasifikacija vremenskih serija
from sktime.classification.all import * from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X, y = load_arrow_head(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y) classifier = TimeSeriesForest() classifier .fit(X_train, y_train) y_pred = classifier.predict(X_test) accuracy_score(y_test, y_pred)
0.8679245283018868
Univarijatna klasifikacija vremenskih serija sa sktimeom
Jedna varijabla vremenske serije i odgovarajuća oznaka za više instanci. Cilj je pronaći prikladan model klasifikatora koji se može koristiti za učenje odnosa između podataka vremenske serije i oznake i predviđanje nove oznake serije.
import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split from sklearn.pipeline import Pipeline from sklearn.tree import DecisionTreeClassifier from sktime.classification.compose import TimeSeriesForestClassifier from sktime.datasets import load_arrow_head od sktime .utils.slope_and_trend import _slope
# Učitavanje podataka
U ovoj bilježnici koristimo problem vrha strelice.
Skup podataka vrhova strelica skup je podataka vremenskih serija koji sadrži obrise slika vrhova strelica. U antropologiji je klasifikacija točaka projektila važna tema. Klase su kategorizirane na temelju razlika u obliku, npr. – prisutnost i položaj zareza u strelici.
Oblici točaka projektila trebaju se pretvoriti u sekvence pomoću metode temeljene na kutu. Za više pojedinosti pogledajte ovaj post na blogu o pretvaranju slika u podatke vremenske serije za rudarenje podataka.
# Prikaz podataka
X, y = load_arrow_head(return_X_y=Pravi) X_train, X_test, y_train, y_test = train_test_split(X, y) ispis(X_train.shape, y_train.shape, X_test.shape, y_test.shape) (158, 1) (158,) (53, 1) (53,) # univarijantni vremenski niz podataka X_train.head()
dim_0 | |
25 | 0 -1.6320 1 -1.6301 2 -1.6075 3 … |
105 | 0 -1.6758 1 -1.6742 2 -1.6674 3 … |
18 | 0 -2.1138 1 -2.0918 2 -2.0488 3 … |
167 | 0 -1.7471 1 -1.7295 2 -1.7300 3 … |
174 | 0 -1.6307 1 -1.6299 2 -1.6206 3 … |
# binarne ciljne varijable
labels, counts = np.unique(y_train, return_counts=Pravi) ispis(oznake, brojevi)
[‘0’ ‘1’ ‘2’] [60 54 44]
fig, ax = plt.subplots(1figsize=plt.figaspect(0.25))za označiti u oznake: X_train.loc[y_train == label, “dim_0”].iloc[0].plot(ax=ax, label=f”class {označiti}“) plt.legend() ax.set(title=”Primjer vremenske serije”, xlabel=”Vrijeme”);
[Text(0.5, 1.0, ‘Example time series’), Text(0.5, 0, ‘Time’)]
Vremenska serija šuma
Šuma vremenske serije modifikacija je algoritma slučajne šume na postavku vremenske serije:
- Dijeljenje niza u više nasumičnih intervala, Izdvajanje značajki (srednja vrijednost, standardna devijacija i nagib) iz svakog intervala, Uvježbavanje stabla odlučivanja na izdvojenim značajkama, Koraci grupiranja 1 – 3.
iz sktime.transformations.panel.summarize import RandomIntervalFeatureExtractor steps = [ ( “extract”, RandomIntervalFeatureExtractor( n_intervals=”sqrt”, features=[np.mean, np.std, _slope]), ), (“clf”, DecisionTreeClassifier()), ]time_series_tree = Cjevovod(koraci)
Možemo izravno prilagoditi i procijeniti jedno stablo vremenske serije (koje je jednostavno cjevovod).
time_series_tree.fit(X_train, y_train) time_series_tree.score(X_test, y_test)
0.8113207547169812
# Za vremenski niz šumskih klasifikatora, možemo jednostavno koristiti pojedinačno stablo kao osnovni procjenitelj u šumskom ansamblu.
tsf = TimeSeriesForestClassifier( estimator=time_series_tree, n_estimators=100, criterion=”entropy”, bootstrap=Pravioob_score=Pravislučajno_stanje=1n_poslova=-1)
# Prilagodba i dobivanje rezultata van vrećice:
tsf.fit(X_vlak, y_vlak)ako tsf.oob_score: print(tsf.oob_score_)0.8417721518987342 tsf = TimeSeriesForestClassifier() tsf.fit(X_train, y_train) tsf.score(X_test, y_test)
0.8867924528301887
# algoritmi za iscrtavanje grafikona važnosti značajki tijekom vremena za dobivanje važnosti značajki za različite značajke i intervale.
fi = tsf.feature_importances_ fig, ax = plt.subplots(1figsize=plt.figaspect(0.25)) fi.plot(ax=ax) ax.set(xlabel=”Vrijeme”, ylabel=”Važnost značajke”); /usr/local/lib/python3.6/dist-packages/pandas/plotting/_matplotlib/core.py:584: Upozorenje korisnika: Ručka ima oznaku ‘_slope’ koja se ne može automatski dodati u legendu. ax.legend(ručke, oznake, loc=”najbolji”, naslov=naslov)[Text(0.5, 0, ‘Time’), Text(0, 0.5, ‘Feature importance’)]
Za više primjera posjetite Binder kako biste izravno isprobali interaktivni Jupyter Notebook bez ikakvih drugih ovisnosti koje treba instalirati, odavde.
Sktime-dl je knjižnica proširenja za sktime u obliku primjene algoritama dubokog učenja na podatke vremenskih serija. Ovaj repozitorij ima za cilj uključiti Keras mreže koje će se koristiti sa sktimeom i izrađuje cjevovod strojnog učenja i alate za strategiju, a uz to također ima proširenje za sci-kit učenje, za korištenje u aplikacijama i istraživanju. Sučelje omogućuje implementaciju neuronskih mreža za analizu vremenskih serija.
Neuronske mreže za klasifikaciju vremenskih serija
Trenutačni skup alata pruža sučelje dl-4-tsc i implementira sljedeće mrežne arhitekture: Višeslojni perceptron (MLP), Potpuno konvolucijska neuronska mreža (FCNN), Vremenska konvolucijska neuronska mreža (CNN), Time Le-Net (TLeNet), Koder (Encoder), Rezidualna mreža (ResNet), Višestruka konvolucijska neuronska mreža (MCNN), Višekanalna duboka konvolucijska neuronska mreža (MCDCNN), Mreža nepromjenjivog stanja odjeka u vremenu (TWIESN). Postoji još jedno sučelje s InceptionTime.
Regresija
Većina arhitektura klasifikatora služi kao regresor. To su – Time convolutional neural network (CNN), Fully convolutional neural network (FCNN), Multilayer perceptron (MLP), Encoder (Encoder), Time Le-Net (TLeNet), Residual network (ResNet), InceptionTime (Inception).
Predviđanje
Regresijske mreže mogu se prilagoditi da rade kao predviđanje vremenskih nizova kroz sktimeove strategije smanjenja. U budućnosti se mreže RNN/LSTM mogu smatrati funkcionalnima unutar sktime-a.
Podešavanje hiperparametara vrši se pomoću alata RandomizedSearch i GridSerach sci-kit learna. Metode skupljanja uključuju različite nasumične inicijalizacije za stabilnost. One djeluju kao klase omotači neuronskih mreža koje se dalje mogu koristiti u cjevovodima podataka visoke razine unutar sktime modela.
NAPOMENA: sktime-dl trenutno se ne održava i odgovori na pitanja i PR mogu biti spori. Tražimo novog održavatelja koji će nam pomoći u održavanju sktime-dl.
Završne bilješke
Postoji zasebno spremište za početnike za učenje vremenskih serija koristeći sktime zajedno s bilježnicama i video predavanjima. Sktime-m4 je stvoren da koristi sktime za repliciranje i proširenje M4 studije. Ovaj projekt je u stalnom razvoju i raduje se primjenama u stvarnom svijetu, u stvarnom vremenu, kao i upotrebi u naprednim istraživanjima.