En omfattende guide til å øke algoritmer for maskinlæring



Denne bloggen fokuserer helt på hvordan Boosting Machine Learning fungerer, og hvordan den kan implementeres for å øke effektiviteten til Machine Learning-modeller.

Med så mange fremskritt innen helsevesen, markedsføring, virksomhet og så videre, har det blitt et behov for å utvikle mer avansert og kompleks . Boosting Machine Learning er en slik teknikk som kan brukes til å løse komplekse, datadrevne, virkelige problemer. Denne bloggen er helt fokusert på hvordan Boosting Machine Learning fungerer og hvordan den kan implementeres for å øke effektiviteten til Machine Learning-modeller.

For å få inngående kunnskap om kunstig intelligens og maskinlæring, kan du registrere deg for live av Edureka med 24/7 support og levetidstilgang.





Her er en liste over emner som vil bli dekket i denne bloggen:

  1. Hvorfor boosting brukes?
  2. Hva er boosting?
  3. Hvordan Boosting Algorithm Works?
  4. Typer av boosting
  5. Demo

Hvorfor brukes boosting?

For å løse vanskelige problemer krever vi mer avanserte teknikker. La oss anta at når du fikk et datasett med bilder som inneholder bilder av katter og hunder, ble du bedt om å bygge en modell som kan klassifisere disse bildene i to separate klasser. Som alle andre, vil du begynne med å identifisere bildene ved å bruke noen regler, som gitt nedenfor:



  1. Bildet har spisse ører: Cat

  2. Bildet har kattformede øyne: Cat

  3. Bildet har større lemmer: Hund



  4. Bildet har skjerpet klør: Katt

    hvordan snu streng i python
  5. Bildet har en bredere munnstruktur: Hund

Alle disse reglene hjelper oss med å identifisere om et bilde er en hund eller en katt, men hvis vi skulle klassifisere et bilde basert på en individuell (enkelt) regel, ville spådommen være feil. Hver av disse reglene, hver for seg, kalles svake elever fordi disse reglene ikke er sterke nok til å klassifisere et bilde som en katt eller hund.

Derfor, for å sikre at prediksjonen vår er mer nøyaktig, kan vi kombinere spådommen fra hver av disse svake elevene ved å bruke majoritetsregelen eller det vektede gjennomsnittet. Dette er en sterk lærermodell.

I eksemplet ovenfor har vi definert 5 svake elever, og flertallet av disse reglene (dvs. 3 av 5 elever spår bildet som en katt) gir oss spådommer at bildet er en katt. Derfor er vår endelige produksjon en katt.

Så dette bringer oss til spørsmålet,

Hva er boosting?

Boosting er en ensemble-læringsteknikk som bruker et sett med maskinlæringsalgoritmer for å konvertere svake elever til sterke elever for å øke nøyaktigheten til modellen.

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

Hva er boosting - Boosting Machine Learning - Edureka

Som jeg nevnte er Boosting en ensemble-læringsmetode, men hva er egentlig ensemble-læring?

Hva er ensemble i maskinlæring?

Ensemblelæring er en metode som brukes til å forbedre ytelsen til Machine Learning-modellen ved å kombinere flere elever. Sammenlignet med en enkelt modell bygger denne typen læring modeller med forbedret effektivitet og nøyaktighet. Dette er nøyaktig hvorfor ensemblemetoder brukes til å vinne markedsledende konkurranser som Netflix-anbefalingskonkurransen, Kaggle-konkurranser og så videre.

Hva er ensemblelæring - Boosting Machine Learning - Edureka

Nedenfor har jeg også diskutert forskjellen mellom Boosting og Bagging.

Boosting vs Bagging

Ensemble læring kan utføres på to måter:

  1. Sekvensielt ensemble, populært kjent som boosting , her blir de svake elevene produsert sekvensielt i løpet av treningsfasen. Ytelsen til modellen forbedres ved å tildele høyere vekt til de forrige, feil klassifiserte prøvene. Et eksempel på økning er AdaBoost-algoritmen.

  2. Parallell sett , populært kjent som bagging , her blir de svake elevene produsert parallelt i løpet av treningsfasen. Ytelsen til modellen kan økes ved parallelt å trene et antall svake elever på oppstartede datasett. Et eksempel på bagging er Random Forest algoritme.

I denne bloggen vil jeg fokusere på Boosting-metoden, så i delen nedenfor vil vi forstå hvordan boostingsalgoritmen fungerer.

Hvordan Boosting Algorithm Works?

Det grunnleggende prinsippet bak arbeidet med boosting-algoritmen er å generere flere svake elever og kombinere deres spådommer for å danne en sterk regel. Disse svake reglene genereres ved å bruke basale maskinlæringsalgoritmer på forskjellige distribusjoner av datasettet. Disse algoritmene genererer svake regler for hver iterasjon. Etter flere iterasjoner blir de svake elevene kombinert for å danne en sterk elev som vil forutsi et mer nøyaktig resultat.

Hvordan fungerer Boosting Algorithm - Boosting Machine Learning - Edureka

Slik fungerer algoritmen:

Trinn 1: Basealgoritmen leser dataene og tildeler samme vekt til hver prøveobservasjon.

Steg 2: Falske spådommer fra baselæreren identifiseres. I neste iterasjon tildeles disse falske spådommene til den neste baselæreren med høyere vekt på disse uriktige spådommene.

Trinn 3: Gjenta trinn 2 til algoritmen kan klassifisere utdataene riktig.

Derfor er hovedmålet med Boosting for å fokusere mer på spådommer.

Nå som vi vet hvordan boostingsalgoritmen fungerer, la oss forstå de forskjellige typene boosting-teknikker.

Typer av boosting

Det er tre hovedmåter som boosting kan utføres på:

  1. Adaptive Boosting eller AdaBoost

  2. Gradient Boosting

  3. XGBoost

Jeg skal diskutere det grunnleggende bak hver av disse typene.

Adaptiv økning

  • AdaBoost implementeres ved å kombinere flere svake elever i en enkelt sterk elev.

  • De svake elevene i AdaBoost tar hensyn til en enkelt innspillingsfunksjon og trekker ut et enkelt delt beslutningstreet som kalles beslutningsstubben. Hver observasjon veies likt mens den første beslutningstubben trekkes ut.

  • Resultatene fra den første beslutningsstubben blir analysert, og hvis noen observasjoner er feilaktig klassifisert, tildeles de høyere vekter.

  • Legg ut dette, en ny beslutningsstubbe tegnes ved å betrakte observasjonene med høyere vekter som mer betydningsfulle.

  • Igjen, hvis noen observasjoner er feilklassifisert, får de høyere vekt, og denne prosessen fortsetter til alle observasjonene faller i riktig klasse.

  • Adaboost kan brukes til både klassifisering og regresjonsbaserte problemer, men det brukes oftere til klassifiseringsformål.

Gradient Boosting

Gradient Boosting er også basert på sekvensiell ensemblelæring. Her genereres baselærerne sekvensielt på en slik måte at den nåværende baselæreren alltid er mer effektiv enn den forrige, dvs. den generelle modellen forbedres sekvensielt med hver iterasjon.

Forskjellen i denne typen boosting er at vektene for feilklassifiserte resultater ikke økes, i stedet prøver Gradient Boosting-metoden å optimalisere tapsfunksjonen til den forrige eleven ved å legge til en ny modell som legger til svake elever for å redusere tapsfunksjonen.

Hovedideen her er å overvinne feilene i forrige lærers spådommer. Denne typen boosting har tre hovedkomponenter:

  1. Tap funksjon som må forbedres.

  2. Svak elev for beregning av spådommer og dannelse av sterke elever.

  3. An Tilsetningsmodell som vil regulere tapsfunksjonen.

I likhet med AdaBoost kan Gradient Boosting også brukes til både klassifiserings- og regresjonsproblemer.

XGBoost

XGBoost er en avansert versjon av Gradient boosting-metoden, det betyr bokstavelig talt eXtreme Gradient Boosting. XGBoost utviklet av Tianqi Chen, faller inn under kategorien Distributed Machine Learning Community (DMLC).

Hovedmålet med denne algoritmen er å øke hastigheten og effektiviteten i beregningen. Gradient Descent Boosting-algoritmen beregner utgangen med en lavere hastighet siden de sekvensielt analyserer datasettet, og derfor brukes XGBoost til å øke eller ekstremt øke ytelsen til modellen.

XGBoost - Boosting Machine Learning - Edureka

XGBoost er designet for å fokusere på beregningshastighet og modelleffektivitet. De viktigste funksjonene som tilbys av XGBoost er:

  • Parallell skaper beslutningstrær.

  • Implementering av distribuerte databehandlingsmetoder for evaluering av store og komplekse modeller.

    hva brukes sas programmering til
  • Ved hjelp av Out-of-Core Computing for å analysere store datasett.

  • Implementering av hurtigbufferoptimalisering for å utnytte ressursene best mulig.

Så disse var detde forskjellige typene Boosting Machine Learning-algoritmer. For å gjøre ting interessante, vil vi i underdelen kjøre en demo for å se hvordan boosting-algoritmer kan implementeres i Python.

Boosting Machine Learning In Python

En kort ansvarsfraskrivelse: Jeg bruker Python til å kjøre denne demoen, så hvis du ikke kjenner Python, kan du gå gjennom følgende blogger:

  1. Hvordan lære Python 3 fra Scratch - en nybegynnerveiledning

Nå er det på tide å skitne hendene og begynne å kode.

Problemstilling: Å studere et soppdatasett og bygge en maskinlæringsmodell som kan klassifisere en sopp som enten giftig eller ikke, ved å analysere funksjonene.

Beskrivelse av datasett: Dette datasettet gir en detaljert beskrivelse av hypotetiske prøver i samsvar med 23 arter av gilled sopp. Hver art er klassifisert som enten spiselig sopp eller ikke-spiselig (giftig).

Logikk: Å bygge en maskinlæringsmodell ved å bruke en av Boosting-algoritmene for å forutsi om en sopp er spiselig eller ikke.

Trinn 1: Importer de nødvendige pakkene

fra sklearn.ensemble importerer AdaBoostClassifier fra sklearn.preprocessing import LabelEncoder fra sklearn.tree import DecisionTreeClassifier importerer pandas som pd # Importer train_test_split-funksjon fra sklearn.model_selection import train_test_split #Import scikit-lær beregninger modul for nøyaktighet

Trinn 2: Importer datasettet

# Last i datasettet = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Trinn 3: Databehandling

#Definer kolonnenavn datasett.kolonner = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'blåmerker', 'lukt', 'gill-vedlegg', 'gill-avstand ',' gjelle-størrelse ',' gjelle-farge ',' stilk-form ',' stilk-rot ',' stilk-overflate-over-ring ',' stilk-overflate-under-ring ',' stilk-farge -over-ring ',' stilk-farge-under-ring ',' slør-type ',' slør-farge ',' ring-nummer ',' ring-type ',' spore-print-farge ',' befolkning ',' habitat '] for etikett i datasett.kolonner: datasett [label] = LabelEncoder (). fit (datasett [label]). transform (datasett [label]) #Vis informasjon om datasettutskriften (dataset.info ( )) Int64Index: 8124 oppføringer, 6074 til 686 datakolonner (totalt 23 kolonner): mål 8124 ikke-null int32 cap-form 8124 ikke-null int32 cap-overflate 8124 ikke-null int32 cap-farge 8124 ikke-null int32 blåmerker 8124 ikke-null int32 lukt 8124 ikke-null int32 gjelle-vedlegg 8124 ikke-null int32 gjelle-avstand 8124 ikke-null int32 gjelle-størrelse 8124 ikke-null int32 gjelle-farge 8124 ikke-null int32 stilk-form 8124 ikke-null int32 stilk-rot 8124 ikke-null int32 stilk-overflate-over-ring 8124 ikke-null int32 stilk-overflate-under-ring 8124 ikke-null int32 stilk-farge-over-ring 8124 ikke-null int32 stilk-farge-under-ring 8124 ikke-null int32 slør- type 8124 ikke-null int32 slørfarge 8124 ikke-null int32 ring-nummer 8124 ikke-null int32 ring-type 8124 ikke-null int32 spor-trykk-farge 8124 ikke-null int32 populasjon 8124 ikke-null int32 habitat 8124 ikke- null int32 dtypes: int32 (23) minnebruk: 793,4 KB

Trinn 4: Data Splicing

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)

Trinn 5: Bygg modellen

modell = DecisionTreeClassifier (kriterium = 'entropi', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = modell, n_estimators = 400, learning_rate = 1)

I kodebiten ovenfor har vi implementert AdaBoost-algoritmen. Funksjonen ‘AdaBoostClassifier’ tar tre viktige parametere:

  • base_estimator: Basisestimatoren (svak elev) er beslutningstrær som standard
  • n_estimator: Dette feltet spesifiserer antall baselever som skal brukes.
  • learning_rate: Dette feltet spesifiserer læringsgraden, som vi har satt til standardverdien, dvs. 1.
#Pass modellen med treningsdata boostmodel = AdaBoost.fit (X_train, Y_train)

Trinn 6: Modellevaluering

#Evaluere nøyaktigheten til modellen y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calculating the accuracy in percentage print ('The accuracy is:', predictions * 100, '%') Nøyaktigheten er: 100,0%

Vi har fått en nøyaktighet på 100%, som er perfekt!

Så med dette kommer vi til en slutt på denne Boosting Machine Learning-bloggen. Hvis du ønsker å lære mer om maskinlæring, kan du lese disse bloggene:

Hvis du ønsker å melde deg på et komplett kurs om kunstig intelligens og maskinlæring, har Edureka en spesiell kurat som vil gjøre deg dyktig i teknikker som Supervised Learning, Unsupervised Learning, and Natural Language Processing. Det inkluderer opplæring i de siste fremskrittene og tekniske tilnærmingene innen kunstig intelligens og maskinlæring som dyp læring, grafiske modeller og forsterkningslæring.