Kattava opas koneoppimisalgoritmien tehostamiseen



Tämä blogi keskittyy kokonaan siihen, miten Boosting Machine Learning toimii ja miten se voidaan toteuttaa koneoppimismallien tehokkuuden lisäämiseksi.

Kun terveydenhuollon, markkinoinnin, liike-elämän ja niin edelleen on tapahtunut niin paljon edistystä, on tullut tarve kehittää edistyneempiä ja monimutkaisempia . Koneoppimisen tehostaminen on yksi sellainen tekniikka, jota voidaan käyttää monimutkaisten, datapohjaisten, reaalimaailman ongelmien ratkaisemiseen. Tämä blogi on keskittynyt kokonaan siihen, miten Boosting Machine Learning toimii ja kuinka se voidaan toteuttaa koneoppimismallien tehokkuuden lisäämiseksi.

Saadaksesi syvällisen tiedon tekoälystä ja koneoppimisesta, voit ilmoittautua livenä kirjoittanut Edureka 24/7 tuella ja käyttöikä.





Tässä on luettelo aiheista, joita käsitellään tässä blogissa:

  1. Miksi tehostusta käytetään?
  2. Mikä on tehostaminen?
  3. Kuinka tehostamisalgoritmi toimii?
  4. Tehostustyypit
  5. Demo

Miksi tehostusta käytetään?

Kierrettyjen ongelmien ratkaisemiseksi tarvitsemme kehittyneempiä tekniikoita. Oletetaan, että annetusta kuvajoukosta, joka sisältää kissojen ja koirien kuvia, sinua pyydettiin rakentamaan malli, joka voi luokitella nämä kuvat kahteen erilliseen luokkaan. Kuten kaikki muutkin, aloitat tunnistamalla kuvat käyttämällä joitain sääntöjä, kuten alla:



  1. Kuvassa on terävät korvat: Kissa

  2. Kuvassa on kissan muotoiset silmät: Kissa

  3. Kuvassa on isommat raajat: Koira



  4. Kuvassa on teroitetut kynnet: Cat

  5. Kuvalla on laajempi suun rakenne: Koira

Kaikki nämä säännöt auttavat meitä tunnistamaan, onko kuva koira vai kissa, mutta jos luokitellaan kuva yksilöllisen (yhden) säännön perusteella, ennuste olisi virheellinen. Kutakin näistä säännöistä kutsutaan erikseen heikoiksi oppijoille, koska nämä säännöt eivät ole riittävän vahvoja luokitellakseen kuvaa kissaksi tai koiraksi.

Siksi varmistaaksemme, että ennustus on tarkempi, voimme yhdistää kunkin heikon oppijan ennusteen käyttämällä enemmistösääntöä tai painotettua keskiarvoa. Tämä on vahva oppijamalli.

Yllä olevassa esimerkissä olemme määrittäneet 5 heikkoa oppijaa ja suurin osa näistä säännöistä (eli 3 viidestä oppijasta ennustaa kuvan kissana) antaa meille ennusteen että kuva on kissa. Siksi lopullinen tuotoksemme on kissa.

Joten tämä johtaa meidät kysymykseen,

Mikä on tehostaminen?

Tehostaminen on kokonaisuusoppimistekniikka, joka käyttää joukkoa koneoppimisen algoritmeja muuntamaan heikon oppijan vahvaksi oppijaksi mallin tarkkuuden lisäämiseksi.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Mikä on tehostaminen - koneoppimisen tehostaminen - Edureka

Kuten mainitsin, Boosting on yhtyeoppimismenetelmä, mutta mitä yhtyeoppiminen tarkalleen tarkoittaa?

Mitä yhtye on koneoppimisessa?

Ensemble-oppiminen on menetelmä, jota käytetään parantamaan koneoppimisen suorituskykyä yhdistämällä useita oppijoita. Yksittäiseen malliin verrattuna tämäntyyppinen oppiminen rakentaa malleja tehokkaammin ja tarkemmin. Siksi yhtyeiden menetelmiä käytetään voittamaan markkinoiden johtavia kilpailuja, kuten Netflix-suosituskilpailu, Kaggle-kilpailut ja niin edelleen.

Mikä on yhtyeoppiminen - koneoppimisen tehostaminen - Edureka

Alla olen myös keskustellut erosta Boosting ja Bagging.

Tehostaminen vs pussi

Ensemble-oppiminen voidaan suorittaa kahdella tavalla:

  1. Peräkkäinen yhtye, tunnetaan yleisesti nimellä lisäämällä , tässä heikkoja oppijoita tuotetaan peräkkäin harjoitteluvaiheen aikana. Mallin suorituskykyä parannetaan määrittämällä aiemmille, väärin luokitelluille näytteille suurempi painoarvo. Esimerkki tehostamisesta on AdaBoost-algoritmi.

  2. Rinnakkaissarja , tunnetaan yleisesti nimellä pussi , tässä heikkoja oppijoita tuotetaan rinnakkain harjoitteluvaiheen aikana. Mallin suorituskykyä voidaan parantaa kouluttamalla samanaikaisesti useita heikkoja oppijoita bootstrapped-tietojoukoille. Esimerkki pussituksesta on Random Forest algoritmi.

Tässä blogissa keskityn Boosting-menetelmään, joten ymmärrämme alla olevassa osassa, kuinka tehostamisalgoritmi toimii.

Kuinka tehostamisalgoritmi toimii?

Tehostavan algoritmin toiminnan perusperiaate on luoda useita heikkoja oppijoita ja yhdistää heidän ennusteensa muodostamaan yksi vahva sääntö. Nämä heikot säännöt luodaan soveltamalla koneoppimisen perusalgoritmeja tietojoukon eri jakeluihin. Nämä algoritmit tuottavat heikkoja sääntöjä kullekin iteraatiolle. Useiden iteraatioiden jälkeen heikot oppijat yhdistetään vahvaksi oppijaksi, joka ennustaa tarkemman tuloksen.

Kuinka algoritmin tehostaminen toimii - koneoppimisen tehostaminen - Edureka

Näin algoritmi toimii:

Vaihe 1: Perusalgoritmi lukee tiedot ja antaa saman painon jokaiselle näytteen havainnolle.

Vaihe 2: Perusopiskelijan tekemät väärät ennusteet tunnistetaan. Seuraavassa iteraatiossa nämä väärät ennusteet osoitetaan seuraavalle perusopiskelijalle, jolla on suurempi painoarvo näihin virheellisiin ennusteisiin.

Vaihe 3: Toista vaihe 2, kunnes algoritmi voi luokitella lähdön oikein.

Siksi Boostingin päätavoite on keskittyä enemmän piti luokiteltuihin ennusteisiin.

Nyt kun tiedämme kuinka tehostamisalgoritmi toimii, ymmärretään erilaisten tehostustekniikoiden tyypit.

Tehostustyypit

Tehostusta voidaan suorittaa kolmella tavalla:

  1. Adaptive Boosting tai AdaBoost

  2. Liukuvärjäys

  3. XGBoost

Keskustelen näiden tyyppien takana olevista perusteista.

Mukautuva tehostaminen

  • AdaBoost toteutetaan yhdistämällä useita heikkoja oppijoita yhdeksi vahvaksi oppijaksi.

  • AdaBoostin heikot oppijat ottavat huomioon yhden syöttöominaisuuden ja piirtävät yhden jaetun päätöksentekopuun, jota kutsutaan päätöskannoksi. Jokainen havainto punnitaan tasan samalla kun piirretään ensimmäinen päätöskannu.

    muunnetaan kaksinkertainen int jaavaksi
  • Ensimmäisen päätöskannan tulokset analysoidaan ja jos havaintoja luokitellaan väärin, niille annetaan suurempi paino.

  • Tämän jälkeen uusi päätöskannu piirretään pitämällä havaintoja suuremmilla painoilla merkittävämpinä.

  • Jälleen kerran, jos havaintoja luokitellaan väärin, niille annetaan suurempi painoarvo ja tämä prosessi jatkuu, kunnes kaikki havainnot kuuluvat oikeaan luokkaan.

  • Adaboostia voidaan käyttää sekä luokitteluun että regressioon perustuviin ongelmiin, mutta sitä käytetään yleisemmin luokittelutarkoituksiin.

Liukuvärjäys

Gradient Boosting perustuu myös peräkkäiseen yhtyeoppimiseen. Tässä perusopiskelijat luodaan peräkkäin siten, että nykyinen perusopiskelija on aina tehokkaampi kuin edellinen, ts. Kokonaismalli paranee peräkkäin jokaisen iteraation yhteydessä.

Ero tämäntyyppisessä tehostamisessa on se, että väärin luokiteltujen tulosten painoja ei lisätä, vaan Gradient Boosting -menetelmä yrittää optimoida edellisen oppijan menetystoiminnon lisäämällä uuden mallin, joka lisää heikkoja oppijoita menetystoiminnon vähentämiseksi.

Tärkein ajatus on voittaa edellisen oppijan ennusteiden virheet. Tämän tyyppisellä tehostuksella on kolme pääkomponenttia:

  1. Menetystoiminto sitä on parannettava.

  2. Heikko oppija ennusteiden laskemiseen ja vahvojen oppijoiden muodostamiseen.

  3. An Lisäaine-malli joka normalisoi menetystoiminnon.

Kuten AdaBoost, Gradient Boostingia voidaan käyttää myös sekä luokittelu- että regressio-ongelmiin.

XGBoost

XGBoost on Gradient boosting -menetelmän kehittynyt versio, se tarkoittaa kirjaimellisesti eXtreme Gradient Boosting -toimintoa. Tianqi Chenin kehittämä XGBoost kuuluu hajautetun koneoppimisyhteisön (DMLC) luokkaan.

Tämän algoritmin päätavoitteena on lisätä laskennan nopeutta ja tehokkuutta. Gradient Descent Boosting -algoritmi laskee lähdön hitaammin, koska ne analysoivat datajoukkoa peräkkäin, joten XGBoostia käytetään mallin suorituskyvyn parantamiseen tai parantamiseen.

XGBoost - Koneoppimisen tehostaminen - Edureka

XGBoost on suunniteltu keskittymään laskennanopeuteen ja mallin tehokkuuteen. XGBoostin tärkeimmät ominaisuudet ovat:

  • Parallelly luo päätöksentekopuita.

  • Hajautettujen laskentamenetelmien toteuttaminen suurten ja monimutkaisten mallien arvioimiseksi.

  • Ydinsisäisen laskennan käyttäminen valtavien tietojoukkojen analysointiin.

  • Välimuistin optimoinnin toteuttaminen resurssien parhaan hyödyntämiseksi.

Joten nämä olivaterityyppiset koneoppimisen algoritmit. Jotta asiat olisivat mielenkiintoisia, suoritamme alla olevassa osiossa esittelyn, kuinka tehostavat algoritmit voidaan toteuttaa Pythonissa.

Koneoppimisen tehostaminen Pythonissa

Lyhyt vastuuvapauslauseke: Käytän Pythonia tämän demon suorittamiseen, joten jos et tunne Pythonia, voit käydä läpi seuraavat blogit:

  1. Kuinka oppia Python 3 Scratchista - Aloittelijan opas

Nyt on aika likaista kätesi ja aloittaa koodaus.

Ongelma: Voit tutkia sienitietojoukkoa ja rakentaa koneoppimismallin, joka voi luokitella sienen joko myrkylliseksi tai ei, analysoimalla sen ominaisuuksia.

Tietojoukon kuvaus: Tämä tietojoukko antaa yksityiskohtaisen kuvauksen hypoteettisista näytteistä 23 kidussiemenlajin mukaisesti. Jokainen laji luokitellaan joko syötäviksi tai syömättömiksi (myrkyllisiksi) sieniksi.

Logiikka: Rakentaa koneoppimismalli käyttämällä yhtä Boosting-algoritmeista ennustamaan, onko sieni syötävä vai ei.

Vaihe 1: Tuo vaaditut paketit

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Import train_test_split function from sklearn.model_selection import train_test_split #Import skikit meet-learn metrics

Vaihe 2: Tuo tietojoukko

# Lataa tietojoukko = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Vaihe 3: Tietojenkäsittely

#Määritä sarakkeiden nimet dataset.columns = ['kohde', 'korkin muoto', 'korkin pinta', 'korkin väri', 'mustelmat', 'haju', 'kiduskiinnitys', 'kidusväli ',' kiduksen koko ',' kiduksen väri ',' varren muoto ',' varren juuri ',' varren pinta renkaan yläpuolella ',' varren pinta renkaan alapuolella ',' varren väri -ab-rengas ',' varren väri-renkaan alapuolella ',' huntu-tyyppi ',' huntu-väri ',' renkaan numero ',' rengastyyppi ',' itiö-painoväri ',' populaatio ',' elinympäristö '] tunnistetta varten dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Display data data set print (dataset.info ( )) Int64Index: 8124 merkintää, 6074--686 tietosarakkeet (yhteensä 23 saraketta): kohde 8124 ei-nolla int32-korkimuoto 8124 ei nolla int32-korkki-pinta 8124 ei-nolla int32-pääväri 8124 ei-nolla int32-mustelmat 8124 ei nolla int32 haju 8124 ei nolla int32 kidusliite 8124 ei nolla int32 kidusväli 8124 ei nolla int32 kidus koko 8124 ei nolla int32 kidus väri 8124 ei nolla int32 varsi muoto 8124 ei nolla int32 varsijuuri 8124 ei nolla int32 varren pinta renkaan yläpuolella 8124 ei-nolla int32 varren pinta-renkaan alapuolella 8124 ei nolla int32 varren väri-renkaan yläpuolella 8124 ei nolla int32 varren väri-renkaan alapuolella 8124 ei nolla int32 huntu- tyyppi 8124 ei nolla int32 huntu-väri 8124 ei nolla int32 rengasnumero 8124 ei nolla int32 rengas tyyppi 8124 ei nolla int32 itiö-tulosta väri 8124 ei nolla int32 väestö 8124 ei nolla int32 elinympäristö 8124 ei- null int32-tyypit: int32 (23) muistin käyttö: 793,4 kt

Vaihe 4: Tietojen jakaminen

X = dataset.drop (['target'], akseli = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0.3)

Vaihe 5: Rakenna malli

malli = DecisionTreeClassifier (kriteeri = 'entropia', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = malli, n_estimators = 400, learning_rate = 1)

Edellä olevassa koodinpätkässä olemme toteuttaneet AdaBoost-algoritmin. AdaBoostClassifier-funktiolla on kolme tärkeää parametria:

  • base_estimator: Perusestimaattori (heikko oppija) on oletusarvoisesti päätöspuita
  • n_estimaattori: Tässä kentässä määritetään käytettävien perusopiskelijoiden määrä.
  • learning_rate: Tämä kenttä määrittää oppimisnopeuden, jonka olemme asettaneet oletusarvoksi eli 1.
#Fit malliin harjoitustietojen boostmodel = AdaBoost.fit (X_train, Y_train)

Vaihe 6: Mallin arviointi

#Arvioi mallin tarkkuus y_pred = boostmodel.predict (X_test) ennusteet = metrics.accuracy_score (Y_test, y_pred) #Tarkkuuden laskeminen prosenttiosuudella ('Tarkkuus on:', ennusteet * 100, '%') Tarkkuus on: 100,0%

Olemme saaneet 100% tarkkuuden, joka on täydellinen!

Joten tällä olemme päässeet tämän Boosting Machine Learning -blogin loppuun. Jos haluat oppia lisää koneoppimisesta, voit lukea nämä blogit:

  1. heittää kaksinkertaisesti intiin java

Jos haluat ilmoittautua koko tekoälyn ja koneoppimisen kurssille, Edurekalla on erityisesti kuratoitu joka tekee sinusta taitavan tekniikoista, kuten valvotusta oppimisesta, valvomattomasta oppimisesta ja luonnollisen kielen prosessoinnista. Se sisältää koulutuksen uusimmista kehityksistä ja teknisistä lähestymistavoista tekoälyyn ja koneoppimiseen, kuten syväoppiminen, graafiset mallit ja vahvistusoppiminen.