Zephyrnet-logo

Adaboost implementeren in Scikit-learn

Datum:

Bron: Auteursafbeelding

Het AdaBoost-algoritme, een afkorting van Adaptive Boosting, is een type Boosting-techniek die wordt gebruikt als Ensemble-methode bij Machine Learning. Het wordt Adaptive Boosting genoemd vanwege het feit dat de gewichten opnieuw worden toegewezen aan elke instantie, waarbij hogere gewichten worden toegewezen aan instanties die dat wel zijn. niet correct geclassificeerd – daarom ‘past’ het zich aan.

Als je meer wilt weten over ensemblemethoden en wanneer je ze kunt gebruiken, lees dan dit artikel: Wanneer zouden ensembletechnieken een goede keuze zijn?

Boosting is een methode die valt onder ensemble-machine learning-algoritmen en wordt gebruikt om fouten in voorspellende data-analyse te verminderen. Het doet dit door de voorspellingen van zwakke leerlingen te combineren. Boosting was meer een theoretisch concept voordat het een praktisch concept werd. 

Wil je meer weten over Boosting, lees dan dit artikel: Machine learning-algoritmen stimuleren: een overzicht

Terminologie

Wat is een zwakke leerling? Een zwakke leerling verwijst naar een eenvoudig model dat een enigszins vaardigheidsniveau heeft en iets beter presteert dan willekeurig toeval. 

Wat is een stronk? Met op bomen gebaseerde algoritmen staat een knooppunt met twee bladeren bekend als een stronk. Zwakke leerlingen zijn bijna altijd stompen.

Hoe werkt AdaBoost?

Het AdaBoost-algoritme maakt gebruik van korte beslissingsbomen tijdens de datatrainingsperiode. De instanties die onjuist zijn geclassificeerd, krijgen prioriteit en worden gebruikt als input voor het tweede model, dat bekend staat als zwakke leerlingen. Dit proces vindt steeds opnieuw plaats totdat het model probeert de voorspellingen van het model eerder te corrigeren. 

De ideeën achter AdaBoost:

  1. De combinatie van zwakke leerlingen om classificaties te maken
  2. Sommige stronken hebben meer inspraak in de classificatie dan andere
  3. Bij elke stronk wordt rekening gehouden met de fouten van de voorgaande stronken

Scikit-Leren biedt ensemblemethoden met behulp van een Python machine learning-bibliotheek die AdaBoost implementeert. AdaBoost kan zowel voor classificatie- als regressieproblemen worden gebruikt, dus laten we eens kijken hoe we Scikit-Learn voor dit soort problemen kunnen gebruiken. 

Classificatie

sklearn.ensemble.AdaBoostClassifier

Het doel van de AdaBoost-classificator is om te beginnen met het passen van een classificator op de originele dataset voor de betreffende taak en vervolgens het plaatsen van aanvullende classificatoren waarbij de gewichten van onjuist geclassificeerde instanties worden aangepast. 

Dit zijn de parameters:

sklearn.ensemble.AdaBoostClassifier(base_estimator = Geen, *, n_estimators = 50, learning_rate = 1.0, algoritme = 'SAMME.R', random_state = Geen)

U kunt meer over hen en hun kenmerken te weten komen hier

Laten we het als voorbeeld zien:

invoer: 

van sklearn.ensemble importeer AdaBoostClassifier van sklearn.tree import DecisionTreeClassifier van sklearn.datasets importeer load_breast_cancer importeer panda's als pd importeer numpy als np van sklearn.model_selection importeer train_test_split van sklearn.metrics importeer verwarring_matrix van sklearn.preprocessing importeer LabelEncoder

Gegevensset laden:

breast_cancer = load_breast_cancer() X = pd.DataFrame(breast_cancer.data, columns=breast_cancer.feature_names) y = pd.Categorical.from_codes(breast_cancer.target, breast_cancer.target_names)

Codeer kwaadaardig naar 1 en goedaardig naar 0:

encoder = LabelEncoder() binary_encoded_y = pd.Series(encoder.fit_transform(y))

Trainings-/testset:

train_X, test_X, train_y, test_y = train_test_split(X, binary_encoded_y, willekeurige_status = 1)

Fit ons model:

classifier = AdaBoostClassifier( DecisionTreeClassifier(max_diepte = 1), n_estimators = 200 ) classifier.fit(train_X, train_y)

Maak voorspelling:

voorspellingen = classifier.predict(test_X)

Evalueer het model:

verwarring_matrix(test_y, voorspellingen)

Output:

matrix ([[86, 2], [3, 52]])

Codebron: Cory Maklin

Regressie

sklearn.ensemble.AdaBoostRegressor

Het doel van de AdaBoost-regressor is om te beginnen met het passen van een regressor op de originele dataset voor de betreffende taak en vervolgens het plaatsen van aanvullende regressoren waarbij de gewichten zijn aangepast op basis van de huidige voorspellingsfout.

Dit zijn de parameters:

sklearn.ensemble.AdaBoostRegressor(base_estimator = Geen, * , n_estimators = 50, leersnelheid = 1.0, verlies = 'lineair', willekeurige_status = Geen)

Als u meer over hen en hun kenmerken wilt weten, klikt u op hier

Laten we het als voorbeeld zien:

#evaluate adaboost ensemble voor regressie van numpy import mean van numpy import std van sklearn.datasets import make_regression van sklearn.model_selection import cross_val_score van sklearn.model_selection import RepeatedKFold van sklearn.ensemble import AdaBoostRegressor # definieer dataset X, y = make_regressie (n_samples = 1000 , n_features = 20, n_informative = 15, noise = 0.1, random_state = 6) # definieer het modelmodel = AdaBoostRegressor() # evalueer het model cv = RepeatedKFold(n_splits = 10, n_repeats = 3, random_state = 1) n_scores = cross_val_score( model, X, y, scoring = 'neg_mean_absolute_error', cv = cv, n_jobs = -1, error_score = 'raise') # report performance print('MAE: %.3f (%.3f)' % (gemiddelde(n_scores) , std(n_scores)))

Codebron: MachineLearning Meesterschap

Als je meer wilt weten over ensemblemethoden en hoe je betere voorspellingen kunt doen met behulp van de technieken: bagging, boosting en stacking, bekijk dan het MachineLearningMastery-boek: Ensemble-leeralgoritmen met Python

Jos Starmer, de Statistics and Machine Learning Guru heeft me geholpen AdaBoost beter te begrijpen via deze video: AdaBoost, duidelijk uitgelegd

 
 
Nisha Arja is een datawetenschapper en freelance technisch schrijver. Ze is vooral geïnteresseerd in het geven van loopbaanadvies op het gebied van Data Science of tutorials en op theorie gebaseerde kennis rond Data Science. Ze wil ook de verschillende manieren onderzoeken waarop kunstmatige intelligentie de levensduur van de mens ten goede komt. Een scherpe leerling, die haar technische kennis en schrijfvaardigheid wil verbreden, terwijl ze anderen helpt te begeleiden.
 

spot_img

Laatste intelligentie

spot_img