En omfattende guide til at øge maskinlæringsalgoritmer



Denne blog fokuserer udelukkende på, hvordan Boosting Machine Learning fungerer, og hvordan den kan implementeres for at øge effektiviteten af ​​Machine Learning-modeller.

Med så mange fremskridt inden for sundhedspleje, markedsføring, forretning og så videre er det blevet et behov for at udvikle mere avanceret og kompleks . Boosting Machine Learning er en sådan teknik, der kan bruges til at løse komplekse, datadrevne, virkelige problemer. Denne blog er helt fokuseret på, hvordan Boosting Machine Learning fungerer, og hvordan det kan implementeres for at øge effektiviteten af ​​Machine Learning-modeller.

For at få indgående kendskab til kunstig intelligens og maskinindlæring kan du tilmelde dig live af Edureka med support døgnet rundt og adgang til hele livet.





omfangsopløsningsoperator i c ++

Her er en liste over emner, der vil blive dækket i denne blog:

  1. Hvorfor boosting bruges?
  2. Hvad er boosting?
  3. Hvordan Boosting Algorithm Works?
  4. Typer af boosting
  5. Demo

Hvorfor bruges boosting?

For at løse indviklede problemer kræver vi mere avancerede teknikker. Lad os antage, at når du får et datasæt med billeder, der indeholder billeder af katte og hunde, blev du bedt om at opbygge en model, der kan klassificere disse billeder i to separate klasser. Som enhver anden person starter du med at identificere billederne ved hjælp af nogle regler, som angivet nedenfor:



  1. Billedet har spidse ører: Kat

  2. Billedet har katformede øjne: Kat

  3. Billedet har større lemmer: Hund



  4. Billedet har slibede kløer: Kat

  5. Billedet har en bredere mundstruktur: Hund

Alle disse regler hjælper os med at identificere, om et billede er en hund eller en kat, men hvis vi skulle klassificere et billede baseret på en individuel (enkelt) regel, ville forudsigelsen være mangelfuld. Hver af disse regler kaldes hver for sig svage elever, fordi disse regler ikke er stærke nok til at klassificere et billede som en kat eller hund.

Derfor kan vi for at sikre, at vores forudsigelse er mere nøjagtige, kombinere forudsigelsen fra hver af disse svage elever ved at bruge majoritetsreglen eller det vægtede gennemsnit. Dette er en stærk elevmodel.

I ovenstående eksempel har vi defineret 5 svage elever, og størstedelen af ​​disse regler (dvs. 3 ud af 5 elever forudsiger billedet som en kat) giver os forudsigelsen at billedet er en kat. Derfor er vores endelige output en kat.

Så dette bringer os til spørgsmålet,

Hvad er boosting?

Boosting er en ensembleindlæringsteknik, der bruger et sæt maskinindlæringsalgoritmer til at konvertere svage elever til stærke elever for at øge nøjagtigheden af ​​modellen.

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

Hvad er Boosting - Boosting Machine Learning - Edureka

Som jeg nævnte er Boosting en ensembleindlæringsmetode, men hvad er ensembleindlæring præcist?

Hvad er ensemble i maskinlæring?

Ensembleindlæring er en metode, der bruges til at forbedre maskinlæringsmodelens ydeevne ved at kombinere flere elever. Sammenlignet med en enkelt model bygger denne type læring modeller med forbedret effektivitet og nøjagtighed. Dette er præcis, hvorfor ensemblemetoder bruges til at vinde markedsledende konkurrencer såsom Netflix-anbefalingskonkurrencen, Kaggle-konkurrencer og så videre.

Hvad er ensembleindlæring - Boosting Machine Learning - Edureka

Nedenfor har jeg også diskuteret forskellen mellem Boosting og Bagging.

Boosting vs Bagging

Ensembleindlæring kan udføres på to måder:

  1. Sekventielt ensemble, populært kendt som boosting , her produceres de svage elever sekventielt under træningsfasen. Modelens ydeevne forbedres ved at tildele de tidligere forkert klassificerede prøver en højere vægtning. Et eksempel på boosting er AdaBoost-algoritmen.

  2. Parallelt sæt , populært kendt som bagging , her produceres de svage elever parallelt i træningsfasen. Modelens ydeevne kan øges ved parallelt at træne et antal svage elever i bootstrapped datasæt. Et eksempel på bagging er Random Forest algoritme.

I denne blog vil jeg fokusere på Boosting-metoden, så i nedenstående afsnit vil vi forstå, hvordan boostingsalgoritmen fungerer.

Hvordan Boosting Algorithm Works?

Det grundlæggende princip bag arbejdet med boosting-algoritmen er at generere flere svage elever og kombinere deres forudsigelser for at danne en stærk regel. Disse svage regler genereres ved at anvende basale maskinlæringsalgoritmer på forskellige distributioner af datasættet. Disse algoritmer genererer svage regler for hver iteration. Efter flere gentagelser kombineres de svage elever til en stærk elev, der forudsiger et mere præcist resultat.

Hvordan fungerer Boosting Algorithm - Boosting Machine Learning - Edureka

Sådan fungerer algoritmen:

Trin 1: Basisalgoritmen læser dataene og tildeler den samme vægt til hver prøveobservation.

Trin 2: Der identificeres falske forudsigelser fra baselæreren. I den næste iteration tildeles disse falske forudsigelser til den næste baselærer med en højere vægtning af disse forkerte forudsigelser.

Trin 3: Gentag trin 2, indtil algoritmen kan klassificere output korrekt.

Derfor er hovedformålet med Boosting at fokusere mere på forudsigelser, der klassificeres som miss.

Nu hvor vi ved, hvordan boostingsalgoritmen fungerer, lad os forstå de forskellige typer boostingsteknikker.

Typer af boosting

Der er tre hovedmåder, hvormed boosting kan udføres:

  1. Adaptive Boosting eller AdaBoost

  2. Gradient Boosting

  3. XGBoost

Jeg vil diskutere det grundlæggende bag hver af disse typer.

Adaptiv boosting

  • AdaBoost implementeres ved at kombinere flere svage elever i en enkelt stærk elev.

  • De svage elever i AdaBoost tager højde for en enkelt inputfunktion og tegner et enkelt delt beslutningstræ kaldet beslutningstubben. Hver observation vejes ligeligt, mens den første beslutningsstub tegnes.

  • Resultaterne fra den første beslutningsstub analyseres, og hvis observationer klassificeres forkert, tildeles de højere vægte.

  • Efter dette, tegnes en ny beslutningsstub ved at betragte observationer med højere vægte som mere betydningsfulde.

  • Igen, hvis nogen observationer klassificeres forkert, får de højere vægt, og denne proces fortsætter, indtil alle observationer falder i den rigtige klasse.

  • Adaboost kan bruges til både klassificering og regressionsbaserede problemer, men det bruges mere almindeligt til klassificeringsformål.

Gradient Boosting

Gradient Boosting er også baseret på sekventiel ensembleindlæring. Her genereres basiseleverne sekventielt på en sådan måde, at den nuværende baselærer altid er mere effektiv end den foregående, dvs. den samlede model forbedres sekventielt med hver iteration.

Forskellen i denne type boosting er, at vægten for forklassificerede resultater ikke øges, i stedet forsøger Gradient Boosting-metoden at optimere den tidligere lærings tabsfunktion ved at tilføje en ny model, der tilføjer svage elever for at reducere tabsfunktionen.

Hovedideen her er at overvinde fejlene i den foregående elevs forudsigelser. Denne type boosting har tre hovedkomponenter:

  1. Tabsfunktion der skal forbedres.

  2. Svag elev til beregning af forudsigelser og dannelse af stærke elever.

  3. An Additiv model der regulerer tabsfunktionen.

Ligesom AdaBoost kan Gradient Boosting også bruges til både klassificerings- og regressionsproblemer.

XGBoost

XGBoost er en avanceret version af Gradient boosting-metoden, det betyder bogstaveligt talt eXtreme Gradient Boosting. XGBoost udviklet af Tianqi Chen falder ind under kategorien Distribueret Machine Learning Community (DMLC).

Hovedformålet med denne algoritme er at øge hastigheden og effektiviteten af ​​beregningen. Gradient Descent Boosting-algoritmen beregner output med en langsommere hastighed, da de sekventielt analyserer datasættet, og derfor bruges XGBoost til at øge eller ekstremt øge ydeevnen for modellen.

XGBoost - Boosting Machine Learning - Edureka

XGBoost er designet til at fokusere på beregningshastighed og modeleffektivitet. De vigtigste funktioner leveret af XGBoost er:

  • Parallelly skaber beslutningstræer.

  • Implementering af distribuerede databehandlingsmetoder til evaluering af store og komplekse modeller.

  • Brug af Out-of-Core Computing til at analysere enorme datasæt.

  • Implementering af cacheoptimering for at udnytte ressourcerne bedst muligt.

Så disse varde forskellige typer Boosting Machine Learning-algoritmer. For at gøre tingene interessante vil vi i nedenstående afsnit køre en demo for at se, hvordan boosting-algoritmer kan implementeres i Python.

Boosting Machine Learning In Python

En kort ansvarsfraskrivelse: Jeg bruger Python til at køre denne demo, så hvis du ikke kender Python, kan du gå gennem følgende blogs:

  1. Sådan lærer du Python 3 fra Scratch - En begyndervejledning

Nu er det tid til at gøre dine hænder beskidte og begynde at kode.

Problemformulering: At studere et svampedatasæt og opbygge en Machine Learning-model, der kan klassificere en svamp som enten giftig eller ej ved at analysere dens funktioner.

Beskrivelse af datasæt: Dette datasæt giver en detaljeret beskrivelse af hypotetiske prøver i overensstemmelse med 23 arter af gillede svampe. Hver art er klassificeret som enten spiselige svampe eller ikke-spiselige (giftige).

Logik: At bygge en Machine Learning-model ved hjælp af en af ​​Boosting-algoritmerne for at forudsige, om en svamp er spiselig eller ej.

Trin 1: Importer de nødvendige pakker

fra sklearn.ensemble importerer AdaBoostClassifier fra sklearn.preprocessing import LabelEncoder fra sklearn.tree import DecisionTreeClassifier importerer pandas som pd # Import train_test_split-funktion fra sklearn.model_selection import train_test_split # Import import scikit-lær metriclear modul til nøjagtighed

Trin 2: Importer datasættet

# Indlæs i datasættet = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Trin 3: Databehandling

#Definer kolonnenavn datasæt.kolonner = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'blå mærker', 'lugt', 'gill-attachment', 'gill-spacing ',' gælstørrelse ',' gælfarve ',' stilk-form ',' stilk-rod ',' stilk-overflade-over-ring ',' stilk-overflade-under-ring ',' stilk-farve -over-ring ',' stilk-farve-under-ring ',' slør-type ',' slør-farve ',' ring-nummer ',' ring-type ',' spore-print-farve ',' befolkning ',' habitat '] for etiket i datasæt.kolonner: datasæt [label] = LabelEncoder (). fit (datasæt [label]). transform (datasæt [label]) #Displayoplysninger om datasættet (dataset.info ( )) Int64Index: 8124 poster, 6074 til 686 datakolonner (i alt 23 kolonner): mål 8124 ikke-null int32 cap-form 8124 ikke-null int32 cap-overflade 8124 ikke-null int32 cap-farve 8124 ikke-null int32 blå mærker 8124 ikke-nul int32 lugt 8124 ikke-nul int32 gæl-vedhæftet fil 8124 ikke-nul int32 gælleafstand 8124 ikke-nul int32 gæl-størrelse 8124 ikke-nul int32 gælfarve 8124 ikke-nul int32 stilk-form 8124 ikke-nul int32 stalk-root 8124 ikke-nul int32 stilk-overflade-over-ring 8124 ikke-nul int32 stilk-overflade-under-ring 8124 ikke-nul int32 stilk-farve-over-ring 8124 ikke-nul int32 stilk-farve-under-ring 8124 ikke-nul int32 slør- type 8124 ikke-nul int32 slørfarve 8124 ikke-nul int32 ring-nummer 8124 ikke-nul int32 ringtype 8124 ikke-nul int32 spore-print-farve 8124 ikke-nul int32 befolkning 8124 ikke-nul int32 habitat 8124 ikke- null int32 dtypes: int32 (23) hukommelsesforbrug: 793.4 KB

Trin 4: Data splejsning

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)

Trin 5: Byg modellen

model = DecisionTreeClassifier (kriterium = 'entropy', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

I ovenstående kodestykke har vi implementeret AdaBoost-algoritmen. Funktionen 'AdaBoostClassifier' tager tre vigtige parametre:

  • base_estimator: Basisestimatoren (svag elev) er beslutningstræer som standard
  • n_estimator: Dette felt angiver antallet af baselever, der skal bruges.
  • learning_rate: Dette felt specificerer læringshastigheden, som vi har indstillet til standardværdien, dvs. 1.
#Passer modellen med træningsdata boostmodel = AdaBoost.fit (X_train, Y_train)

Trin 6: Modelevaluering

#Evaluer nøjagtigheden af ​​modellen y_pred = boostmodel.predict (X_test) forudsigelser = metrics.accuracy_score (Y_test, y_pred) # Beregning af nøjagtigheden i procent udskrivning ('Nøjagtigheden er:', forudsigelser * 100, '%') Nøjagtigheden er: 100,0%

Vi har modtaget en nøjagtighed på 100%, hvilket er perfekt!

Så med dette kommer vi til en afslutning på denne Boosting Machine Learning Blog. Hvis du ønsker at lære mere om maskinlæring, kan du læse disse blogs:

Hvis du ønsker at tilmelde dig et komplet kursus om kunstig intelligens og maskinindlæring, har Edureka en specielt kurateret der gør dig dygtig i teknikker som Supervised Learning, Unsupervised Learning og Natural Language Processing. Det inkluderer træning i de nyeste fremskridt og tekniske tilgange inden for kunstig intelligens og maskinindlæring som dyb læring, grafiske modeller og forstærkningslæring.