Sveobuhvatan vodič za poticanje algoritama strojnog učenja



Ovaj se blog u potpunosti fokusira na to kako potiče pojačano strojno učenje i kako se može primijeniti kako bi se povećala učinkovitost modela strojnog učenja.

S toliko napretka na polju zdravstva, marketinga, poslovanja i tako dalje, postalo je potrebno razvijati naprednije i složenije . Pojačavanje strojnog učenja jedna je od takvih tehnika koja se može koristiti za rješavanje složenih problema iz stvarnog svijeta na temelju podataka. Ovaj je blog u potpunosti usredotočen na to kako djeluje Pojačavanje strojnog učenja i kako se može primijeniti kako bi se povećala učinkovitost modela strojnog učenja.

Da biste stekli detaljno znanje o umjetnoj inteligenciji i strojnom učenju, možete se prijaviti uživo Edureka s 24/7 podrškom i doživotnim pristupom.





Evo popisa tema koje će biti obrađene u ovom blogu:

  1. Zašto se koristi pojačanje?
  2. Što je pojačanje?
  3. Kako djeluje pojačani algoritam?
  4. Vrste pojačanja
  5. Demo

Zašto se koristi pojačanje?

Za rješavanje zamršenih problema potrebne su nam naprednije tehnike. Pretpostavimo da je na zadanom skupu podataka slika koje sadrže slike mačaka i pasa zatraženo da napravite model koji može klasificirati te slike u dvije zasebne klase. Kao i svaka druga osoba, počet ćete s identificiranjem slika pomoću nekih pravila, kao što je navedeno u nastavku:



  1. Slika ima šiljaste uši: Mačka

  2. Slika ima mačkaste oči: Mačka

  3. Na slici su veći udovi: Pas



  4. Slika ima izoštrene kandže: Mačka

  5. Slika ima širu strukturu usta: Pas

Sva ta pravila pomažu nam prepoznati je li slika pas ili mačka, međutim, ako bismo klasificirali sliku na temelju pojedinačnog (pojedinačnog) pravila, predviđanje bi bilo pogrešno. Svako od ovih pravila, pojedinačno, naziva se slabim učenicima jer ta pravila nisu dovoljno jaka da bi sliku klasificirali kao mačku ili psa.

Stoga, kako bismo bili sigurni da je naše predviđanje točnije, možemo kombinirati predviđanje svakog od ovih slabih učenika koristeći pravilo većine ili ponderirani prosjek. To čini jak model učenika.

kako raditi ovlasti u javi

U gornjem primjeru definirali smo 5 slabih učenika i većina ovih pravila (tj. 3 od 5 učenika predviđaju sliku kao mačka) daje nam predviđanje da je slika mačka. Stoga je naš konačni rezultat mačka.

Dakle, ovo nas dovodi do pitanja,

Što je pojačanje?

Pojačavanje je tehnika učenja ansambla koja koristi skup algoritama strojnog učenja za pretvaranje slabog učenika u jakog učenika kako bi se povećala točnost modela.

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

Što je pojačanje - pojačavanje strojnog učenja - Edureka

Kao što sam spomenuo Pojačavanje je metoda učenja ansambla, ali što je zapravo učenje ansambla?

Što je ansambl u strojnom učenju?

Učenje u ansamblu metoda je koja se koristi za poboljšanje izvedbe modela strojnog učenja kombiniranjem nekoliko učenika. U usporedbi s jednim modelom, ova vrsta učenja gradi modele s poboljšanom učinkovitošću i preciznošću. Upravo se zbog toga metode ansambala koriste za pobjedu na vodećim tržišnim natjecanjima, poput natjecanja Netflixova preporuka, Kaggle natjecanja i tako dalje.

Što je ansambl učenje - poticanje strojnog učenja - Edureka

Ispod sam također raspravljao o razlici između pojačavanja i dodavanja vreće.

Pojačavanje protiv vreća

Učenje u ansamblu može se izvesti na dva načina:

  1. Sekvencijalni ansambl, u narodu poznata kao poticanje , ovdje se slabi učenici uzastopno proizvode tijekom faze treninga. Izvedba modela poboljšava se dodjeljivanjem veće težine prethodnim, pogrešno klasificiranim uzorcima. Primjer pojačavanja je algoritam AdaBoost.

  2. Paralelni skup , u narodu poznat kao pakiranje , ovdje se slabi učenici paralelno proizvode tijekom faze treninga. Izvedba modela može se povećati paralelnim treniranjem broja slabih učenika na bootstrapped skupovima podataka. Primjer vreća je Slučajna šuma algoritam.

Na ovom blogu usredotočit ću se na metodu pojačavanja, pa ćemo u nastavku odjeljka razumjeti kako algoritam pojačavanja djeluje.

Kako djeluje pojačani algoritam?

Osnovni princip rada algoritma za pojačavanje je generiranje višestrukih slabih učenika i kombiniranje njihovih predviđanja u jedno jako pravilo. Ta se slaba pravila generiraju primjenom osnovnih algoritama strojnog učenja na različitim distribucijama skupa podataka. Ti algoritmi generiraju slaba pravila za svaku iteraciju. Nakon višestrukih ponavljanja, slabi učenici se kombiniraju u jakog učenika koji će predvidjeti točniji ishod.

Kako djeluje pojačani algoritam - poticanje strojnog učenja - Edureka

Evo kako algoritam funkcionira:

Korak 1: Osnovni algoritam čita podatke i dodjeljuje jednaku težinu svakom promatranju uzorka.

Korak 2: Identificiraju se lažna predviđanja osnovnog učenika. U sljedećoj iteraciji ta se lažna predviđanja dodjeljuju sljedećem osnovnom učeniku s većim ponderiranjem na tim netočnim predviđanjima.

Korak 3: Ponavljajte korak 2 dok algoritam ne može ispravno klasificirati izlaz.

Stoga je glavni cilj pojačanja da se više usredotočite na predviđanja s pogrešnim razvrstavanjem

Sad kad znamo kako algoritam pojačavanja funkcionira, shvatimo različite vrste tehnika pojačanja.

Vrste pojačanja

Tri su glavna načina na koja se može provesti pojačavanje:

  1. Adaptive Boosting ili AdaBoost

  2. Pojačavanje gradijenta

  3. XGBoost

Razgovarat ću o osnovama svake od ovih vrsta.

Prilagodljivo pojačavanje

  • AdaBoost se provodi kombiniranjem nekoliko slabih učenika u jednog jakog učenika.

  • Slabi učenici u AdaBoostu uzimaju u obzir jednu značajku unosa i izvlače jedno podijeljeno stablo odluke nazvano panj odluke. Svako se opažanje važe jednako dok se izvlači prvi panj odluke.

  • Analiziraju se rezultati prvog panja odluke i ako se neko opažanje pogrešno klasificira, dodjeljuju im se veće težine.

  • Nakon toga, izvlači se novi put odlučivanja uzimajući u obzir da su opažanja s većim težinama značajnija.

  • Ako se bilo koje opažanje pogrešno klasificira, daje im veću težinu i taj se postupak nastavlja sve dok sva opažanja ne spadaju u pravu klasu.

  • Adaboost se može koristiti i za klasifikaciju i za probleme koji se temelje na regresiji, no češće se koristi u svrhe klasifikacije.

Pojačavanje gradijenta

Pojačavanje gradijenta također se temelji na sekvencijalnom učenju ansambla. Ovdje se osnovni učenici generiraju sekvencijalno na takav način da je sadašnji osnovni učenik uvijek učinkovitiji od prethodnog, tj. Ukupni se model sekvencijalno poboljšava sa svakom iteracijom.

Razlika u ovoj vrsti pojačavanja je u tome što se ponderi pogrešno klasificiranih ishoda ne povećavaju, već metoda Gradient Boosting pokušava optimizirati funkciju gubitka prethodnog učenika dodavanjem novog modela koji dodaje slabe učenike kako bi se smanjila funkcija gubitka.

Glavna je ideja ovdje prevladati pogreške u predviđanjima prethodnog učenika. Ova vrsta pojačanja ima tri glavne komponente:

  1. Funkcija gubitka to treba poboljšati.

  2. Slab učenik za računanje predviđanja i formiranje snažnih učenika.

  3. An Aditivni model koji će regulirati funkciju gubitka.

    uporaba iteratora u javi

Kao i AdaBoost, pojačanje gradijenta također se može koristiti i za probleme klasifikacije i regresije.

XGBoost

XGBoost je napredna verzija metode pojačavanja gradijenta, što doslovno znači eXtreme Gradient Boosting. XGBoost, koji je razvio Tianqi Chen, spada u kategoriju Zajednice distribuiranog strojnog učenja (DMLC).

Glavni cilj ovog algoritma je povećati brzinu i učinkovitost izračunavanja. Algoritam pojačavanja gradijentnog spuštanja izračunava izlaz sporijom brzinom jer oni sekvencijalno analiziraju skup podataka, stoga se XGBoost koristi za pojačavanje ili izuzetno poboljšanje performansi modela.

XGBoost - Poticanje strojnog učenja - Edureka

XGBoost je dizajniran da se usredotoči na računsku brzinu i učinkovitost modela. Glavne značajke koje pruža XGBoost su:

  • Paralelno stvara stabla odlučivanja.

  • Primjena distribuiranih računarskih metoda za procjenu velikih i složenih modela.

  • Korištenje izvan jezgrenog računanja za analizu ogromnih skupova podataka.

  • Primjena optimizacije predmemorije kako bi se resursi najbolje iskoristili.

Tako su i bilirazličite vrste pojačanja algoritama strojnog učenja. Da bismo stvari učinili zanimljivima, u odjeljku u nastavku pokrenut ćemo demonstraciju kako bismo vidjeli kako se algoritmi za pojačavanje mogu implementirati u Python.

Pojačavanje strojnog učenja u Pythonu

Kratka izjava o odricanju odgovornosti: Koristit ću Python za pokretanje ove demonstracije, pa ako ne poznajete Python, možete proći kroz sljedeće blogove:

  1. Kako naučiti Python 3 iz ogrebotina - Vodič za početnike

Sada je vrijeme da uprljate ruke i počnete kodirati.

Izjava o problemu: Proučiti skup podataka o gljivama i izgraditi model strojnog učenja koji može klasificirati gljivu ili otrovnu ili ne, analizirajući njene značajke.

Opis skupa podataka: Ovaj skup podataka daje detaljan opis hipotetičkih uzoraka u skladu s 23 vrste gljiva. Svaka je vrsta klasificirana ili kao jestive gljive ili kao nejestive (otrovne).

Logika: Izgraditi model strojnog učenja korištenjem jednog od algoritama za poticanje kako bi se predvidjelo je li gljiva jestiva ili ne.

Korak 1: Uvezite potrebne pakete

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Uvoz train_test_split function from sklearn.model_selection import train_test_split #Import scikit-learn metrics modul za izračun metrike metrike metrike metrike izračuna metrike metrike metrike

Korak 2: Uvezite skup podataka

# Učitavanje skupa podataka = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Korak 3: Obrada podataka

#Definirajte nazive stupaca niz podataka.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'modrice', 'odor', 'gill-attachment', 'gill-spacing ',' veličina škrge ',' boja škrge ',' oblik stabljike ',' korijen stabljike ',' površina stabljike-iznad-prstena ',' površina stabljike-ispod-prstena ',' boja stabljike -nanad-prsten ',' boja stabljike-ispod-prstena ',' tip vela ',' boja vela ',' broj prstena ',' tip prstena ',' boja spora-ispis ',' populacija ',' habitat '] za oznaku u skupu podataka.columns: skup podataka [label] = LabelEncoder (). fit (set podataka [label]). transformiraj (skup podataka [label]) # Prikaži podatke o ispisu skupa podataka (data.info (( )) Int64Index: 8124 unosa, 6074 do 686 Stupci podataka (ukupno 23 stupca): cilj 8124 ne-null int32 oblik kapice 8124 ne-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 modrice 8124 non-null int32 miris 8124 non-null int32 gill-attachment 8124 non-null int32 razmak škrga 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 oblika stabljike 8124 non-null int32 korijen korijena 8124 non-null int32 drška-površina-iznad-prstena 8124 ne-null int32 stabljika-površina-ispod-prstena 8124 ne-null int32 boja stabljike-iznad-prstena 8124 ne-null int32 stabljika-boja-ispod-prstena 8124 ne-null int32 veo- tip 8124 non-null int32 boja vela 8124 non-null int32 broj prstena 8124 non-null int32 prsten tip 8124 non-null int32 spore-print-color 8124 non-null int32 populacija 8124 non-null int32 stanište 8124 non- null int32 dtypes: int32 (23) upotreba memorije: 793,4 KB

Korak 4: Spajanje podataka

X = skup podataka.drop (['cilj'], os = 1) Y = skup podataka ['cilj'] X_train, X_test, Y_train, Y_test = vlak_test_split (X, Y, test_size = 0,3)

Korak 5: Izgradite model

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

U gornji isječak koda implementirali smo algoritam AdaBoost. Funkcija ‘AdaBoostClassifier’ uzima tri važna parametra:

  • base_estimator: Osnovni procjenitelj (slab učenik) prema zadanim je postavkama Odlučujuća stabla
  • n_estimator: Ovo polje određuje broj osnovnih učenika koji će se koristiti.
  • learning_rate: Ovo polje specificira brzinu učenja koju smo postavili na zadanu vrijednost, tj. 1.
# Odgovara modelu s podacima o treningu boostmodel = AdaBoost.fit (X_train, Y_train)

Korak 6: Procjena modela

# Procijenite točnost modela y_pred = boostmodel.predict (X_test) predviđanja = metričke ocjene_tačnosti (Y_test, y_pred) # Izračun točnosti u postocima ispisa ('Točnost je:', predviđanja * 100, '%') Točnost iznosi: 100,0%

Dobili smo točnost od 100% što je savršeno!

što iterator radi u javi

Dakle, ovim smo došli do kraja ovog bloga za pojačavanje strojnog učenja. Ako želite saznati više o strojnom učenju, možete pročitati ove blogove:

Ako se želite upisati na cjeloviti tečaj o umjetnoj inteligenciji i strojnom učenju, Edureka ima posebno kuriranog koji će vas osposobiti za tehnike poput nadziranog učenja, nenadgledanog učenja i obrade prirodnog jezika. Uključuje obuku o najnovijim dostignućima i tehničkim pristupima u umjetnoj inteligenciji i strojnom učenju kao što su duboko učenje, grafički modeli i učenje ojačanja.