Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Kuinka käyttää XGBoostia aikasarja-analyysiin?

Seuraava artikkeli auttaa sinua: Kuinka käyttää XGBoostia aikasarja-analyysiin?

XGBoost on tehokas tekniikka gradientin tehostuksen toteuttamiseen. Aikasarjamallintamisesta puhuttaessa viitataan yleensä tekniikoihin, kuten ARIMA- ja VAR-mallit. XGBoostia voidaan pitää gradienttitehostustekniikkana perinteisten mallinnustekniikoiden edistysaskeleena. Tässä artikkelissa opimme, kuinka voimme soveltaa gradienttitehostusta XGBoost-tekniikalla tehokkaaseen aikasarjamallinnukseen. Tärkeimmät tässä artikkelissa käsiteltävät kohdat on lueteltu alla.

Sisällysluettelo

  1. Mitä on gradientin tehostaminen?
  2. Mikä on XGBoost?
  3. XGBoostin käyttö aikasarjoissa
  4. Menettelytapa
    1. Tietojen analysointi
    2. Tietojen muuntaminen
    3. Mallin sovitus
    4. Ennustaminen

Aloitetaan lyhyellä esittelyllä gradientin tehostamiseen.

Mitä on gradientin tehostaminen?

Koneoppimisessa gradientin tehostaminen on algoritmi, joka auttaa suorittamaan regressio- ja luokittelutehtäviä. Käyttämällä heikkojen ennustemallien kokonaisuutta, gradientin tehostaminen auttaa meitä ennustamaan. Esimerkkejä heikoista malleista voivat olla päätöspuut. Yhdistelmämalleja, joissa käytetään heikkoja puun oppijoita, voidaan pitää gradienttitehostetuina puina. Gradienttitehostetut puut ovat verrattavissa satunnaiseen metsään, vaikka ne pystyvätkin toimimaan paremmin kuin satunnaiset metsät hienosäädettynä. Se auttaa yleistämään toista mallia optimoimalla mielivaltaisen differentiaalihäviöfunktion.

Mikä on XGBoost?

XGBoost on kirjasto, joka voi auttaa meitä säätämään gradientin tehostamista eri kielillä, kuten python, R, Julia, c++ ja Java. XGBoost tarkoittaa äärimmäistä kaltevuutta lisäävää konetta. Ohjelmistona XGBoostin pääpaino on nopeuttaa ja parantaa gradienttitehostettujen päätöspuiden suorituskykyä. Tämä ohjelmisto voi tarjota meille skaalautuvan, kannettavan ja hajautetun gradientin tehostuksen. Tämän kirjaston avulla voimme hyödyntää toiminnallisuutta yksittäisissä ja hajautetuissa prosessointikoneissa.

XGBoostin käyttö aikasarjoissa

Kuten yllä olevassa osiossa keskustelimme, gradientin tehostaminen keskittyy pääosin koneoppimismallien suorituskyvyn parantamiseen ja XGBoostin avulla tapahtuvalla gradientin tehostamisella voimme nopeuttaa prosessia ja saada parempia tuloksia. Kun puhumme aikasarjaanalyysin ja ennustamisen alasta, käytämme perinteisiä malleja, kuten ARIMA-malleja (autoregressiivinen integroitu liukuva keskiarvo), joissa pääpaino tai malli on regressioanalyysissä ja jos voimme suorittaa tämän regression sellaisella ohjelmistolla ja tekniikalla, saavuttaa myös uusinta suorituskykyä aikasarjamallinnus. Heikkojen koneoppimismallien yhdistäminen säänneltyyn gradientin tehostamiseen voi auttaa meitä parantamaan tuloksia kaikilla datatieteen osa-alueilla. Osio voi olla myös aikasarja. Tässä artikkelissa näemme, kuinka voimme saada XGBoostin toimimaan aikasarjamallinnusssa.

🔥 Empfohlen:  Lopullinen opas rahan ansaitsemiseen verkkotunnusten vaihtamisella

Menettelytapa

Menettelyssä aiomme käyttää Kagglen tietoja, jotka ovat Take-Away Food Orders -tietoja. Löydämme tiedot täältä. Näissä tiedoissa meillä on tiedot tilauksista sekä tilauspäivämäärä ja tilausmäärä. Näiden tietojen perusteella ennustamme tilausmäärän seuraaville päiville. Käytämme menettelyä varten python-kieltä ja joitain peruskirjastoja, kuten NumPy, pandas, matplotlib ja sklearn, tämän kanssa käytämme XGBoost-ohjelmistoa. Aloitetaan menettely, koska prosessissa mennään pitkälle, tiedämme kuinka data-analyysimme on ja kuinka voimme käyttää XGBoostia ennustamiseen.

Tietojen analysointi

Aloitetaan tietojen lataamisesta.

tuo pandat pd-datana = pd.read_csv(‘/content/drive/MyDrive/Yugesh/aikasarjaanalyysi xgboost/restaurant-1-orders.csv:llä’) data.columns = [‘number’, ‘date’, ‘item’, ‘quantity’, ‘price’, ‘total_items’]
data.head()

Lähtö:

Täällä tiedoissa näemme, että meillä on tilausnumero, päivämäärä, nimikkeen nimi, hinta, määrä ja tilauksen tuotteiden kokonaismäärä. Muunnetaan nyt päivämäärä-arvot päivämäärä-aika-arvoiksi.

tiedot[‘date’] = pd.to_datetime(data[‘date’].str[:10]) data.head()

Lähtö:

Tässä voimme ymmärtää, että tilausmäärän ennustaminen edellyttää, että tiedoissa on tilausnumero, nimikkeiden kokonaismäärä ja päivämäärä. Otetaan nämä arvot tiedoistamme.

order_data = tiedot[[‘number’,’total_items’, ‘date’]]tilaustiedot

Lähtö:

Tässä voimme ymmärtää, että meiltä vaaditaan tiedot, joista voimme nähdä kuinka monta tilausta meillä on päivässä. Suoritetaan vielä joitain toimintoja datalle saadaksesi tavaroiden päivittäisen myyntitiheyden.

res = uudet tiedot[‘number’].nunique() res=res.to_frame() res

Lähtö:

Tästä tilausnumerosarakkeen avulla olemme löytäneet numeron tai yksilöllisen tilauksen ja arvomäärän. Päivämääräsarakkeemme on nyt tietojen indeksi, ja näin olemme muuntaneet tietomme aikasarjoiksi. Piirretään tiedot.

res.plot()

Lähtö:

Tässä juonessa voimme nähdä, että aikasarjamme on hyvin hajallaan, ja myös saamme 5-15 tilausta joka päivä. Tehdään visualisoinnista selkeä.

tuo numpy as np tuonti seaborn as sns import matplotlib.pyplot as plt color_pal = [“#F8766D”, “#D39200”, “#93AA00”, “#00BA38”, “#00C19F”, “#00B9E3”, “#619CFF”, “#DB72FB”]
_ = res.plot(style=”.”, figsize=(15,5), color=color_pal[0]title=”alennus”)

Lähtö:

Asiat ovat paljon selvempiä nyt voimme sanoa, että nyt meillä on tilausnumeroiden päätiheys välillä 5-10 tai 15. Nyt datamme vaatii joitain muunnoksia, jotta voimme sovittaa ne malliin.

🔥 Empfohlen:  Kuinka monta luottokorttia minulla pitäisi olla? Reddit vastaa

Tietojen muunnokset

Jaetaan tietomme.

split_date=”01-Jan-2019″ data_train = res.loc[res.index <= split_date].copy() data_test = res.loc[res.index > split_date].kopio()

Tässä olemme jakaneet tietomme juna- ja testitietoihin päivämäärän 01-1-2019 jälkeen. Jotta voimme tarkistaa mallimme vuoden 2018 jälkeen. Katsotaan kuinka jaetut tietojoukot ovat.

data_train

Lähtö:

data_test

Lähtö:

Piirretään jaetut datamme.

_ = data_test \ .rename(columns={‘numero’: ‘TESTIJOUKKO’}) \ .join(data_train.rename(columns={‘numero’: ‘HARJOITUSSARJA’}), how=’outer’) \ . plot(figsize=(15,5), title=”ale”, style=”.”)

Lähtö:

Tässä näemme, että tietojoukoillamme on eri värejä. Tämän jälkeen voimme tehdä funktion, joka voi luoda aikasarjaominaisuuksia tiedoistamme.

def create_features(df, label=Ei mitään): df[‘date’] = df.indeksi df[‘hour’] = df[‘date’].dt.hour df[‘dayofweek’] = df[‘date’].dt.dayofweek df[‘quarter’] = df[‘date’].dt.kvartaali df[‘month’] = df[‘date’].dt.month df[‘year’] = df[‘date’].dt.vuosi df[‘dayofyear’] = df[‘date’].dt.dayofyear df[‘dayofmonth’] = df[‘date’].dt.day df[‘weekofyear’] = df[‘date’].dt.weekofyear X = df[[‘hour’,’dayofweek’,’quarter’,’month’,’year’,
‘dayofyear’,’dayofmonth’,’weekofyear’]]jos tunniste: y = df[label]
palauta X, y palauta X

Käytetään funktiota tiedoissamme.

X_train, y_train = luo_ominaisuudet(data_juna, etiketti=”numero”) X_test, y_test = luo_ominaisuudet(data_testi, etiketti=”numero”) X_train

Lähtö:

Yllä olevasta tuloksesta voimme nähdä, mitä ominaisuuksia meillä on koulutustiedoissamme. Koska XGBoost on ohjatun oppimisen prosessi sen kanssa työskentelemiseen, meidän on tehtävä tiedoistamme ohjatun oppimisen data.

Mallin sovitus

Tuodaan XGBoost ja muut kirjastot prosessin optimoimiseksi.

tuonti xgboost muodossa xgb kohteesta xgboost tuonti plot_importance, plot_tree osoitteesta sklearn.metrics tuonti mean_squared_error, mean_absolute_error

Mallimme toteutus

reg = xgb.XGBRegressor(n_estimators=1000)

Tietojemme sovittaminen malliin.

reg.fit(X_train, y_train, eval_set=[(X_train, y_train), (X_test, y_test)]early_stopping_rounds=50, verbose=False)

Ennen kuin teet ennusteita testitiedoista, voimme myös seurata ominaisuuden valintaprosessia. Tässä prosessissa voimme tehdä tämän käyttämällä ominaisuuden tärkeystekniikkaa. Tämä prosessi auttaa meitä löytämään ominaisuuden tiedoista, joihin malli eniten luottaa ennusteen tekemisessä. Vielä yksi tärkeä asia tässä on, että käytämme XGBoostia, joka perustuu tietojen jakamiseen tärkeän ominaisuuden avulla. Joten tärkeän ominaisuuden löytäminen tekee taustaprosessista paljon selkeämmän.

_ = plot_tärkeys(reg, korkeus = 0,9)

Lähtö:

Yllä olevasta tuotoksesta voimme nähdä, että vuoden päivä on tärkein ominaisuusmme ja malli on käyttänyt sitä yleisimmin jakamiseen useampaan solmuun. Ominaisuuskuukaudella on pienin merkitys.

🔥 Empfohlen:  Kuinka tienata yli 1 000 dollaria kuukaudessa risteilyblogilla - Adventourbegins.comin tarina

Ennustaminen

Mallin ja ominaisuuden valintaprosessin sovituksen jälkeen voimme tehdä ennusteita käyttämällä testitietojamme ja malliamme. Käyttämällä alla olevia koodirivejä voimme tehdä tämän.

data_test[‘number_Prediction’] = reg.predict(X_test) data_all = pd.concat([data_test, data_train]sort=False)

Piirretään nyt ennustuksemme

_ = data_all[[‘number’,’number_Prediction’]].plot(figsize=(15, 5))

Lähtö:

Tässä näemme ennustuksemme. Kuten olemme keskustelleet, tilausarvot liikkuvat välillä 5-15 ja mallimme ennustaa myös tämän alueen välillä. Näitä ennusteita käyttämällä voimme käskeä ravintolaa valmistamaan vain tämän alueen ympärille, jotta voimme vähentää ruoan tuhlausta ja maksimoida voiton.

Viimeiset sanat

Tässä artikkelissa olemme käyneet läpi XGBoostin soveltamisprosessin aikasarjojen mallintamiseen ja ennustamiseen. Tämän lisäksi olemme keskustelleet joistakin data-analyysiprosesseista, joista voi olla apua tosielämän ongelmien ratkaisemisessa.

Viitteet