Un ghid cuprinzător pentru stimularea algoritmilor de învățare automată



Acest blog se concentrează în totalitate pe modul în care funcționează Boosting Machine Learning și cum poate fi implementat pentru a crește eficiența modelelor de Machine Learning.

Cu atât de multe progrese în domeniul asistenței medicale, marketing, afaceri și așa mai departe, a devenit o necesitate de a dezvolta mai avansate și mai complexe . Stimularea învățării automate este o astfel de tehnică care poate fi utilizată pentru a rezolva probleme complexe, bazate pe date, din lumea reală. Acest blog este în întregime axat pe modul în care funcționează Boosting Machine Learning și cum poate fi implementat pentru a spori eficiența modelelor de Machine Learning.

Pentru a obține cunoștințe aprofundate despre inteligența artificială și învățarea automată, vă puteți înscrie pentru live de Edureka cu suport 24/7 și acces pe viață.





Iată o listă de subiecte care vor fi acoperite în acest blog:

  1. De ce este folosit Boosting?
  2. Ce este stimularea?
  3. Cum funcționează Boosting Algorithm?
  4. Tipuri de stimulare
  5. Demo

De ce este folosit Boosting?

Pentru a rezolva problemele complicate, avem nevoie de tehnici mai avansate. Să presupunem că, pe baza unui set de date de imagini care conțin imagini de pisici și câini, vi s-a cerut să construiți un model care să poată clasifica aceste imagini în două clase separate. La fel ca orice altă persoană, veți începe prin identificarea imaginilor folosind câteva reguli, cum ar fi cele de mai jos:



  1. Imaginea are urechi ascuțite: Cat

  2. Imaginea are ochi în formă de pisică: Cat

  3. Imaginea are membre mai mari: câine



  4. Imaginea are gheare ascuțite: Cat

  5. Imaginea are o structură a gurii mai largă: câine

Toate aceste reguli ne ajută să identificăm dacă o imagine este un câine sau o pisică, totuși, dacă ar fi să clasificăm o imagine pe baza unei reguli individuale (unice), predicția ar fi greșită. Fiecare dintre aceste reguli, individual, sunt numite cursanți slabi, deoarece aceste reguli nu sunt suficient de puternice pentru a clasifica o imagine ca pisică sau câine.

Prin urmare, pentru a ne asigura că predicția noastră este mai exactă, putem combina predicția de la fiecare dintre acești cursanți slabi utilizând regula majorității sau media ponderată. Acest lucru face ca un model puternic să învețe.

În exemplul de mai sus, am definit 5 cursanți slabi și majoritatea acestor reguli (adică 3 din 5 cursanți prezic imaginea ca o pisică) ne oferă predicția că imaginea este o pisică. Prin urmare, rezultatul nostru final este o pisică.

șir până în prezent în java

Deci, acest lucru ne aduce la întrebare,

Ce este stimularea?

Stimularea este o tehnică de învățare a ansamblului care folosește un set de algoritmi de învățare automată pentru a converti cursanții slabi în cursanți puternici, pentru a crește precizia modelului.

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

Ce este stimularea - stimularea învățării automate - Edureka

Așa cum am menționat Boosting este o metodă de învățare a ansamblului, dar ce este exact învățarea în ansamblu?

Ce este ansamblul în învățarea automată?

Învățarea ansamblului este o metodă care este utilizată pentru a spori performanța modelului de învățare automată prin combinarea mai multor cursanți. Comparativ cu un singur model, acest tip de învățare construiește modele cu eficiență și precizie îmbunătățite. Acesta este exact motivul pentru care metodele de ansamblu sunt folosite pentru a câștiga competiții de top pe piață, cum ar fi concursul de recomandare Netflix, concursurile Kaggle și așa mai departe.

Ce este învățarea ansamblului - Stimularea învățării automate - Edureka

Mai jos am discutat și despre diferența dintre Boosting și Bagging.

Boosting vs Bagging

Învățarea ansamblului poate fi realizată în două moduri:

  1. Ansamblu secvențial, cunoscut popular ca sporind , aici cursanții slabi sunt produși secvențial în timpul fazei de formare. Performanța modelului este îmbunătățită prin atribuirea unei ponderi mai mari eșantioanelor anterioare clasificate incorect. Un exemplu de boosting este algoritmul AdaBoost.

  2. Set paralel , cunoscut popular ca pungi , aici cursanții slabi sunt produși în paralel în timpul fazei de formare. Performanța modelului poate fi crescută prin instruirea paralelă a unui număr de cursanți slabi pe seturi de date bootstrap. Un exemplu de împachetare este Pădurea Random algoritm.

În acest blog, mă voi concentra asupra metodei Boosting, așa că în secțiunea de mai jos vom înțelege cum funcționează algoritmul boosting.

Cum funcționează Boosting Algorithm?

Principiul de bază din spatele funcționării algoritmului de creștere este de a genera mai mulți cursanți slabi și de a combina predicțiile lor pentru a forma o regulă puternică. Aceste reguli slabe sunt generate prin aplicarea algoritmilor de bază Machine Learning pe diferite distribuții ale setului de date. Acești algoritmi generează reguli slabe pentru fiecare iterație. După mai multe iterații, cursanții slabi sunt combinați pentru a forma un cursant puternic care va prezice un rezultat mai precis.

Cum funcționează Boosting Algorithm - Boosting Machine Learning - Edureka

Iată cum funcționează algoritmul:

Pasul 1: Algoritmul de bază citește datele și atribuie o greutate egală fiecărei probe de observare.

Pasul 2: Sunt identificate predicții false făcute de cursantul de bază. În următoarea iterație, aceste predicții false sunt atribuite următorului cursant de bază cu o pondere mai mare asupra acestor predicții incorecte.

Pasul 3: Repetați pasul 2 până când algoritmul poate clasifica corect ieșirea.

Prin urmare, scopul principal al Boosting este să se concentreze mai mult asupra predicțiilor clasificate greșit.

Acum, că știm cum funcționează algoritmul de amplificare, să înțelegem diferitele tipuri de tehnici de amplificare.

Tipuri de stimulare

Există trei modalități principale prin care se poate realiza amplificarea:

  1. Adaptive Boosting sau AdaBoost

  2. Amplificarea gradientului

  3. XGBoost

Voi discuta elementele de bază din spatele fiecăruia dintre aceste tipuri.

Boosting adaptiv

  • AdaBoost este implementat prin combinarea mai multor cursanți slabi într-un singur cursant puternic.

  • Cei slabi care învață în AdaBoost iau în considerare o singură caracteristică de intrare și extrag un singur arbore de decizie împărțit numit butuc de decizie. Fiecare observație este cântărită în mod egal în timp ce se extrage primul butuc de decizie.

  • Rezultatele primului butuc de decizie sunt analizate și dacă observațiile sunt clasificate în mod greșit, li se atribuie ponderi mai mari.

  • Postează acest lucru, se trage un nou butuc de decizie, considerând observațiile cu greutăți mai mari ca fiind mai semnificative.

  • Din nou, dacă observațiile sunt clasificate greșit, acestea au o pondere mai mare și acest proces continuă până când toate observațiile intră în clasa potrivită.

  • Adaboost poate fi utilizat atât pentru clasificare, cât și pentru probleme bazate pe regresie, cu toate acestea, este mai frecvent utilizat în scopul clasificării.

Amplificarea gradientului

Gradient Boosting se bazează și pe învățarea secvențială a ansamblului. Aici cursanții de bază sunt generați secvențial în așa fel încât actualul cursant de bază este întotdeauna mai eficient decât precedentul, adică modelul general se îmbunătățește secvențial cu fiecare iterație.

Diferența în acest tip de creștere este că ponderile pentru rezultatele clasificate greșit nu sunt incrementate, în schimb, metoda Gradient Boosting încearcă să optimizeze funcția de pierdere a cursantului anterior prin adăugarea unui nou model care adaugă cursanți slabi pentru a reduce funcția de pierdere.

Ideea principală aici este de a depăși erorile din predicțiile cursantului anterior. Acest tip de boosting are trei componente principale:

  1. Funcția de pierdere care trebuie ameliorat.

  2. Elev slab pentru calculul predicțiilor și formarea de cursanți puternici.

  3. Un Model aditiv care va regulariza funcția de pierdere.

La fel ca AdaBoost, Gradient Boosting poate fi utilizat și pentru probleme de clasificare și de regresie.

XGBoost

XGBoost este o versiune avansată a metodei Gradient boosting, înseamnă literalmente eXtreme Gradient Boosting. XGBoost dezvoltat de Tianqi Chen se încadrează în categoria Comunității de învățare automată distribuită (DMLC).

cum se folosesc seturi în java

Scopul principal al acestui algoritm este de a crește viteza și eficiența calculului. Algoritmul Gradient Descent Boosting calculează ieșirea la o rată mai mică, deoarece analizează secvențial setul de date, prin urmare XGBoost este utilizat pentru a spori sau a spori extrem de performanțele modelului.

XGBoost - Boosting Machine Learning - Edureka

XGBoost este conceput pentru a se concentra pe viteza de calcul și eficiența modelului. Principalele caracteristici furnizate de XGBoost sunt:

convertiți un dublu într-un int
  • În paralel creează arbori de decizie.

  • Implementarea metodelor de calcul distribuite pentru evaluarea modelelor mari și complexe.

  • Utilizarea computerului Out-of-Core pentru a analiza seturi de date imense.

  • Implementarea optimizării cache-ului pentru a utiliza la maximum resursele.

Așa au fostdiferitele tipuri de algoritmi Boosting Machine Learning. Pentru a face lucrurile interesante, în secțiunea de mai jos vom lansa o demonstrație pentru a vedea cum pot fi implementați algoritmi de creștere în Python.

Stimularea învățării automate în Python

O scurtă declinare a responsabilității: voi folosi Python pentru a rula această demonstrație, deci dacă nu cunoașteți Python, puteți accesa următoarele bloguri:

  1. Cum să înveți Python 3 din Scratch - Un ghid pentru începători

Acum este timpul să vă murdăriți mâinile și să începeți codarea.

Declarație problemă: Pentru a studia un set de date despre ciuperci și pentru a construi un model de învățare automată care poate clasifica o ciupercă ca fiind otrăvitoare sau nu, analizând caracteristicile acesteia.

Descrierea setului de date: Acest set de date oferă o descriere detaliată a probelor ipotetice, în conformitate cu 23 de specii de ciuperci branșate. Fiecare specie este clasificată fie ca ciuperci comestibile, fie ca necomestibile (otrăvitoare).

Logică: Pentru a construi un model de învățare automată utilizând unul dintre algoritmii Boosting pentru a prezice dacă o ciupercă este sau nu comestibilă.

Pasul 1: Importați pachetele necesare

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

Pasul 2: Importați setul de date

# Încărcați în setul de date = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Pasul 3: Prelucrarea datelor

#Define the column names dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'vânătaie', 'miros', 'branșament-atașament', 'branșament-spațiere ',' mărimea branhiei ',' culoarea branhiei ',' forma tulpinii ',' rădăcina tulpinii ',' suprafața tulpinii-deasupra-inelului ',' suprafața tulpinii-sub-inel ',' culoarea tulpinii -deasupra inelului, „culoare tulpină-sub-inel”, „tip văl”, „culoare văl”, „număr inel”, „tip inel”, „culoare imprimare spori”, „populație” ',' habitat '] pentru etichetă în dataset.columns: dataset [label] = LabelEncoder (). fit (set de date [etichetă]). transform (set de date [etichetă]) #Display informații despre setul de date print (dataset.info ( )) Int64Index: 8124 intrări, 6074 până la 686 coloane de date (total 23 coloane): țintă 8124 non-nul int32 forma capac 8124 non-nul int32 capac-suprafață 8124 non-nul int32 cap-culoare 8124 non-nul nul 3232 vânătăi 8124 non-nul int32 miros 8124 non-nul int32 branșament-atașament 8124 non-nul int32 branșament 8124 non-nul int32 branhie mărime 8124 non-nul int32 branhiu-culoare 8124 non-nul int32 formă de tulpină 8124 non-nul int32 stalk-root 8124 non-nul int32 stalk-surface-above-ring 8124 non-nul int32 stalk-surface-below-ring 8124 non-nul int32 stalk-color-above-ring 8124 non-nul int32 stalk-color-below-ring 8124 non-nul int32 voil- tip 8124 non-nul int32 culoarea voalului 8124 non-nul int32 număr de inel 8124 non-nul int32 tip inel 8124 non-nul int32 spore-print-color 8124 non-nul int32 populație 8124 non-nul int32 habitat 8124 non- null tipuri int32: int32 (23) utilizare memorie: 793,4 KB

Pasul 4: Splicing de date

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)

Pasul 5: Construiți modelul

model = DecisionTreeClassifier (criteriu = 'entropie', max_depth = 1) AdaBoost = AdaBoostClassifier (bază_estimator = model, n_estimators = 400, learning_rate = 1)

În fragmentul de cod de mai sus, am implementat algoritmul AdaBoost. Funcția „AdaBoostClassifier” ia trei parametri importanți:

  • base_estimator: Estimatorul de bază (cursant slab) este Arbori de decizie în mod implicit
  • n_estimator: Acest câmp specifică numărul de cursanți de bază care trebuie utilizați.
  • rate_învățare: acest câmp specifică rata de învățare, pe care am stabilit-o la valoarea implicită, adică 1.
# Montează modelul cu date de antrenament boostmodel = AdaBoost.fit (X_train, Y_train)

Pasul 6: Evaluarea modelului

#Evaluați acuratețea modelului y_pred = boostmodel.predict (X_test) predicții = metrics.accuracy_score (Y_test, y_pred) #Calcularea preciziei în tipărire procentuală („Precizia este:”, predicții * 100, „%”) Precizia este: 100,0%

Am primit o precizie de 100%, ceea ce este perfect!

Așadar, odată cu aceasta, ajungem la sfârșitul acestui blog de stimulare a învățării automate. Dacă doriți să aflați mai multe despre învățarea automată, puteți citi aceste bloguri:

Dacă doriți să vă înscrieți la un curs complet de inteligență artificială și învățare automată, Edureka are un program special care vă va face să vă pricepeți la tehnici precum învățarea supravegheată, învățarea nesupravegheată și procesarea limbajului natural. Acesta include instruire cu privire la cele mai recente progrese și abordări tehnice în inteligența artificială și învățarea automată, cum ar fi învățarea profundă, modelele grafice și învățarea prin întărire.