Een uitgebreide gids voor het stimuleren van machine learning-algoritmen



Deze blog is volledig gericht op hoe Boosting Machine Learning werkt en hoe het kan worden geïmplementeerd om de efficiëntie van Machine Learning-modellen te vergroten.

Met zoveel vorderingen op het gebied van gezondheidszorg, marketing, het bedrijfsleven enzovoort, is het een noodzaak geworden om geavanceerdere en complexere . Het stimuleren van machine learning is zo'n techniek die kan worden gebruikt om complexe, datagestuurde, realistische problemen op te lossen. Deze blog is volledig gericht op hoe Boosting Machine Learning werkt en hoe het kan worden geïmplementeerd om de efficiëntie van Machine Learning-modellen te vergroten.

Om diepgaande kennis te krijgen van kunstmatige intelligentie en machine learning, kunt u zich inschrijven voor live door Edureka met 24/7 ondersteuning en levenslange toegang.





Hier is een lijst met onderwerpen die aan bod komen in deze blog:

  1. Waarom wordt boosting gebruikt?
  2. Wat stimuleert?
  3. Hoe werkt het stimuleren van algoritme?
  4. Soorten boosting
  5. Demo

Waarom wordt boosting gebruikt?

Om ingewikkelde problemen op te lossen hebben we meer geavanceerde technieken nodig. Stel dat u op basis van een gegevensset met afbeeldingen met afbeeldingen van katten en honden werd gevraagd een model te bouwen dat deze afbeeldingen in twee afzonderlijke klassen kan classificeren. Net als elke andere persoon, begint u met het identificeren van de afbeeldingen door enkele regels te gebruiken, zoals hieronder weergegeven:



  1. De afbeelding heeft puntige oren: Cat

  2. De afbeelding heeft katvormige ogen: Cat

  3. De afbeelding heeft grotere ledematen: hond



  4. De afbeelding heeft verscherpte klauwen: Cat

  5. De afbeelding heeft een bredere mondstructuur: hond

Al deze regels helpen ons te identificeren of een afbeelding een hond of een kat is, maar als we een afbeelding zouden classificeren op basis van een individuele (enkele) regel, zou de voorspelling onjuist zijn. Elk van deze regels, afzonderlijk, worden zwakke leerlingen genoemd, omdat deze regels niet sterk genoeg zijn om een ​​afbeelding als kat of hond te classificeren.

Om ervoor te zorgen dat onze voorspelling nauwkeuriger is, kunnen we daarom de voorspelling van elk van deze zwakke leerlingen combineren door de meerderheidsregel of het gewogen gemiddelde te gebruiken. Dit maakt een sterk leerlingmodel.

In het bovenstaande voorbeeld hebben we 5 zwakke leerlingen gedefinieerd en de meeste van deze regels (d.w.z. 3 van de 5 leerlingen voorspellen het beeld als een kat) geeft ons de voorspelling dat de afbeelding een kat is. Daarom is onze uiteindelijke output een kat.

Dus dit brengt ons bij de vraag,

Wat stimuleert?

Boosting is een techniek voor het leren van ensembles die een reeks Machine Learning-algoritmen gebruikt om zwakke leerlingen om te zetten in sterke leerlingen om zo de nauwkeurigheid van het model te vergroten.

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

Wat stimuleert - Machine learning stimuleren - Edureka

Zoals ik al zei: Boosting is een methode om ensembles te leren, maar wat is ensemble-leren precies?

Wat is ensemble bij machine learning?

Ensemble-leren is een methode die wordt gebruikt om de prestaties van het Machine Learning-model te verbeteren door verschillende leerlingen te combineren. In vergelijking met een enkel model, bouwt dit type leren modellen op met verbeterde efficiëntie en nauwkeurigheid. Dit is precies waarom ensemblemethoden worden gebruikt om marktleidende competities te winnen, zoals de Netflix-aanbevelingscompetitie, Kaggle-competities, enzovoort.

Wat is ensemble-leren - Machine learning stimuleren - Edureka

Hieronder heb ik ook het verschil tussen Boosting en Bagging besproken.

Stimuleren versus inpakken

Ensemble-leren kan op twee manieren worden uitgevoerd:

  1. Sequentieel ensemble, in de volksmond bekend als stimuleren , hier worden de zwakke leerlingen opeenvolgend geproduceerd tijdens de trainingsfase. De prestaties van het model worden verbeterd door een hoger gewicht toe te kennen aan de vorige, onjuist geclassificeerde monsters. Een voorbeeld van boosting is het AdaBoost-algoritme.

  2. Parallelle set , in de volksmond bekend als zakken , hier worden de zwakke leerlingen parallel geproduceerd tijdens de trainingsfase. De prestaties van het model kunnen worden verhoogd door een aantal zwakke leerlingen parallel te trainen op bootstrapped datasets. Een voorbeeld van bagging is het Random Forest algoritme.

In deze blog zal ik me concentreren op de Boosting-methode, dus in het onderstaande gedeelte zullen we begrijpen hoe het boost-algoritme werkt.

Hoe werkt het stimuleren van algoritme?

Het basisprincipe achter de werking van het stimuleringsalgoritme is om meerdere zwakke leerlingen te genereren en hun voorspellingen te combineren tot één sterke regel. Deze zwakke regels worden gegenereerd door basale Machine Learning-algoritmen toe te passen op verschillende distributies van de dataset. Deze algoritmen genereren zwakke regels voor elke iteratie. Na meerdere iteraties worden de zwakke leerlingen gecombineerd om een ​​sterke leerling te vormen die een nauwkeuriger resultaat zal voorspellen.

Hoe werkt het stimuleren van algoritmen - stimuleert machine learning - Edureka

Hier is hoe het algoritme werkt:

Stap 1: Het basisalgoritme leest de gegevens en kent een gelijk gewicht toe aan elke monsterwaarneming.

Stap 2: Valse voorspellingen van de basisleerder worden geïdentificeerd. In de volgende iteratie worden deze valse voorspellingen toegewezen aan de volgende basisleerder met een hoger gewicht op deze onjuiste voorspellingen.

Stap 3: Herhaal stap 2 totdat het algoritme de uitvoer correct kan classificeren.

Daarom is het belangrijkste doel van Boosting om meer te focussen op verkeerd geclassificeerde voorspellingen.

Nu we weten hoe het boostalgoritme werkt, gaan we de verschillende soorten boosttechnieken eens nader bekijken.

Soorten boosting

Er zijn drie belangrijke manieren waarop boosting kan worden uitgevoerd:

  1. Adaptieve boosting of AdaBoost

  2. Verloop stimuleren

  3. XGBoost

Ik zal de basis achter elk van deze typen bespreken.

Adaptieve boost

  • AdaBoost wordt geïmplementeerd door verschillende zwakke leerlingen te combineren tot één sterke leerling.

  • De zwakke leerlingen in AdaBoost houden rekening met een enkele invoerfunctie en tekenen een enkele gesplitste beslissingsboom genaamd de beslissingsstomp. Elke waarneming wordt gelijk gewogen bij het uittrekken van de eerste beslissingsstomp.

  • De resultaten van de eerste beslissingsstronk worden geanalyseerd en als waarnemingen ten onrechte worden geclassificeerd, krijgen ze een hoger gewicht.

  • Hierna wordt een nieuwe beslissingsstronk getrokken door de waarnemingen met hogere gewichten als belangrijker te beschouwen.

  • Nogmaals, als observaties verkeerd worden geclassificeerd, krijgen ze een hoger gewicht en dit proces gaat door totdat alle observaties in de juiste klasse vallen.

  • Adaboost kan worden gebruikt voor zowel classificatie als op regressie gebaseerde problemen, maar wordt vaker gebruikt voor classificatiedoeleinden.

Verloop stimuleren

Gradient Boosting is ook gebaseerd op sequentieel ensemble-leren. Hier worden de basisleerlingen opeenvolgend gegenereerd op een zodanige manier dat de huidige basisleerder altijd effectiever is dan de vorige, d.w.z. het algehele model verbetert opeenvolgend met elke iteratie.

Het verschil in dit type boosting is dat de gewichten voor verkeerd geclassificeerde resultaten niet worden verhoogd, in plaats daarvan probeert de Gradient Boosting-methode de verliesfunctie van de vorige leerling te optimaliseren door een nieuw model toe te voegen dat zwakke leerlingen toevoegt om de verliesfunctie te verminderen.

Het belangrijkste idee hier is om de fouten in de voorspellingen van de vorige leerling te overwinnen. Dit type boosting heeft drie hoofdcomponenten:

  1. Verliesfunctie dat moet worden verbeterd.

  2. Zwakke leerling voor het berekenen van voorspellingen en het vormen van sterke leerlingen.

  3. Een Additief model dat zal de verliesfunctie regulariseren.

Net als AdaBoost kan Gradient Boosting ook worden gebruikt voor zowel classificatie- als regressieproblemen.

XGBoost

XGBoost is een geavanceerde versie van de Gradient-boosting-methode, het betekent letterlijk eXtreme Gradient Boosting. XGBoost ontwikkeld door Tianqi Chen, valt onder de categorie Distributed Machine Learning Community (DMLC).

Het belangrijkste doel van dit algoritme is om de snelheid en efficiëntie van berekeningen te verhogen. Het Gradient Descent Boosting-algoritme berekent de uitvoer langzamer omdat ze de gegevensset sequentieel analyseren, daarom wordt XGBoost gebruikt om de prestaties van het model te verbeteren of extreem te verbeteren.

XGBoost - Machine learning stimuleren - Edureka

XGBoost is ontworpen om zich te concentreren op rekensnelheid en modelefficiëntie. De belangrijkste functies van XGBoost zijn:

  • Parallelly creëert beslissingsbomen.

  • Implementeren van gedistribueerde rekenmethoden voor het evalueren van grote en complexe modellen.

  • Out-of-Core Computing gebruiken om enorme datasets te analyseren.

  • Cache-optimalisatie implementeren om optimaal gebruik te maken van bronnen.

Dus deze warende verschillende soorten Boosting Machine Learning-algoritmen. Om dingen interessant te maken, zullen we in het onderstaande gedeelte een demo uitvoeren om te zien hoe boost-algoritmen kunnen worden geïmplementeerd in Python.

Machine learning in Python stimuleren

Een korte disclaimer: ik ga Python gebruiken om deze demo uit te voeren, dus als je Python niet kent, kun je de volgende blogs bekijken:

  1. Hoe Python 3 van Scratch te leren - een gids voor beginners

Nu is het tijd om uw handen vuil te maken en te beginnen met coderen.

Probleemstelling: Een gegevensset van een paddenstoel bestuderen en een Machine Learning-model bouwen dat een paddenstoel als giftig of niet kan classificeren door de kenmerken ervan te analyseren.

Beschrijving dataset: Deze dataset geeft een gedetailleerde beschrijving van hypothetische monsters in overeenstemming met 23 soorten kieuwpaddestoelen. Elke soort is geclassificeerd als eetbare paddenstoelen of niet-eetbare (giftige) paddenstoelen.

Logica: Een Machine Learning-model bouwen met behulp van een van de Boosting-algoritmen om te voorspellen of een paddenstoel eetbaar is of niet.

Stap 1: Importeer de vereiste pakketten

uit sklearn.ensemble importeer AdaBoostClassifier uit sklearn.preprocessing import LabelEncoder uit sklearn.tree import DecisionTreeClassifier importeer panda's als pd # Importeer train_test_split-functie uit sklearn.model_selection import train_test_split # Importeer scikit-learn metrics-module voor het importeren van meetnauwkeurigheid uit sklearn.model_split

Stap 2: Importeer de dataset

# Laad in de datadataset = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Stap 3: Gegevensverwerking

#Definieer de kolomnamen dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'kneuzingen', 'geur', 'gill-attachment', 'gill-spacing ',' kieuwgrootte ',' kieuwkleur ',' steelvorm ',' steelwortel ',' steel-oppervlak-boven-ring ',' steel-oppervlak-onder-ring ',' steel-kleur -boven-ring ',' steel-kleur-onder-ring ',' sluier-type ',' sluier-kleur ',' ringnummer ',' ring-type ',' sporenprint-kleur ',' bevolking ',' habitat '] voor label in dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Geef informatie weer over de dataset print (dataset.info ( )) Int64Index: 8124 vermeldingen, 6074 tot 686 gegevenskolommen (totaal 23 kolommen): doel 8124 niet-nul int32 kapvorm 8124 niet-nul int32 kap-oppervlak 8124 niet-nul int32 kap-kleur 8124 niet-nul int32 kneuzingen 8124 niet-nul int32 geur 8124 niet-nul int32 kieuwbevestiging 8124 niet-nul int32 kieuwafstand 8124 niet-nul int32 kieuwmaat 8124 niet-nul int32 kieuwkleur 8124 niet-nul int32 steelvorm 8124 niet-nul int32 stalk-root 8124 niet-null int32 stengel-oppervlak-boven-ring 8124 niet-nul int32 stengel-oppervlak-onder-ring 8124 niet-nul int32 stengel-kleur-boven-ring 8124 niet-nul int32 stengel-kleur-onder-ring 8124 niet-nul int32 sluier- type 8124 niet-nul int32 sluier-kleur 8124 niet-nul int32 ringnummer 8124 niet-nul int32 ringtype 8124 niet-nul int32 sporenprint-kleur 8124 niet-nul int32 populatie 8124 niet-nul int32 habitat 8124 niet- null int32 dtypes: int32 (23) geheugengebruik: 793,4 KB

Stap 4: Gegevenssplitsing

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)

Stap 5: Bouw het model

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

In het bovenstaande codefragment hebben we het AdaBoost-algoritme geïmplementeerd. De ‘AdaBoostClassifier’ -functie heeft drie belangrijke parameters:

  • base_estimator: De basisschatter (zwakke leerling) is standaard beslissingsbomen
  • n_estimator: dit veld specificeert het aantal te gebruiken basisleerders.
  • learning_rate: dit veld specificeert de leersnelheid, die we hebben ingesteld op de standaardwaarde, d.w.z. 1.
#Fit het model met trainingsgegevens boostmodel = AdaBoost.fit (X_train, Y_train)

Stap 6: Modelevaluatie

#Evalueer de nauwkeurigheid van het model y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Bereken van de nauwkeurigheid in percentage print ('De nauwkeurigheid is:', voorspellingen * 100, '%') De nauwkeurigheid is: 100,0%

We hebben een nauwkeurigheid van 100% ontvangen, wat perfect is!

Hiermee komen we aan het einde van deze Boosting Machine Learning Blog. Als je meer wilt weten over Machine Learning, kun je deze blogs lezen:

  1. som van cijfers in java

Als je je wilt inschrijven voor een complete cursus over kunstmatige intelligentie en machine learning, heeft Edureka een speciaal samengesteld dat zal je bekwaam maken in technieken als begeleid leren, onbewaakt leren en natuurlijke taalverwerking. Het omvat training over de nieuwste ontwikkelingen en technische benaderingen op het gebied van kunstmatige intelligentie en machine learning, zoals diep leren, grafische modellen en versterkend leren.