Komplexný sprievodca posilnením algoritmov strojového učenia



Tento blog sa úplne zameriava na to, ako funguje Boosting Machine Learning a ako ho možno implementovať na zvýšenie efektívnosti modelov strojového učenia.

S toľkým pokrokom v oblasti zdravotníctva, marketingu, obchodu a tak ďalej sa stala potreba vyvinúť pokročilejšie a komplexnejšie . Posilnenie strojového učenia je jednou z takýchto techník, ktorú je možné použiť na riešenie zložitých problémov založených na údajoch v reálnom svete. Tento blog je úplne zameraný na to, ako funguje Boosting Machine Learning a ako ho možno implementovať na zvýšenie efektívnosti modelov strojového učenia.

Ak chcete získať podrobné informácie o umelej inteligencii a strojovom učení, môžete sa zaregistrovať naživo od spoločnosti Edureka s nepretržitou podporou a doživotným prístupom.





Tu je zoznam tém, ktorým sa budeme venovať v tomto blogu:

  1. Prečo sa používa Boosting?
  2. Čo je to posilňovanie?
  3. Ako funguje posilňovací algoritmus?
  4. Druhy posilnenia
  5. Ukážka

Prečo sa využíva zosilnenie?

Na riešenie spletitých problémov potrebujeme pokročilejšie techniky. Predpokladajme, že na danom dátovom súbore obrázkov obsahujúcich obrázky mačiek a psov ste boli požiadaní, aby ste vytvorili model, ktorý dokáže tieto obrázky klasifikovať do dvoch samostatných tried. Ako každá iná osoba, aj vy začnete identifikáciou obrázkov pomocou niektorých pravidiel, ako je uvedené nižšie:



  1. Obrázok má špičaté uši: Kat

  2. Obrázok má oči v tvare mačky: Kat

  3. Obrázok má väčšie končatiny: Pes



  4. Obrázok má zaostrené pazúry: Kat

  5. Obrázok má širšiu štruktúru úst: Pes

Všetky tieto pravidlá nám pomáhajú identifikovať, či je obraz pes alebo mačka, avšak ak by sme mali obraz klasifikovať na základe individuálneho (jediného) pravidla, predpoveď by bola chybná. Každé z týchto pravidiel sa jednotlivo nazýva slabé učiace sa, pretože tieto pravidlá nie sú dostatočne silné na to, aby klasifikovali obraz ako mačka alebo pes.

Preto, aby sme sa uistili, že naša predpoveď je presnejšia, môžeme predikciu každého z týchto slabých študentov kombinovať pomocou pravidla väčšiny alebo váženého priemeru. Toto vytvára silný model učiaceho sa.

Vo vyššie uvedenom príklade sme definovali 5 slabých študentov a väčšina z týchto pravidiel (tj. 3 z 5 študentov predpovedajú obraz ako mačku) nám dáva predpoveď že obraz je mačka. Preto je náš konečný výstup kat.

Týmto sa dostávame k otázke,

Čo je to posilňovanie?

Posilňovanie je technika učenia sa súboru, ktorá využíva sadu algoritmov strojového učenia na konverziu slabých študentov na silných študentov s cieľom zvýšiť presnosť modelu.

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

Čo posilňuje - Podpora strojového učenia - Edureka

Ako som spomínal, Boosting je metóda učenia sa súboru, ale čo to vlastne učenie súboru je?

Čo je súbor v strojovom učení?

Ensemble learning je metóda, ktorá sa používa na zvýšenie výkonnosti modelu strojového učenia kombináciou viacerých študentov. V porovnaní s jedným modelom tento typ výučby vytvára modely so zvýšenou účinnosťou a presnosťou. To je presne dôvod, prečo sa metódy súborov používajú na vyhrávanie popredných súťaží na trhu, ako je napríklad súťaž odporúčaní Netflix, súťaže Kaggle atď.

Čo je to Ensemble Learning - podpora strojového učenia - Edureka

ako sa stať inžinierom umelej inteligencie

Ďalej som tiež hovoril o rozdieloch medzi Boostingom a Baggingom.

Zvyšovanie vs vrecovanie

Učenie sa súboru sa dá uskutočniť dvoma spôsobmi:

  1. Postupný súbor, ľudovo známy ako posilňovanie , tu sa postupne vytvárajú slabí učiaci sa počas fázy tréningu. Výkon modelu sa zlepšuje priradením vyššej váhy predchádzajúcim, nesprávne klasifikovaným vzorkám. Príkladom vylepšenia je algoritmus AdaBoost.

  2. Paralelná súprava , ľudovo známy ako vrecovanie , tu sa slabí učiaci sa paralelne vytvárajú počas fázy výcviku. Výkonnosť modelu sa dá zvýšiť paralelným zaškolením niekoľkých slabých študentov na zavádzané súbory údajov. Príkladom vrecovania je Náhodný les algoritmus.

V tomto blogu sa budem venovať metóde Boosting, takže v nasledujúcej časti pochopíme, ako funguje zosilňovací algoritmus.

Ako funguje posilňovací algoritmus?

Základným princípom fungovania posilňovacieho algoritmu je generovať viac slabých študentov a kombinovať ich predpovede do jedného silného pravidla. Tieto slabé pravidlá sa generujú použitím základných algoritmov strojového učenia na rôzne distribúcie množiny údajov. Tieto algoritmy generujú slabé pravidlá pre každú iteráciu. Po viacerých iteráciách sa slabí študenti kombinujú a vytvárajú silného študenta, ktorý predpovedá presnejší výsledok.

Ako funguje Boosting Algorithm - Boosting Machine Learning - Edureka

Algoritmus funguje takto:

Krok 1: Základný algoritmus načíta údaje a každému pozorovaniu vzorky priradí rovnakú váhu.

Krok 2: Identifikujú sa nepravdivé predpovede učiace sa základňou. V nasledujúcej iterácii sú tieto nepravdivé predpovede priradené ďalšiemu učiacemu sa základnej škole s vyššou váhou týchto nesprávnych predpovedí.

Krok 3: Opakujte krok 2, kým algoritmus nedokáže správne klasifikovať výstup.

Hlavným cieľom podpory preto je viac sa zamerať na predpovede klasifikované podľa chýb.

Teraz, keď vieme, ako funguje zosilňovací algoritmus, pochopme rôzne typy zosilňovacích techník.

Druhy posilnenia

Existujú tri hlavné spôsoby, ako je možné vykonať podporu:

  1. Adaptive Boosting alebo AdaBoost

  2. Zvyšovanie gradientu

  3. XGBoost

Budem diskutovať o základoch každého z týchto typov.

Adaptívne posilňovanie

  • AdaBoost sa implementuje spojením niekoľkých slabých študentov do jedného silného študenta.

  • Slabí učiaci sa v AdaBoost berú do úvahy jednu vstupnú funkciu a vytvárajú jeden rozdelený rozhodovací strom, ktorý sa nazýva rozhodovací pahýl. Každé pozorovanie sa pri vyťahovaní prvého rozhodovacieho pahýľa váži rovnako.

  • Výsledky prvého pahýľa rozhodnutia sa analyzujú a ak sú pozorovania nesprávne klasifikované, priradí sa im vyššia váha.

  • Po tomto sa vyvodí nový pahýl rozhodnutia, keď sa pozorovania s vyššími váhami považujú za významnejšie.

  • Ak budú nejaké pozorovania nesprávne klasifikované, bude sa im pripisovať vyššia váha a tento proces bude pokračovať, kým všetky pozorovania nebudú spadať do správnej triedy.

  • Adaboost možno použiť na klasifikáciu aj na regresné problémy, na účely klasifikácie sa však používa bežnejšie.

Zvyšovanie gradientu

Gradient Boosting je tiež založený na postupnom súborovom učení. Tu sa základni učiaci sa generujú postupne takým spôsobom, že súčasný základný učiaci sa človek je vždy efektívnejší ako predchádzajúci, t. J. Celkový model sa postupne zlepšuje s každou iteráciou.

Rozdiel v tomto type posilňovania spočíva v tom, že váhy pre nesprávne klasifikované výsledky sa nezvyšujú, namiesto toho sa metóda Gradient Boosting snaží optimalizovať stratovú funkciu predchádzajúceho študenta pridaním nového modelu, ktorý pridáva slabých študentov, aby sa funkcia straty znížila.

Hlavnou myšlienkou je prekonať chyby v predpovediach predchádzajúceho študenta. Tento typ posilnenia má tri hlavné komponenty:

  1. Stratová funkcia to treba vylepšiť.

  2. Slabý žiak pre výpočty predpovedí a formovanie silných študentov.

  3. An Aditívny model ktorá vyrovná stratovú funkciu.

Rovnako ako AdaBoost, aj Gradient Boosting sa dá použiť pri problémoch s klasifikáciou aj regresiou.

XGBoost

XGBoost je pokročilá verzia metódy Gradient Boosting, čo v doslovnom preklade znamená eXtreme Gradient Boosting. XGBoost vyvinutý spoločnosťou Tianqi Chen spadá do kategórie komunity distribuovaného strojového učenia (DMLC).

Hlavným cieľom tohto algoritmu je zvýšiť rýchlosť a efektívnosť výpočtu. Algoritmus Gradient Descent Boosting počíta výstup pomalšie, pretože sekvenčne analyzuje množinu dát, preto sa XGBoost používa na zvýšenie alebo extrémne zvýšenie výkonu modelu.

XGBoost - Podpora strojového učenia - Edureka

XGBoost je navrhnutý tak, aby sa zameral na výpočtovú rýchlosť a efektivitu modelu. Hlavné funkcie poskytované XGBoost sú:

  • Paralelne vytvára rozhodovacie stromy.

  • Implementácia metód distribuovaného výpočtu na hodnotenie veľkých a zložitých modelov.

  • Využitie výpočtov mimo jadra na analýzu obrovských súborov údajov.

  • Implementácia optimalizácie vyrovnávacej pamäte na čo najlepšie využitie zdrojov.

Takže tieto bolirôzne typy algoritmov Boosting Machine Learning. Aby to bolo zaujímavé, v nasledujúcej časti spustíme ukážku, aby sme zistili, ako je možné implementovať podporné algoritmy v Pythone.

Podpora strojového učenia v Pythone

Krátke vylúčenie zodpovednosti: Na spustenie tejto ukážky použijem Python, takže ak nepoznáte Python, môžete si prečítať nasledujúce blogy:

  1. Ako sa naučiť program Python 3 od začiatku - Sprievodca pre začiatočníkov

Teraz je čas zašpiniť si ruky a začať programovať.

Vyhlásenie o probléme: Študovať hubový dátový súbor a zostaviť model strojového učenia, ktorý dokáže klasifikovať hubu ako jedovatú alebo nie, a to analýzou jej funkcií.

Popis množiny údajov: Tento súbor údajov poskytuje podrobný popis hypotetických vzoriek v súlade s 23 druhmi žiabrových húb. Každý druh je klasifikovaný ako jedlé huby alebo nejedlé (jedovaté) huby.

Logika: Vytvoriť model strojového učenia pomocou jedného z algoritmov posilnenia s cieľom predpovedať, či je huba jedlá alebo nie.

Krok 1: Importujte požadované balíčky

z sklearn.ensemble import AdaBoostClassifier z sklearn.preprocesing import LabelEncoder zo sklearn.tree import DecisionTreeClassifier import pandy ako pd # Import funkcie train_test_split z sklearn.model_selection import train_test_split #Import scikit-learn metriky skript

Krok 2: Importujte množinu údajov

# Načítanie dátovej množiny údajov = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Krok 3: Spracovanie údajov

# Definujte názvy stĺpcov dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'zápach', 'gill-attachment', 'gill-spacing „,„ veľkosť žiabra “,„ farba žiabra “,„ tvar stonky “,„ koreň stonky “,„ povrch stonky nad krúžkom “,„ povrch stonky pod krúžkom “,„ farba stonky “ -hore-ring ',' stalk-color-below-ring ',' veil-type ',' veil-color ',' ring-number ',' ring-type ',' spore-print-color ',' populace ',' habitat '] pre štítok v dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Display informácie o množine údajov print (dataset.info ( )) Int64Index: 8124 záznamov, 6074 až 686 údajových stĺpcov (celkom 23 stĺpcov): cieľ 8124 nenulový int32 tvar čiapky 8124 nenulový int32 povrch viečka 8124 nenulový int32 farba čiapky 8124 nenulový int32 modriny 8124 nenulový zápach int32 8124 nenulový int32 žiabrový nástavec 8124 nenulový int32 rozstup medzi žiabrami 8124 nenulový int32 žiabrový rozmer 8124 nenulový int32 žiabrový farebný 8124 nenulový int32 stopkový tvar 8124 nenulový int32 stopka-root 8124 nenulová hodnota int32 stopka-povrch-nad-krúžok 8124 nenulová int32 stopka-povrch-pod-krúžok 8124 non-nulová int32 stopka-farebná-nad-krúžok 8124 iná ako null int32 stonka-farebná-pod-krúžok 8124 non-nulová int32 závoj- typ 8124 nenulový int32 závoj-farebný 8124 nenulový int32 číslo krúžku 8124 nenulový int32 kruhový typ 8124 nenulový int32 spór-tlač-farba 8124 nenulový int32 populácia 8124 nenulový int32 biotop 8124 ne- null int32 dtypes: int32 (23) využitie pamäte: 793,4 KB

Krok 4: Spájanie údajov

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

Krok 5: Zostavte model

model = DecisionTreeClassifier (kritérium = 'entropia', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

Vo vyššie uvedenom útržku kódu sme implementovali algoritmus AdaBoost. Funkcia „AdaBoostClassifier“ vyžaduje tri dôležité parametre:

  • base_estimator: Odhad základne (slabý žiak) je predvolene rozhodovacie stromy
  • n_estimator: Toto pole určuje počet základných študentov, ktorí sa majú použiť.
  • learning_rate: toto pole určuje rýchlosť učenia, ktorú sme nastavili na predvolenú hodnotu, t. j. 1.
# Prispôsobte model cvičebnými dátami boostmodel = AdaBoost.fit (X_train, Y_train)

Krok 6: Vyhodnotenie modelu

# Vyhodnoťte presnosť modelu y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) # Výpočet presnosti v percentách tlače („Presnosť je:“, predpovede * 100, „%“) Presnosť je: 100,0%

Dostali sme 100% presnosť, čo je perfektné!

Týmto teda prichádzame na koniec tohto blogu o Boosting Machine Learning. Ak sa chcete dozvedieť viac informácií o strojovom učení, môžete prečítať tieto blogy:

  1. naučiť sa používať vizuálne štúdio

Ak sa chcete prihlásiť na úplný kurz umelej inteligencie a strojového učenia, má Edureka špeciálne kurátora vďaka čomu ovládate techniky, ako je supervidované učenie, nekontrolované učenie a spracovanie prirodzeného jazyka. Zahŕňa školenie o najnovších pokrokoch a technických prístupoch v oblasti umelej inteligencie a strojového učenia, ako sú napríklad Deep Learning, Graphical Models a Reinforcement Learning.