S tolika pokroky v oblasti zdravotnictví, marketingu, obchodu atd. Se stala potřeba vyvinout pokročilejší a komplexnější . Posílení strojového učení je jednou z takových technik, kterou lze použít k řešení složitých problémů založených na datech v reálném světě. Tento blog je zcela zaměřen na to, jak Boosting Machine Learning funguje a jak jej lze implementovat za účelem zvýšení efektivity modelů Machine Learning.
Chcete-li získat podrobné znalosti o umělé inteligenci a strojovém učení, můžete se zaregistrovat naživo od společnosti Edureka s nepřetržitou podporou a doživotním přístupem.
Zde je seznam témat, kterým se budeme věnovat v tomto blogu:
- Proč se používá posilování?
- Co je posilování?
- Jak funguje Boosting Algorithm?
- Druhy posilování
- Ukázka
Proč se používá posilování?
K řešení spletitých problémů potřebujeme pokročilejší techniky. Předpokládejme, že na dané datové sadě obrázků obsahující obrázky koček a psů jste byli požádáni, abyste vytvořili model, který může tyto obrázky klasifikovat do dvou samostatných tříd. Jako každá jiná osoba začnete identifikací obrázků pomocí některých pravidel, která jsou uvedena níže:
Obraz má špičaté uši: Cat
Obrázek má oči ve tvaru kočky: Cat
Obrázek má větší končetiny: Pes
Obrázek má naostřené drápy: Cat
Obrázek má širší strukturu úst: Pes
Všechna tato pravidla nám pomáhají identifikovat, zda je obrázek Pes nebo kočka, ale pokud bychom měli obraz klasifikovat na základě individuálního (jediného) pravidla, předpověď by byla chybná. Každé z těchto pravidel se jednotlivě říká slabé žáky, protože tato pravidla nejsou dostatečně silná, aby klasifikovala obrázek jako kočku nebo psa.
Abychom se ujistili, že naše předpověď je přesnější, můžeme kombinovat předpověď od každého z těchto slabých studentů pomocí pravidla většiny nebo váženého průměru. To vytváří silný model žáka.
Ve výše uvedeném příkladu jsme definovali 5 slabých studentů a většina těchto pravidel (tj. 3 z 5 studentů předpovídají obraz jako kočka) nám dává předpověď že obraz je kočka. Proto je náš konečný výstup kočka.
To nás přivádí k otázce,
Co je posilování?
Boosting je technika učení se souborem, která využívá sadu algoritmů strojového učení k převodu slabého žáka na silného žáka za účelem zvýšení přesnosti modelu.
Co posiluje - Podpora strojového učení - Edureka
Jak jsem zmínil, Boosting je metoda učení se souboru, ale co přesně je učení souboru?
Co je Ensemble ve strojovém učení?
Ensemble learning je metoda, která se používá ke zvýšení výkonu modelu strojového učení kombinací několika studentů. Ve srovnání s jediným modelem tento typ učení vytváří modely se zlepšenou účinností a přesností. To je přesně důvod, proč se metody souborů používají k vítězství na předních soutěžích na trhu, jako je soutěž doporučení Netflix, soutěže Kaggle atd.
Co je Ensemble Learning - Podpora strojového učení - Edureka
java převádí double na int
Níže jsem také diskutoval o rozdílu mezi posilováním a pytlováním.
Zvyšování vs pytlování
Učení souboru lze provádět dvěma způsoby:
Sekvenční soubor, populárně známý jako posílení , zde jsou postupně během tréninkové fáze produkováni slabí žáci. Výkon modelu se zlepšuje přiřazením vyšší váhy předchozím, nesprávně klasifikovaným vzorkům. Příkladem posílení je algoritmus AdaBoost.
Paralelní sada , populárně známý jako pytlování , zde se slabí žáci produkují paralelně během tréninkové fáze. Výkon modelu lze zvýšit paralelním trénováním řady slabých studentů na zaváděcích souborech dat. Příkladem pytlování je Random Forest algoritmus.
V tomto blogu se zaměřím na metodu Boosting, takže v následující části pochopíme, jak funguje posilovací algoritmus.
Jak funguje Boosting Algorithm?
Základním principem fungování posilovacího algoritmu je generovat více slabých studentů a kombinovat jejich předpovědi do jednoho silného pravidla. Tato slabá pravidla jsou generována použitím základních algoritmů strojového učení na různých distribucích datové sady. Tyto algoritmy generují slabá pravidla pro každou iteraci. Po několika iteracích se slabí žáci spojí a vytvoří silného žáka, který předpovídá přesnější výsledek.
Jak funguje Boosting Algorithm - Boosting Machine Learning - Edureka
Algoritmus funguje takto:
Krok 1: Základní algoritmus čte data a každému pozorování vzorku přiřazuje stejnou váhu.
Krok 2: Jsou identifikovány falešné předpovědi učené základnou. V další iteraci jsou tyto falešné předpovědi přiřazeny dalšímu základnímu žákovi s vyšší váhou těchto nesprávných předpovědí.
Krok 3: Opakujte krok 2, dokud algoritmus nedokáže správně klasifikovat výstup.
Proto je hlavním cílem posilování zaměřit se více na předpovědi klasifikované podle chyb.
Nyní, když víme, jak funguje posilovací algoritmus, pochopme různé typy posilovacích technik.
Druhy posilování
Existují tři hlavní způsoby, jak lze posílení provést:
Adaptivní posilování nebo AdaBoost
Posílení přechodu
XGBoost
Budu diskutovat o základech každého z těchto typů.
Adaptivní posilování
AdaBoost je implementován kombinací několika slabých studentů do jednoho silného studenta.
Slabí studenti v AdaBoost berou v úvahu jednu vstupní funkci a vykreslují jeden rozdělený rozhodovací strom, který se nazývá rozhodovací pahýl. Každé pozorování se při vytahování prvního rozhodovacího pařezu zváží stejně.
Výsledky z prvního rozhodovacího pařezu jsou analyzovány a pokud jsou některá pozorování nesprávně klasifikována, jsou jim přiřazeny vyšší váhy.
Zveřejněte toto, nový rozhodovací pařez je nakreslen tím, že se pozorování s vyšší váhou budou považovat za významnější.
Pokud jsou některá pozorování nesprávně klasifikována, je jim přidělena větší váha a tento proces pokračuje, dokud všechna pozorování nespadnou do správné třídy.
Adaboost lze použít jak pro klasifikaci, tak pro regresní problémy, ale pro účely klasifikace se běžně používá.
Posílení přechodu
Gradient Boosting je také založen na sekvenčním učení souborů. Zde se základní žáci generují postupně takovým způsobem, že současný základní žák je vždy efektivnější než ten předchozí, tj. Celkový model se postupně zlepšuje s každou iterací.
Rozdíl v tomto typu posilování spočívá v tom, že váhy nesprávně klasifikovaných výsledků se nezvyšují, místo toho se metoda Gradient Boosting snaží optimalizovat funkci ztráty předchozího studenta přidáním nového modelu, který přidává slabé studenty, aby se snížila funkce ztráty.
Hlavní myšlenkou je překonat chyby v předpovědích předchozího žáka. Tento typ posilování má tři hlavní součásti:
Funkce ztráty to je třeba zlepšit.
Slabý žák pro výpočet předpovědí a formování silných studentů.
An Aditivní model tím se vyrovná funkce ztráty.
Stejně jako AdaBoost lze Gradient Boosting také použít pro klasifikaci i regresní problémy.
XGBoost
XGBoost je pokročilá verze metody Gradient Boosting, to doslova znamená eXtreme Gradient Boosting. XGBoost vyvinutý společností Tianqi Chen spadá do kategorie komunity distribuovaného strojového učení (DMLC).
Hlavním cílem tohoto algoritmu je zvýšit rychlost a efektivitu výpočtu. Algoritmus Gradient Descent Boosting počítá výstup pomaleji, protože sekvenčně analyzují datovou sadu, proto se XGBoost používá ke zvýšení nebo extrémnímu zvýšení výkonu modelu.
XGBoost - Podpora strojového učení - Edureka
XGBoost je navržen tak, aby se zaměřil na výpočetní rychlost a efektivitu modelu. Hlavní funkce poskytované XGBoost jsou:
Paralelně vytváří rozhodovací stromy.
Implementace distribuovaných výpočetních metod pro hodnocení velkých a složitých modelů.
Využití výpočetní techniky mimo jádro k analýze obrovských datových sad.
Implementace optimalizace mezipaměti pro co nejlepší využití zdrojů.
Tak to bylorůzné typy algoritmů Boosting Machine Learning. Aby to bylo zajímavé, v níže uvedené části spustíme ukázku, abychom zjistili, jak lze v Pythonu implementovat boostovací algoritmy.
Posílení strojového učení v Pythonu
Krátké odmítnutí odpovědnosti: Ke spuštění této ukázky použiji Python, takže pokud Python neznáte, můžete projít následující blogy:
Nyní je čas zašpinit si ruce a začít kódovat.
Problémové prohlášení: Studovat datový soubor hub a sestavit model Machine Learning, který může klasifikovat houbu jako jedovatou nebo ne, analýzou jejích funkcí.
Popis datové sady: Tato sada dat poskytuje podrobný popis hypotetických vzorků podle 23 druhů žaberních hub. Každý druh je klasifikován jako jedlé houby nebo nejedlé (jedovaté).
Logika: Vytvoření modelu Machine Learning pomocí jednoho z algoritmů Boosting za účelem předpovědi, zda je houba jedlá nebo ne.
Krok 1: Importujte požadované balíčky
ze sklearn.ensemble import AdaBoostClassifier ze sklearn.preprocessing import LabelEncoder ze sklearn.tree import DecisionTreeClassifier import pand jako pd # Import funkce train_test_split ze sklearn.model_selection import train_test_split #Import scikit-learn metric
Krok 2: Importujte datovou sadu
# Načíst datovou sadu dat = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')
Krok 3: Zpracování dat
# Definujte názvy sloupců dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'pach', 'gill-attachment', 'gill-spacing „,„ velikost žaber “,„ barva žáber “,„ tvar stonku “,„ kořen stonku “,„ povrch stonku nad kroužkem “,„ povrch stonku pod kroužkem “,„ barva stonku “ -před-prsten ',' barva stonku pod prstenem ',' typ závoje ',' barva závoje ',' číslo prstenu ',' typ prstenu ',' barva sporu-tisk ',' populace ',' habitat '] pro štítek v dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Display informace o datové sadě tisk (dataset.info ( )) Int64Index: 8124 záznamů, 6074 až 686 datových sloupců (celkem 23 sloupců): cíl 8124 non-null int32 cap-tvar 8124 non-null int32 cap-povrch 8124 non-null int32 barva čepice 8124 non-null int32 modřiny 8124 nenulová vůně int32 8124 nenulová int32 žlábková přípojka 8124 nenulová int32 žlábková rozteč 8124 nenulová int32 velikost žáber 8124 nenulová int32 žargová barva 8124 nenulová int32 stopková forma 8124 nenulová int32 stalk-root 8124 nenulová int32 stonek-povrch-nad-prsten 8124 non-null int32 stonek-povrch-pod-prsten 8124 non-null int32 stonek-color-nad-prsten 8124 non-null int32 stonek-barva-pod-prsten 8124 non-null int32 závoj- typ 8124 nenulová int32 závojová barva 8124 nenulová int32 číslo kruhu 8124 nenulová int32 kruhová typ 8124 nenulová int32 spore-print-color 8124 nenulová int32 populace 8124 nenulová int32 stanoviště 8124 ne- null int32 dtypes: int32 (23) využití paměti: 793,4 KB
Krok 4: Spojování dat
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: Sestavte model
model = DecisionTreeClassifier (kritérium = 'entropie', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)
Ve výše uvedeném fragmentu kódu jsme implementovali algoritmus AdaBoost. Funkce „AdaBoostClassifier“ vyžaduje tři důležité parametry:
- base_estimator: Odhad základny (slabý žák) je ve výchozím nastavení rozhodovací stromy
- n_estimator: Toto pole určuje počet základních studentů, kteří se mají použít.
- learning_rate: Toto pole určuje rychlost učení, kterou jsme nastavili na výchozí hodnotu, tj. 1.
# Přizpůsobte model tréninkovými daty boostmodel = AdaBoost.fit (X_train, Y_train)
Krok 6: Vyhodnocení modelu
# Vyhodnoťte přesnost modelu y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) # Výpočet přesnosti v procentech tisku ('Přesnost je:', předpovědi * 100, '%') Přesnost je: 100,0%
Dostali jsme přesnost 100%, což je perfektní!
Takže s tímto se dostáváme na konec tohoto blogu Boosting Machine Learning. Pokud se chcete dozvědět více o Machine Learning, můžete těmto blogům přečíst:
Pokud se chcete zaregistrovat na kompletní kurz umělé inteligence a strojového učení, Edureka má speciálně připravený kurz díky nimž zvládnete techniky, jako je supervidované učení, nekontrolované učení a zpracování přirozeného jazyka. Zahrnuje školení o nejnovějších pokrokech a technických přístupech v oblasti umělé inteligence a strojového učení, jako je Deep Learning, Graphical Models a Reinforcement Learning.