Seuraava artikkeli auttaa sinua: Miten aikasarjaennuste voidaan tehdä satunnaisen metsän avulla?
Perinteiset aikasarjaennustemallit, kuten ARIMA, SARIMA ja VAR, perustuvat regressiomenettelyyn, koska näiden mallien on käsiteltävä jatkuvia muuttujia. Satunnaismetsä on myös yksi yleisesti käytetyistä koneoppimismalleista, joilla on erittäin hyvä suorituskyky luokittelu- ja regressiotehtävissä. Satunnaista metsäregressiomallia voidaan käyttää myös aikasarjojen mallintamiseen ja ennustamiseen parempien tulosten saavuttamiseksi. Tässä artikkelissa keskustelemme siitä, kuinka aikasarjamallinnus ja ennuste tehdään satunnaisen metsäregressorin avulla. Tärkeimmät artikkelissa käsiteltävät kohdat on lueteltu alla.
Sisällysluettelo
- Tietoja satunnaisesta metsäregressorista
- Satunnaisen metsäregression käyttö aikasarjoissa
- Mallinnusmenettely
- Kirjastojen tuonti
- Tietojen muuntaminen
- Mallin sovitus
- Ladataan tietoja
- Mallin arviointi
Aloitetaan tarkastelemalla nopeasti satunnaista metsän regressiota.
Tietoja satunnaisesta metsäregressorista
Satunnainen metsämalli on useiden päätöspuiden kokonaisuus, jossa päätöspuut tunnetaan heikkoina oppijoina. Sitä voidaan soveltaa luokittelu- ja regressioongelmiin. Se on myös laajalti käytetty malli regressioanalyysiin. Regressiomenettely satunnaista metsää käyttämällä voidaan suorittaa seuraavissa vaiheissa:
- Tietojen jakaminen: Prosessi käy läpi ominaisuuksien jakamisen ja jokainen rivi on vastuussa päätöspuiden luomisesta.
- Päätöksenteko: Jokainen puu tekee yksilöllisen päätöksensä tietojen perusteella.
- Päätösten yhdistäminen: Tässä vaiheessa puiden keskiarvoennusteet tulevat lopulliseksi tulokseksi.
Tämä puiden päätösten keskiarvo tekee satunnaisesta metsäregressiosta vahvemman kuin mikään muu algoritmi. Katsotaanpa, miksi meidän pitäisi käyttää satunnaista metsäregressiota aikasarjaanalyysissä.
Satunnaisen metsäregression käyttö aikasarjoissa
Koska satunnainen metsä on joukko päätöspuita, sen varianssi on pienempi kuin muilla koneoppimisalgoritmeilla ja se voi tuottaa parempia tuloksia. Aikasarjaanalyysistä puhuttaessa, kun lähdemme ennustamaan arvoja, käytämme malleja, kuten ARIMA, VAR, SARIMAX jne., jotka on suunniteltu erityisesti aikasarjaanalyysiin. Nämä mallit perustuvat regressioanalyysiin. Voimme käyttää myös perusregressiomalleja aikasarjojen kanssa, jotka voivat antaa huippuluokan suorituskyvyn myös aikasarjamallinnukseen. Joidenkin puiden yhdistäminen mallien varianssin pienentämiseksi voi myös auttaa aikasarjamallintamisessa. Tämän artikkelin seuraavassa osassa tarkastellaan, kuinka voimme käyttää satunnaista metsämallia aikasarjamallintamisessa.
Menettelytapa
Toimenpiteessä käytämme päivittäistä naisten synnytysten kokonaismäärää, joka on saatavissa täältä. Moduuli, jota käytämme satunnaiseen metsäregressiomalliin, on Scikit learning -kirjastosta. Koska käyttämämme moduuli on suunniteltu toimimaan ohjatun oppimisen tietojoukkojen kanssa, muunnamme aikasarjat valvotuiksi oppimistiedoksi. Muuntamisen jälkeen syljemme ja käymme läpi yksimuuttujatietojen validoinnin. Kun tiedot on sovitettu malliin, tarkistamme tarkkuuden keskimääräisen absoluuttisen virheen perusteella. Aloitetaan tuomalla kirjastoja.
Kirjastojen tuonti
Käytämme tässä menettelyssä vain panda-, NumPy-, matplotlib- ja sklearn-kirjastoa.
tuonti numpy muodossa np tuo pandat pd:nä tuo matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor
osoitteesta sklearn.ensemble tuonti RandomForestRegressor
Tietojen muuntaminen
Tämä menettelyn osa toteuttaa funktion, joka voi muuntaa aikasarjan valvotuiksi oppimistiedoksi.
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True): n_vars = 1 jos tyyppi(data) on lista else data.shape[1]
df = pd.DataFrame(data) cols = lista() i:lle alueella(n_in, 0, -1): cols.append(df.shift(i)) i:lle alueella(0, n_out): cols.append (df.shift(-i)) agg = pd.concat(sarakkeet, akseli=1) jos dropnan: agg.dropna(inplace=True) palauttaa agg.values
Yllä olevassa funktiossa olemme määrittäneet syöttösekvenssin ja ennustesekvenssin ja ketjunneet ne. Olemme myös pudonneet kaikki NaN-arvot.
Tietojen jakaminen
Tässä osassa määritellään funktio, joka voi jakaa tietojoukon.
def train_test_split(data, n_test): palauttaa tiedot[:-n_test, :]dataa[-n_test:, :]
Mallin sovitus
Tässä osiossa määrittelemme funktion, joka voi auttaa sovittamaan muunnetut tiedot satunnaisen metsäregressiomallin avulla.
# sovita satunnainen metsämalli ja tee yksivaiheinen ennuste def random_forest_forecast(train, testX): train = np.asarray(train) trainX, trainy = juna[:, :-1]juna[:, -1]
model = RandomForestRegressor(n_estimators=1000) model.fit(trainX, trainy) yhat = model.predict([testX]) palauta yhat[0]
Tämä toiminto muuntaa luettelon taulukoksi ja jakaa tiedot ja sovittaa mallin. Mallin harjoittamisen jälkeen se auttaa meitä tekemään yksivaiheisia ennusteita.
Yksimuuttujatietojen validointi
Tässä osiossa hyödynnetään kaikkia yllä annettuja toimintoja ja sovitetaan testitiedot malliin ennustaakseen ja tarkistaakseen mallin tarkkuuden.
osoitteesta sklearn.metrics import mean_absolute_error def walk_forward_validation(data, n_test): ennusteet = lista() juna, testi = junatesti_split(data, n_test) historia = [x for x in train]
for i in range(len(test)): testX, testy = testi[i, :-1]testi[i, -1]
yhat = random_forest_forecast(history, testX) ennusteet.append(yhat) history.append(test[i]) print(‘>expected=%.1f, ennakoitu=%.1f’ % (testy, yhat)) error = mean_absolute_error(test[:, -1]ennusteet) paluuvirhe, testi[:, -1]ennusteita
Ladataan tietoja
series = pd.read_csv(‘/content/drive/MyDrive/Yugesh/times-sarja, jossa on satunnainen metsä/daily-total-female-births.csv’, header=0, index_col=0)
arvot = sarja.arvot
data = sarja_valvottu(arvot, n_in=6)
Tämä lataa tiedot ja yllä olevan toiminnon avulla muunnamme tiedot valvotuiksi oppimistiedoksi.
Mallin arviointi
Tässä osiossa arvioimme malliamme keskimääräisen neliövirheen perusteella.
series = pd.read_csv(‘/content/drive/MyDrive/Yugesh/times-sarja, jossa on satunnainen metsä/päivittäin yhteensä-nainen-syntyneet.csv’, header=0, index_col=0) arvot = series.values data = series_to_supervised( arvot, n_in=6)
Lähtö:
Tässä yllä olevassa lähdössä voimme nähdä, että meillä on MAE 5,999. Tämä on hyvä osoitus. Piirretään nämä ennusteet testitiedoilla.
plt.plot(y, label=”Odotettu”) plt.plot(yhat, label=”Ennustettu”) plt.legend() plt.show()
Lähtö:

Tässä näemme sovitetun satunnaisen metsäregressiomallin ennustetut arvot. Paremman suorituskyvyn saavuttamiseksi voimme muuttaa satunnaisen metsäregressorimallin parametreja.
Viimeinen sana
Tässä artikkelissa olemme keskustelleet satunnaisista metsäregressoreista ja siitä, miksi meidän pitäisi käyttää niitä aikasarjaanalyysiin. Avainkäsitteiden ymmärtämisen jälkeen olemme käyneet läpi satunnaisen metsäregressorin toteutuksen aikasarjaennustetehtävää varten.
Viitteet