Un guide complet pour booster les algorithmes d'apprentissage automatique

Ce blog se concentre entièrement sur le fonctionnement de Boosting Machine Learning et sur la manière dont il peut être mis en œuvre pour augmenter l'efficacité des modèles Machine Learning.

Avec autant d'avancées dans le domaine de la santé, du marketing, des affaires, etc., il est devenu nécessaire de développer des solutions plus avancées et complexes. . Boosting Machine Learning est l'une de ces techniques qui peut être utilisée pour résoudre des problèmes complexes, basés sur les données et du monde réel. Ce blog est entièrement axé sur le fonctionnement de Boosting Machine Learning et sur la façon dont il peut être mis en œuvre pour augmenter l'efficacité des modèles Machine Learning.



Pour acquérir une connaissance approfondie de l'intelligence artificielle et de l'apprentissage automatique, vous pouvez vous inscrire en direct par Edureka avec une assistance 24/7 et un accès à vie.



Voici une liste de sujets qui seront abordés dans ce blog:

  1. Pourquoi le boosting est-il utilisé?
  2. Qu'est-ce que le boosting?
  3. Comment fonctionne l'algorithme Boosting?
  4. Types de stimulation
  5. Démo

Pourquoi le boosting est-il utilisé?

Pour résoudre des problèmes complexes, nous avons besoin de techniques plus avancées. Supposons que sur un ensemble de données d'images contenant des images de chats et de chiens, on vous demande de créer un modèle qui peut classer ces images en deux classes distinctes. Comme toute autre personne, vous commencerez par identifier les images en utilisant certaines règles, comme ci-dessous:



  1. L'image a des oreilles pointues: Chat

  2. L'image a des yeux en forme de chat: Chat

  3. L'image a des membres plus gros: Chien



  4. L'image a des griffes aiguisées: Chat

  5. L'image a une structure de bouche plus large: Chien

Toutes ces règles nous aident à identifier si une image est un chien ou un chat, cependant, si nous devions classer une image en fonction d'une règle individuelle (unique), la prédiction serait erronée. Chacune de ces règles, individuellement, est appelée apprenants faibles parce que ces règles ne sont pas assez fortes pour classer une image comme un chat ou un chien.

Par conséquent, pour nous assurer que notre prédiction est plus précise, nous pouvons combiner la prédiction de chacun de ces apprenants faibles en utilisant la règle de la majorité ou la moyenne pondérée. Cela fait un modèle d'apprentissage solide.

Dans l'exemple ci-dessus, nous avons défini 5 apprenants faibles et la majorité de ces règles (c'est-à-dire 3 apprenants sur 5 prédisent l'image comme un chat) nous donne la prédiction que l'image est un chat. Par conséquent, notre sortie finale est un chat.

Donc cela nous amène à la question,

Qu'est-ce que le boosting?

La stimulation est une technique d'apprentissage d'ensemble qui utilise un ensemble d'algorithmes d'apprentissage automatique pour convertir un apprenant faible en apprenant fort afin d'augmenter la précision du modèle.

qu'est-ce qu'une variable d'instance

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

Qu'est-ce que Boosting - Boosting Machine Learning - Edureka

Comme je l'ai mentionné, Boosting est une méthode d'apprentissage d'ensemble, mais qu'est-ce que l'apprentissage d'ensemble?

Qu'est-ce qu'Ensemble dans l'apprentissage automatique?

L'apprentissage par ensemble est une méthode utilisée pour améliorer les performances du modèle d'apprentissage automatique en combinant plusieurs apprenants. Comparé à un modèle unique, ce type d'apprentissage crée des modèles avec une efficacité et une précision améliorées. C'est exactement pourquoi les méthodes d'ensemble sont utilisées pour gagner des compétitions leaders du marché telles que le concours de recommandation Netflix, les concours Kaggle, etc.

Qu'est-ce qu'Ensemble Learning - Boosting Machine Learning - Edureka

Ci-dessous, j'ai également discuté de la différence entre Boosting et Bagging.

Boosting vs ensachage

L'apprentissage d'ensemble peut être effectué de deux manières:

  1. Ensemble séquentiel, populairement connu comme stimulant , ici les apprenants faibles sont produits séquentiellement pendant la phase de formation. Les performances du modèle sont améliorées en attribuant une pondération plus élevée aux échantillons précédents mal classés. L'algorithme AdaBoost est un exemple de boosting.

  2. Parallel ensemble , populairement connu comme ensachage , ici les apprenants faibles sont produits parallèlement pendant la phase de formation. Les performances du modèle peuvent être améliorées en formant parallèlement un certain nombre d'apprenants faibles sur des ensembles de données bootstrap. Un exemple d'ensachage est la forêt aléatoire algorithme.

Dans ce blog, je me concentrerai sur la méthode Boosting, donc dans la section ci-dessous, nous allons comprendre comment fonctionne l'algorithme Boosting.

Comment fonctionne l'algorithme Boosting?

Le principe de base du fonctionnement de l'algorithme d'amplification est de générer plusieurs apprenants faibles et de combiner leurs prédictions pour former une règle forte. Ces règles faibles sont générées en appliquant des algorithmes d'apprentissage automatique de base sur différentes distributions de l'ensemble de données. Ces algorithmes génèrent des règles faibles pour chaque itération. Après plusieurs itérations, les apprenants faibles sont combinés pour former un apprenant fort qui prédira un résultat plus précis.

Comment fonctionne Boosting Algorithm - Boosting Machine Learning - Edureka

Voici comment fonctionne l'algorithme:

Étape 1: L'algorithme de base lit les données et attribue un poids égal à chaque observation d'échantillon.

Étape 2: Les fausses prédictions faites par l'apprenant de base sont identifiées. Dans l'itération suivante, ces fausses prédictions sont attribuées au prochain apprenant de base avec un poids plus élevé sur ces prédictions incorrectes.

Étape 3: Répétez l'étape 2 jusqu'à ce que l'algorithme puisse classer correctement la sortie.

Par conséquent, l'objectif principal de Boosting est pour se concentrer davantage sur les prédictions mal classées.

Maintenant que nous savons comment fonctionne l'algorithme d'amplification, comprenons les différents types de techniques d'amplification.

Types de stimulation

Il existe trois façons principales de réaliser un boosting:

  1. Boosting adaptatif ou AdaBoost

  2. Augmentation du dégradé

  3. XGBoost

Je vais discuter des bases de chacun de ces types.

Boosting adaptatif

  • AdaBoost est mis en œuvre en combinant plusieurs apprenants faibles en un seul apprenant fort.

  • Les apprenants faibles dans AdaBoost prennent en compte une seule fonction d'entrée et dessinent un seul arbre de décision divisé appelé le moignon de décision. Chaque observation est pesée de manière égale tout en tirant le premier moignon de décision.

  • Les résultats du premier moignon de décision sont analysés et si des observations sont mal classées, elles reçoivent des pondérations plus élevées.

  • Après cela, un nouveau moignon de décision est dessiné en considérant les observations avec des poids plus élevés comme plus significatives.

  • Encore une fois, si des observations sont mal classées, elles reçoivent un poids plus élevé et ce processus se poursuit jusqu'à ce que toutes les observations tombent dans la bonne classe.

  • Adaboost peut être utilisé à la fois pour les problèmes de classification et de régression, mais il est plus couramment utilisé à des fins de classification.

Augmentation du dégradé

Le Gradient Boosting est également basé sur l'apprentissage séquentiel d'ensemble. Ici, les apprenants de base sont générés séquentiellement de telle manière que l'apprenant de base actuel est toujours plus efficace que le précédent, c'est-à-dire que le modèle global s'améliore séquentiellement à chaque itération.

La différence dans ce type d'augmentation est que les pondérations des résultats mal classés ne sont pas incrémentées, au lieu de cela, la méthode Gradient Boosting tente d'optimiser la fonction de perte de l'apprenant précédent en ajoutant un nouveau modèle qui ajoute des apprenants faibles afin de réduire la fonction de perte.

L’idée principale ici est de surmonter les erreurs des prédictions de l’apprenant précédent. Ce type de boost a trois composants principaux:

  1. Fonction de perte cela doit être amélioré.

  2. Faible apprenant pour calculer des prédictions et former des apprenants solides.

  3. Une Modèle additif cela régularisera la fonction de perte.

Comme AdaBoost, Gradient Boosting peut également être utilisé pour les problèmes de classification et de régression.

XGBoost

XGBoost est une version avancée de la méthode de boosting Gradient, cela signifie littéralement eXtreme Gradient Boosting. XGBoost développé par Tianqi Chen, appartient à la catégorie de la communauté d'apprentissage automatique distribué (DMLC).

L'objectif principal de cet algorithme est d'augmenter la vitesse et l'efficacité du calcul. L'algorithme Gradient Descent Boosting calcule la sortie à un rythme plus lent car ils analysent séquentiellement l'ensemble de données.Par conséquent, XGBoost est utilisé pour augmenter ou augmenter considérablement les performances du modèle.

XGBoost - Stimuler l'apprentissage automatique - Edureka

XGBoost est conçu pour se concentrer sur la vitesse de calcul et l'efficacité du modèle. Les principales fonctionnalités fournies par XGBoost sont:

  • Parallèlement crée des arbres de décision.

  • Mettre en œuvre des méthodes de calcul distribué pour évaluer des modèles volumineux et complexes.

  • Utilisation du calcul out-of-core pour analyser d'énormes ensembles de données.

  • Implémentation de l'optimisation du cache pour tirer le meilleur parti des ressources.

Donc c'étaient les différents types d'algorithmes de Boosting Machine Learning. Pour rendre les choses intéressantes, dans la section ci-dessous, nous allons lancer une démo pour voir comment les algorithmes de boost peuvent être implémentés en Python.

Stimuler l'apprentissage automatique en Python

Un bref avertissement: j'utiliserai Python pour exécuter cette démo, donc si vous ne connaissez pas Python, vous pouvez consulter les blogs suivants:

  1. Comment apprendre Python 3 à partir de zéro - Un guide du débutant

Il est maintenant temps de se salir les mains et de commencer à coder.

Énoncé du problème: Étudier un ensemble de données de champignon et créer un modèle d'apprentissage automatique qui peut classer un champignon comme toxique ou non, en analysant ses caractéristiques.

Description de l'ensemble de données: Cet ensemble de données fournit une description détaillée d'échantillons hypothétiques selon 23 espèces de champignons branchus. Chaque espèce est classée comme champignons comestibles ou non comestibles (vénéneux).

Logique: Construire un modèle d'apprentissage automatique en utilisant l'un des algorithmes Boosting afin de prédire si un champignon est comestible ou non.

comment faire des tests de base de données

Étape 1: importez les packages requis

depuis sklearn.ensemble importer AdaBoostClassifier depuis sklearn.preprocessing importer LabelEncoder depuis sklearn.tree import DecisionTreeClassifier importer des pandas en tant que pd # Importer la fonction train_test_split depuis sklearn.model_selection importer train_test_split #Import scikit-learn module de métriques pour la précision de l'importation

Étape 2: importez l'ensemble de données

# Charger dans le jeu de données = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Étape 3: Traitement des données

#Définissez les noms des colonnes dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'contuises', 'odor', 'gill-attachment', 'branch-spacing ',' taille des branchies ',' couleur des branchies ',' forme-tige ',' racine-tige ',' surface-tige-au-dessus-de-l'anneau ',' surface-tige-sous-anneau ',' couleur-tige -above-ring ',' stalk-color-below-ring ',' voile-type ',' veil-color ',' ring-number ',' ring-type ',' spore-print-color ',' population ',' habitat '] pour l'étiquette dans dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [label]). transform (dataset [label]) #Afficher des informations sur l'ensemble de données print (dataset.info ( )) Int64Index: 8124 entrées, 6074 à 686 Colonnes de données (23 colonnes au total): cible 8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 contusions 8124 non nul int32 odeur 8124 non nul int32 attachement branchial 8124 non nul int32 espacement branchial 8124 non nul int32 taille branchiale 8124 non nul int32 couleur branchiale 8124 non nul int32 forme de tige 8124 non nul int32 stalk-root 8124 non nul int32 tige-surface-au-dessus-anneau 8124 non-nul int32 tige-surface-sous-anneau 8124 non-nul int32 couleur-tige-au-dessus-anneau 8124 non-nul int32 tige-couleur-sous-anneau 8124 non-nul int32 voile- type 8124 non-null int32 voile-couleur 8124 non-nul int32 numéro-anneau 8124 non-nul int32 type-anneau 8124 non-nul int32 spore-print-couleur 8124 non-nul int32 population 8124 non-nul int32 habitat 8124 non- null int32 dtypes: int32 (23) utilisation de la mémoire: 793,4 Ko

Étape 4: épissage des données

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)

Étape 5: Construisez le modèle

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

Dans l'extrait de code ci-dessus, nous avons implémenté l'algorithme AdaBoost. La fonction «AdaBoostClassifier» prend trois paramètres importants:

  • base_estimator: L'estimateur de base (apprenant faible) est les arbres de décision par défaut
  • n_estimator: ce champ spécifie le nombre d'apprenants de base à utiliser.
  • learning_rate: Ce champ spécifie le taux d'apprentissage, que nous avons défini sur la valeur par défaut, c'est-à-dire 1.
#Fit le modèle avec les données d'entraînement boostmodel = AdaBoost.fit (X_train, Y_train)

Étape 6: Évaluation du modèle

#Evaluer la précision du modèle y_pred = boostmodel.predict (X_test) predictions = metrics.accuracy_score (Y_test, y_pred) #Calculer la précision en pourcentage d'impression ('La précision est:', prédictions * 100, '%') La précision est: 100,0%

Nous avons reçu une précision de 100%, ce qui est parfait!

Donc, avec cela, nous arrivons à la fin de ce blog Boosting Machine Learning. Si vous souhaitez en savoir plus sur l'apprentissage automatique, vous pouvez lire ces blogs:

Si vous souhaitez vous inscrire à un cours complet sur l'intelligence artificielle et l'apprentissage automatique, Edureka a un Cela vous permettra de maîtriser des techniques telles que l'apprentissage supervisé, l'apprentissage non supervisé et le traitement du langage naturel. Il comprend une formation sur les dernières avancées et approches techniques de l'intelligence artificielle et de l'apprentissage automatique telles que l'apprentissage en profondeur, les modèles graphiques et l'apprentissage par renforcement.