Izčrpen vodnik za povečanje algoritmov strojnega učenja



Ta spletni dnevnik se v celoti osredotoča na to, kako deluje spodbujanje strojnega učenja in kako ga lahko uporabimo za povečanje učinkovitosti modelov strojnega učenja.

S tako velikim napredkom na področju zdravstva, trženja, poslovanja itd. Je postalo treba razvijati bolj napredne in zapletene . Spodbujanje strojnega učenja je ena takih tehnik, ki jo lahko uporabimo za reševanje zapletenih, na podlagi podatkov temelječih problemov iz resničnega sveta. Ta spletni dnevnik je v celoti osredotočen na to, kako deluje spodbujanje strojnega učenja in kako ga lahko uporabimo za povečanje učinkovitosti modelov strojnega učenja.

Če želite poglobljeno znanje o umetni inteligenci in strojnem učenju, se lahko vpišete v živo Edureka s 24-urno podporo in življenjskim dostopom.





Tu je seznam tem, ki bodo obravnavane v tem blogu:

  1. Zakaj se uporablja pospeševanje?
  2. Kaj spodbuja?
  3. Kako deluje spodbujevalni algoritem?
  4. Vrste pospeševanja
  5. Predstavitev

Zakaj se uporablja Boosting?

Za reševanje zapletenih problemov potrebujemo naprednejše tehnike. Recimo, da ste na podlagi podatkovnega niza slik, ki vsebujejo slike mačk in psov, pozvani, da sestavite model, ki lahko te slike razvrsti v dva ločena razreda. Kot vsaka druga oseba boste tudi sami začeli z identificiranjem slik z uporabo nekaterih pravil, kot so navedena spodaj:



  1. Slika ima špičasta ušesa: Cat

  2. Slika ima mačkaste oči: Cat

  3. Slika ima večje okončine: pes



  4. Slika ima izostrene kremplje: Cat

  5. Slika ima širšo strukturo ust: pes

Vsa ta pravila nam pomagajo ugotoviti, ali je slika pes ali mačka, če pa bi sliko razvrstili na podlagi posameznega (posameznega) pravila, bi bila napoved napačna. Vsako od teh pravil posamezno imenujemo šibki učenci, ker ta pravila niso dovolj močna, da bi sliko lahko označili za mačko ali psa.

Da bi zagotovili, da je naša napoved natančnejša, lahko napoved vsakega od teh šibkih učencev združimo z uporabo pravila večine ali tehtanega povprečja. To je močan model učenca.

V zgornjem primeru smo opredelili 5 šibkih učencev in večina teh pravil (tj. 3 od 5 učencev predvidevajo sliko kot mačka) nam daje napoved da je slika mačka. Zato je naš končni rezultat mačka.

Torej, to nas pripelje do vprašanja,

Kaj spodbuja?

Boosting je ansambelna tehnika učenja, ki uporablja niz algoritmov strojnega učenja za pretvorbo šibkega učenca v močnega, da bi povečali natančnost modela.

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

Kaj je povečanje - spodbujanje strojnega učenja - Edureka

Kot sem že omenil, je Boosting metoda učenja z ansamblom, toda kaj natančno je učenje z ansamblom?

Kaj je ansambel v strojnem učenju?

Učenje v ansamblu je metoda, ki se uporablja za povečanje učinkovitosti modela strojnega učenja z združevanjem več učencev. V primerjavi z enim samim modelom tovrstno učenje gradi modele z večjo učinkovitostjo in natančnostjo. Prav zato se z ansambelnimi metodami zmaguje na vodilnih tekmovanjih na trgu, kot so na primer priporočila Netflix, tekmovanja Kaggle itd.

Kaj je ansambel učenje - spodbujanje strojnega učenja - Edureka

Spodaj sem razpravljal tudi o razliki med Boosting in Bagging.

Povečanje vs Bagging

Učenje v ansamblu lahko izvedemo na dva načina:

  1. Zaporedni ansambel, splošno znano kot povečanje , tu se šibki učenci zaporedno proizvajajo med fazo usposabljanja. Zmogljivost modela se izboljša tako, da se prejšnjim, napačno razvrščenim vzorcem dodeli večja utež. Primer pospeševanja je algoritem AdaBoost.

  2. Vzporedni niz , popularno znano kot vreča , tukaj se šibki učenci vzporedno proizvajajo med fazo usposabljanja. Zmogljivost modela je mogoče povečati z vzporednim usposabljanjem številnih šibkih učencev na zagnanih naborih podatkov. Primer vreče je Random Forest algoritem.

V tem blogu se bom osredotočil na metodo Boosting, zato bomo v spodnjem poglavju razumeli, kako deluje algoritem za povečanje.

Kako deluje spodbujevalni algoritem?

Osnovno načelo delovanja spodbujevalnega algoritma je ustvariti več šibkih učencev in združiti njihove napovedi v eno močno pravilo. Ta šibka pravila se ustvarijo z uporabo osnovnih algoritmov strojnega učenja na različnih distribucijah nabora podatkov. Ti algoritmi ustvarjajo šibka pravila za vsako ponovitev. Po več ponovitvah se šibki učenci kombinirajo in tvorijo močnega učenca, ki bo napovedal natančnejši rezultat.

Kako deluje spodbujevalni algoritem - spodbujanje strojnega učenja - Edureka

Algoritem deluje tako:

Korak 1: Osnovni algoritem bere podatke in vsakemu vzorčnemu opazovanju dodeli enako težo.

2. korak: Identificirajo se napačne napovedi osnovnega učenca. V naslednji ponovitvi se te napačne napovedi dodelijo naslednjemu osnovnemu učencu z večjo utežjo zaradi teh napačnih napovedi.

3. korak: Ponavljajte 2. korak, dokler algoritem ne more pravilno razvrstiti izhoda.

Zato je glavni cilj Boostinga da se bolj osredotočimo na napovedi z napačno razvrščeno.

Zdaj, ko vemo, kako deluje pospeševalni algoritem, poglejmo različne vrste pospeševalnih tehnik.

Vrste pospeševanja

Obstajajo trije glavni načini za povečanje:

  1. Adaptive Boosting ali AdaBoost

  2. Gradient Boosting

  3. XGBoost

Razpravljal bom o osnovah vsake od teh vrst.

Prilagodljivo povečanje

  • AdaBoost se izvaja tako, da več šibkih učencev združi v enega močnega učenca.

  • Šibki učenci v AdaBoostu upoštevajo eno samo vhodno funkcijo in narišejo eno razdeljeno drevo odločitev, imenovano odločilni panj. Vsako opazovanje se tehta enako, medtem ko izrišemo prvi panj odločitve.

  • Rezultati prvega sklepa se analizirajo in če so kakršna koli opažanja neupravičeno razvrščena, se jim dodelijo večje uteži.

  • Po tem se nariše nov sklep, tako da so opažanja z višjimi utežmi pomembnejša.

  • Če so kakršna koli opažanja napačno razvrščena, dobijo večjo težo in ta postopek se nadaljuje, dokler vsa opažanja ne spadajo v pravi razred.

  • Adaboost se lahko uporablja tako za klasifikacijo kot za probleme, ki temeljijo na regresiji, vendar se pogosteje uporablja za namene klasifikacije.

Gradient Boosting

Gradient Boosting temelji tudi na zaporednem učenju ansamblov. Tu se osnovni učenci generirajo zaporedno na tak način, da je sedanji osnovni učenec vedno učinkovitejši od prejšnjega, tj. Splošni model se z vsako ponovitvijo zaporedno izboljšuje.

Razlika pri tej vrsti pospeševanja je v tem, da se uteži za napačno razvrščene izide ne povečujejo, temveč metoda Gradient Boosting poskuša optimizirati funkcijo izgube prejšnjega učenca z dodajanjem novega modela, ki doda šibke učence, da bi zmanjšal funkcijo izgub.

Glavna ideja tukaj je premagati napake v napovedih prejšnjega učenca. Ta vrsta pospeševanja ima tri glavne komponente:

  1. Funkcija izgube to je treba izboljšati.

  2. Slab učenec za računalniške napovedi in oblikovanje močnih učencev.

  3. An Aditivni model ki bo reguliral funkcijo izgube.

Tako kot AdaBoost se tudi Gradient Boosting lahko uporablja za klasifikacijske in regresijske težave.

XGBoost

XGBoost je napredna različica Gradient boosting metode, kar dobesedno pomeni eXtreme Gradient Boosting. XGBoost, ki ga je razvil Tianqi Chen, spada v kategorijo Distributed Machine Learning Community (DMLC).

ng-change vs onchange

Glavni namen tega algoritma je povečati hitrost in učinkovitost računanja. Algoritem Gradient Descent Boosting izhod izračuna počasneje, saj zaporedno analizirajo nabor podatkov, zato se XGBoost uporablja za povečanje ali izjemno povečanje zmogljivosti modela.

XGBoost - Spodbujanje strojnega učenja - Edureka

XGBoost je zasnovan tako, da se osredotoča na računsko hitrost in učinkovitost modela. Glavne funkcije, ki jih ponuja XGBoost, so:

  • Vzporedno ustvarja drevesa odločitev.

  • Uporaba porazdeljenih računalniških metod za ocenjevanje velikih in kompleksnih modelov.

  • Uporaba zunanjega jedra računalništva za analizo ogromnih podatkovnih nizov.

  • Izvajanje optimizacije predpomnilnika za najboljšo uporabo virov.

Tako so bilerazlične vrste algoritmov za povečanje strojnega učenja. Da bodo stvari zanimive, bomo v spodnjem razdelku izvedli predstavitev, da vidimo, kako je mogoče v Pythonu implementirati spodbujevalne algoritme.

Spodbujanje strojnega učenja v Pythonu

Kratka izjava o omejitvi odgovornosti: Za izvajanje te predstavitve bom uporabljal Python, zato, če ne poznate Pythona, lahko obiščete naslednje bloge:

  1. Kako se naučiti Python 3 iz Scratch - vodnik za začetnike

Zdaj je čas, da si umažete roke in začnete kodirati.

Izjava o težavi: Preučiti nabor podatkov o gobah in zgraditi model strojnega učenja, ki lahko gobo razvrsti kot strupeno ali ne, z analizo njenih lastnosti.

Opis nabora podatkov: Ta sklop podatkov vsebuje podroben opis hipotetičnih vzorcev v skladu s 23 vrstami zabritih gob. Vsaka vrsta je razvrščena bodisi kot užitne gobe bodisi kot neužitne (strupene).

Logika: Zgraditi model strojnega učenja z uporabo enega od algoritmov Boosting, da bi napovedali, ali je goba užitna ali ne.

1. korak: Uvozite zahtevane pakete

iz sklearn.ensemble uvoz AdaBoostClassifier iz sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Uvozi funkcijo train_test_split iz sklearn.model_selection import train_test_split #Import scikit-learn metricsn module za izračun metrike metrike za izračun metrike metrike

2. korak: Uvozite nabor podatkov

# Naložite nabor podatkov = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

3. korak: Obdelava podatkov

#Definirajte imena stolpcev nabor podatkov.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'modrice', 'vonj', 'gill-attachment', 'gill-spacing ',' velikost škrge ',' škržna barva ',' oblika peclja ',' koren stebla ',' površina stebla-nad obročem ',' površina stebla-pod obročem ',' barva stebla -naprej-obroč ',' stebelna barva-pod-obroč ',' vrsta tančice ',' barva tančice ',' številka obroča ',' vrsta obroča ',' spore-print-color ',' populacija ',' habitat '] za nalepko v naboru podatkov. stolpci: nabor podatkov [nalepka] = LabelEncoder (). fit (nabor podatkov [nalepka]). transformiraj (nabor podatkov [nalepka]) # Prikaži informacije o naboru podatkov natisni (nabor podatkov.info ( )) Int64Index: 8124 vnosov, 6074 do 686 Podatkovni stolpci (skupaj 23 stolpcev): ciljna 8124 ne-null int32 oblika kape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 modrice 8124 non-null int32 vonj 8124 non-null int32 gill-attachment 8124 non-null int32 interval med škrgami 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stebelna oblika 8124 non-null int32 korenski koren 8124, ki ni null int32 steblo-površina-nad-obročem 8124 ne-null int32 steblo-površina-pod-obročem 8124 ne-null int32 steblo-barva-nad-obročem 8124 ne-null int32 steblo-barva-pod-obročem 8124 ne-null int32 tančica- vrsta 8124 ne-null int32 barva tančice 8124 ne-null int32 številka obroča 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 populacija 8124 non-null int32 habitat 8124 non- null int32 dtypes: int32 (23) poraba pomnilnika: 793,4 KB

4. korak: Spajanje podatkov

X = nabor podatkov.drop (['target'], axis = 1) Y = nabor podatkov ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0,3)

5. korak: zgradite model

model = DecisionTreeClassifier (kriterij = 'entropija', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

V zgornjem delčku kode smo implementirali algoritem AdaBoost. Funkcija ‘AdaBoostClassifier’ ima tri pomembne parametre:

  • base_estimator: Osnovni ocenjevalec (šibek učenec) je privzeto drevesa odločanja
  • n_estimator: To polje določa število osnovnih učencev, ki bodo uporabljeni.
  • learning_rate: To polje določa stopnjo učenja, ki smo jo nastavili na privzeto vrednost, to je 1.
# Ustrezite modelu s podatki o vadbi boostmodel = AdaBoost.fit (X_train, Y_train)

6. korak: Vrednotenje modela

# Ocenite natančnost modela y_pred = boostmodel.predict (X_test) napovedi = metrike.natančnost_rezultata (Y_test, y_pred) # Izračun natančnosti v odstotkih tiskanja ('Natančnost je:', napovedi * 100, '%') Natančnost je: 100,0%

Prejeli smo 100-odstotno natančnost, kar je popolno!

S tem smo prišli do konca tega spletnega dnevnika Boosting Machine Learning. Če želite izvedeti več o strojnem učenju, lahko preberete te bloge:

Če se želite vpisati na celoten tečaj o umetni inteligenci in strojnem učenju, ima Edureka posebej kurirano s tem boste usposobljeni za tehnike, kot so nadzorovano učenje, nenadzorovano učenje in obdelava naravnega jezika. Vključuje usposabljanje o najnovejših dosežkih in tehničnih pristopih na področju umetne inteligence in strojnega učenja, kot so globoko učenje, grafični modeli in učenje okrepitve.