En omfattande guide för att öka algoritmer för maskininlärning



Den här bloggen fokuserar helt och hållet på hur Boosting Machine Learning fungerar och hur det kan implementeras för att öka effektiviteten i Machine Learning-modeller.

Med så många framsteg inom hälso- och sjukvård, marknadsföring, affärer och så vidare har det blivit ett behov av att utveckla mer avancerad och komplex . Boosting Machine Learning är en sådan teknik som kan användas för att lösa komplexa, datadrivna verkliga problem. Denna blogg är helt fokuserad på hur Boosting Machine Learning fungerar och hur den kan implementeras för att öka effektiviteten hos Machine Learning-modeller.

För att få fördjupad kunskap om artificiell intelligens och maskininlärning kan du anmäla dig till live av Edureka med support dygnet runt och livstidsåtkomst.





Här är en lista med ämnen som kommer att behandlas i den här bloggen:

  1. Varför används förstärkning?
  2. Vad är boosting?
  3. Hur Boosting Algorithm fungerar?
  4. Typer av Boosting
  5. Demo

Varför används boosting?

För att lösa komplicerade problem kräver vi mer avancerade tekniker. Låt oss anta att när du fick en datauppsättning med bilder som innehåller bilder av katter och hundar, blev du ombedd att bygga en modell som kan klassificera dessa bilder i två separata klasser. Som alla andra kommer du att börja med att identifiera bilderna med hjälp av några regler, som anges nedan:



  1. Bilden har spetsiga öron: Cat

  2. Bilden har kattformade ögon: Katt

  3. Bilden har större lemmar: Hund



  4. Bilden har vässade klor: Katt

  5. Bilden har en bredare munstruktur: Hund

Alla dessa regler hjälper oss att identifiera om en bild är en hund eller en katt, men om vi skulle klassificera en bild baserat på en enskild (enstaka) regel skulle förutsägelsen vara felaktig. Var och en av dessa regler, individuellt, kallas svaga elever eftersom dessa regler inte är tillräckligt starka för att klassificera en bild som en katt eller hund.

För att säkerställa att vår förutsägelse är mer exakt kan vi därför kombinera förutsägelsen från var och en av dessa svaga elever genom att använda majoritetsregeln eller det vägda genomsnittet. Detta är en stark lärandemodell.

I exemplet ovan har vi definierat 5 svaga elever och majoriteten av dessa regler (dvs. 3 av 5 elever förutsäger bilden som en katt) ger oss förutsägelsen att bilden är en katt. Därför är vår slutliga produktion en katt.

Så detta leder oss till frågan,

Vad är boosting?

Boosting är en ensembleinlärningsteknik som använder en uppsättning maskininlärningsalgoritmer för att konvertera svaga elever till starka elever för att öka noggrannheten i modellen.

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

Vad är Boosting - Boosting Machine Learning - Edureka

Som jag nämnde är Boosting en ensembleinlärningsmetod, men vad exakt är ensembleinlärning?

Vad är ensemble i maskininlärning?

Ensemble-lärande är en metod som används för att förbättra prestandan hos Machine Learning-modellen genom att kombinera flera elever. Jämfört med en enda modell bygger den här typen av lärande modeller med förbättrad effektivitet och noggrannhet. Detta är exakt varför ensemblemetoder används för att vinna marknadsledande tävlingar som Netflix-rekommendationstävlingen, Kaggle-tävlingar och så vidare.

hur man använder iterator i java

Vad är ensembleinlärning - Boosting Machine Learning - Edureka

Nedan har jag också diskuterat skillnaden mellan Boosting och Bagging.

Boosting vs Bagging

Ensembleinlärning kan utföras på två sätt:

  1. Sekventiell ensemble, populärt känd som öka , här produceras de svaga eleverna sekventiellt under träningsfasen. Modellens prestanda förbättras genom att de tidigare, felaktigt klassificerade proverna tilldelas en högre vikt. Ett exempel på att öka är AdaBoost-algoritmen.

  2. Parallelluppsättning , populärt känd som säckväv , här produceras de svaga eleverna parallellt under träningsfasen. Modellens prestanda kan ökas genom att parallellt utbilda ett antal svaga elever på datamängder med bootstrapped. Ett exempel på bagging är Random Forest algoritm.

I den här bloggen kommer jag att fokusera på Boosting-metoden, så i avsnittet nedan kommer vi att förstå hur boostingsalgoritmen fungerar.

Hur Boosting Algorithm fungerar?

Den grundläggande principen bakom den boostande algoritmen är att generera flera svaga elever och kombinera deras förutsägelser för att bilda en stark regel. Dessa svaga regler genereras genom att använda basmaskininlärningsalgoritmer på olika distributioner av datamängden. Dessa algoritmer genererar svaga regler för varje iteration. Efter flera iterationer kombineras de svaga eleverna för att bilda en stark elev som kommer att förutsäga ett mer exakt resultat.

Hur fungerar Boosting Algorithm - Boosting Machine Learning - Edureka

Så här fungerar algoritmen:

Steg 1: Basalgoritmen läser data och tilldelar varje viktobservation samma vikt.

Steg 2: Felaktiga förutsägelser från basläraren identifieras. I nästa iteration tilldelas dessa falska förutsägelser till nästa baslärare med högre vikt på dessa felaktiga förutsägelser.

Steg 3: Upprepa steg 2 tills algoritmen kan klassificera utdata korrekt.

Därför är huvudmålet med Boosting för att fokusera mer på missklassificerade förutsägelser.

Nu när vi vet hur boostningsalgoritmen fungerar, låt oss förstå de olika typerna av boostingstekniker.

Typer av Boosting

Det finns tre huvudsakliga sätt genom vilka boosting kan genomföras:

  1. Adaptive Boosting eller AdaBoost

  2. Gradient Boosting

    kommandoradsargument i javas exempelkod
  3. XGBoost

Jag kommer att diskutera grunderna bakom var och en av dessa typer.

Adaptiv ökning

  • AdaBoost implementeras genom att kombinera flera svaga elever till en enda stark inlärare.

  • De svaga eleverna i AdaBoost tar hänsyn till en enda inmatningsfunktion och drar ut ett enda delat beslutsträd som kallas beslutsstubben. Varje observation vägs lika samtidigt som den första beslutstubben dras ut.

  • Resultaten från den första beslutstubben analyseras och om några observationer klassificeras felaktigt tilldelas de högre vikter.

  • Lägg upp detta, en ny beslutsstump dras genom att betrakta observationerna med högre vikter som mer betydelsefulla.

  • Återigen om några observationer klassificeras felaktigt får de högre vikt och denna process fortsätter tills alla observationer faller i rätt klass.

  • Adaboost kan användas för både klassificerings- och regressionsbaserade problem, men det används oftare för klassificeringsändamål.

Gradient Boosting

Gradient Boosting är också baserat på sekventiell ensembleinlärning. Här genereras baslärarna sekventiellt på ett sådant sätt att den nuvarande basläraren alltid är effektivare än den tidigare, dvs. den övergripande modellen förbättras sekventiellt med varje iteration.

Skillnaden i denna typ av boosting är att vikterna för felklassificerade resultat inte ökas, istället försöker Gradient Boosting-metoden att optimera förlustfunktionen hos den tidigare eleven genom att lägga till en ny modell som lägger till svaga elever för att minska förlustfunktionen.

Huvudidén här är att övervinna felen i tidigare lärares förutsägelser. Denna typ av boosting har tre huvudkomponenter:

  1. Förlustfunktion det måste förbättras.

  2. Svag elev för att beräkna förutsägelser och skapa starka elever.

  3. Ett Tillsatsmodell som kommer att reglera förlustfunktionen.

Precis som AdaBoost kan Gradient Boosting också användas för både klassificerings- och regressionsproblem.

XGBoost

XGBoost är en avancerad version av Gradient boosting-metoden, det betyder bokstavligen eXtreme Gradient Boosting. XGBoost utvecklat av Tianqi Chen, faller under kategorin Distribuerad maskininlärningsgemenskap (DMLC).

Huvudsyftet med denna algoritm är att öka hastigheten och effektiviteten i beräkningen. Gradient Descent Boosting-algoritmen beräknar utdata i en lägre takt eftersom de sekventiellt analyserar datamängden, därför används XGBoost för att öka eller extremt öka prestandan hos modellen.

XGBoost - Boosting Machine Learning - Edureka

XGBoost är utformat för att fokusera på beräkningshastighet och modelleffektivitet. De viktigaste funktionerna som tillhandahålls av XGBoost är:

  • Parallelly skapar beslutsträd.

  • Implementering av distribuerade beräkningsmetoder för utvärdering av stora och komplexa modeller.

  • Använda Out-of-Core Computing för att analysera stora datamängder.

  • Implementera cache-optimering för att utnyttja resurserna på bästa sätt.

Så dessa varde olika typerna av Boosting Machine Learning-algoritmer. För att göra saker intressanta, i nedanstående avsnitt kommer vi att köra en demo för att se hur boostingsalgoritmer kan implementeras i Python.

Boosting Machine Learning In Python

En kort ansvarsfriskrivning: Jag använder Python för att köra denna demo, så om du inte känner till Python kan du gå igenom följande bloggar:

  1. Hur man lär sig Python 3 från Scratch - En nybörjarguide

    vad är instans i python

Nu är det dags att smutsa händerna och börja koda.

Problemförklaring: Att studera en svampdatamängd och bygga en maskininlärningsmodell som kan klassificera en svamp som antingen giftig eller inte genom att analysera dess funktioner.

Datauppsättningsbeskrivning: Denna datamängd ger en detaljerad beskrivning av hypotetiska prover i enlighet med 23 arter av gillade svampar. Varje art klassificeras antingen som ätliga svampar eller som ätbara (giftiga).

Logik: Att bygga en maskininlärningsmodell genom att använda en av Boosting-algoritmerna för att förutsäga om en svamp är ätbar eller inte.

Steg 1: Importera nödvändiga paket

från sklearn.ensemble importerar AdaBoostClassifier från sklearn.preprocessing importerar LabelEncoder från sklearn.tree import DecisionTreeClassifier importerar pandor som pd # Importera train_test_split-funktion från sklearn.model_selection importera train_test_split #Import scikit-lär metriclear metoden för noggrannhet

Steg 2: Importera datamängden

# Ladda i datamängden = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Steg 3: Databehandling

# Definiera kolumnnamnen dataset.column = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'blåmärken', 'lukt', 'gill-bifogad fil', 'gill-avstånd ',' gillstorlek ',' gillfärg ',' stjälkform ',' stjälk-rot ',' stjälk-yta-ovan-ring ',' stjälk-yta-under-ring ',' stjälk-färg -över-ring ',' stjälk-färg-under-ring ',' slöja-typ ',' slöja-färg ',' ring-nummer ',' ring-typ ',' spore-tryck-färg ',' befolkning ',' livsmiljö '] för etikett i dataset.column: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Display information om datasatsen print (dataset.info ( )) Int64Index: 8124 poster, 6074 till 686 datakolumner (totalt 23 kolumner): mål 8124 icke-null int32 cap-form 8124 icke-null int32 cap-yta 8124 icke-null int32 cap-färg 8124 icke-null int32 blåmärken 8124 icke-noll int32 lukt 8124 icke-noll int32 gill-fäste 8124 icke-noll int32 gill-avstånd 8124 icke-noll int32 gäl-storlek 8124 icke-noll int32 gill-färg 8124 icke-noll int32 stjälk-form 8124 icke-noll int32 stjälk-root 8124 icke-null int32 stjälk-yta-ovan-ring 8124 icke-noll int32 stjälk-yta-under-ring 8124 icke-noll int32 stjälk-färg-ovan-ring 8124 icke-noll int32 stjälk-färg-under-ring 8124 icke-noll int32 slöja- typ 8124 icke-null int32 slöja-färg 8124 icke-null int32 ringnummer 8124 icke-null int32 ring-typ 8124 icke-null int32 spore-tryck-färg 8124 icke-null int32 befolkning 8124 icke-null int32 livsmiljö 8124 icke- null int32 dtypes: int32 (23) minnesanvändning: 793,4 kB

Steg 4: Dataskarvning

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)

Steg 5: Bygg modellen

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

I kodavsnittet ovan har vi implementerat AdaBoost-algoritmen. Funktionen ”AdaBoostClassifier” tar tre viktiga parametrar:

  • base_estimator: Basestimatorn (svag elev) är beslutsträd som standard
  • n_estimator: Detta fält anger antalet baselever som ska användas.
  • learning_rate: Det här fältet anger inlärningshastigheten, som vi har ställt in till standardvärdet, dvs. 1.
#Passa modellen med träningsdata boostmodel = AdaBoost.fit (X_train, Y_train)

Steg 6: Modellutvärdering

#Värdera noggrannheten för modellen y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calculate the accuracy in percentage print ('The accuracy is:', predictions * 100, '%') The precision är: 100,0%

Vi har fått en noggrannhet på 100% vilket är perfekt!

Så med detta kommer vi till slutet av den här Boosting Machine Learning-bloggen. Om du vill lära dig mer om maskininlärning kan du läsa dessa bloggar:

Om du vill anmäla dig till en fullständig kurs om artificiell intelligens och maskininlärning har Edureka en speciell kurator som kommer att göra dig skicklig i tekniker som Supervised Learning, Oövervakat lärande och Natural Language Processing. Det inkluderar utbildning om de senaste framstegen och tekniska tillvägagångssätten inom artificiell intelligens och maskininlärning som djupinlärning, grafiska modeller och förstärkningslärande.