Maison > Périphériques technologiques > IA > Exercice pratique sur l'arbre de décision d'apprentissage automatique

Exercice pratique sur l'arbre de décision d'apprentissage automatique

WBOY
Libérer: 2023-04-11 19:16:01
avant
1052 Les gens l'ont consulté

Traducteur | Zhu Xianzhong

Réviseur | Sun Shujuan

Arbres de décision dans l'apprentissage automatique

Les algorithmes d'apprentissage automatique modernes changent notre vie quotidienne. Par exemple, de grands modèles linguistiques tels que BERT alimentent la recherche Google, et GPT-3 alimente de nombreuses applications linguistiques de haut niveau.

D’un autre côté, créer des algorithmes d’apprentissage automatique complexes est beaucoup plus facile aujourd’hui que jamais. Cependant, quelle que soit la complexité des algorithmes d'apprentissage automatique, ils entrent tous dans l'une des catégories d'apprentissage suivantes :

  • En fait, l'arbre de décision est l'un des plus anciens algorithmes d'apprentissage automatique supervisé et peut résoudre un large éventail de problèmes réels. La recherche montre que la première invention de l’algorithme d’arbre de décision remonte à 1963.
  • Ensuite, approfondissons les détails de cet algorithme et voyons pourquoi ce type d'algorithme est toujours si populaire aujourd'hui.
  • Qu'est-ce qu'un arbre de décision ?
  • L'algorithme d'arbre de décision est un algorithme d'apprentissage automatique supervisé populaire en raison de sa manière relativement plus simple de gérer des ensembles de données complexes. Les arbres de décision tirent leur nom de leur similitude avec la structure d'un arbre ; une structure arborescente se compose de plusieurs composants tels que des racines, des branches et des feuilles sous forme de nœuds et d'arêtes. Ils sont utilisés pour l’analyse des décisions, un peu comme un organigramme de décision basé sur « if-else », où les décisions produiront les prédictions souhaitées. Les arbres de décision peuvent apprendre ces règles de décision if-else pour diviser l'ensemble de données et enfin générer un modèle de données arborescent.
  • Des arbres de décision ont été appliqués à la prédiction de résultats discrets pour des problèmes de classification et à la prédiction de résultats numériques continus pour des problèmes de régression. Au fil des années, les scientifiques ont développé de nombreux algorithmes différents tels que CART, C4.5 et des algorithmes d'ensemble tels que les forêts aléatoires et les arbres à gradient amélioré.

Anatomie des différents composants d'un arbre de décision

Le but de l'algorithme de l'arbre de décision est de prédire le résultat de l'ensemble de données d'entrée. L'ensemble de données de l'arborescence est divisé en trois formes : attributs, valeurs d'attribut et types à prédire. Comme pour tout algorithme d’apprentissage supervisé, l’ensemble de données est divisé en deux types : l’ensemble d’entraînement et l’ensemble de test. Parmi eux, l’ensemble d’entraînement définit les règles de décision que l’algorithme apprend et applique à l’ensemble de test.

Avant de rassembler les étapes de l'algorithme de l'arbre de décision, comprenons d'abord les composants de l'arbre de décision :

Nœud racine : C'est le nœud de départ en haut de l'arbre de décision et contient tous les attributs valeurs. Le nœud racine est divisé en nœuds de décision en fonction des règles de décision apprises par l'algorithme.

Exercice pratique sur l'arbre de décision d'apprentissage automatique

Branches : Les branches sont des connecteurs entre les nœuds qui correspondent aux valeurs d'attribut. Dans le fractionnement binaire, les branches représentent des chemins vrais et faux.

Nœud de décision/nœud interne : le nœud interne est le nœud de décision entre le nœud racine et le nœud feuille, correspondant à la règle de décision et à son chemin de réponse. Les nœuds représentent des questions et les branches affichent des chemins vers des réponses pertinentes basées sur ces questions.

Nœuds feuilles : les nœuds feuilles sont des nœuds terminaux qui représentent les prédictions cibles. Ces nœuds ne seront pas davantage divisés.

  • Ce qui suit est une représentation visuelle d'un arbre de décision et de ses composants ci-dessus, l'algorithme de l'arbre de décision passe par les étapes suivantes pour arriver à la prédiction souhaitée :
  • L'algorithme commence à partir du nœud racine avec tous valeurs d'attribut.
  • Le nœud racine est divisé en nœuds de décision en fonction des règles de décision apprises par l'algorithme à partir de l'ensemble d'entraînement.
  • Faites passer les nœuds de décision internes à travers les branches/bords en fonction de la question et de son chemin de réponse.

Continuez les étapes précédentes jusqu'à ce que vous atteigniez un nœud feuille ou que tous les attributs soient utilisés.

  • Afin de sélectionner le meilleur attribut sur chaque nœud, la répartition sera basée sur l'une des deux mesures de sélection d'attribut suivantes :
    • Indice Gini (Indice Gini) mesure l'impureté Gini (Impurité Gini) pour indiquer la probabilité qu'un algorithme classe mal une étiquette de classe aléatoire.
    • Le gain d'information mesure l'amélioration de l'entropie après la division pour éviter une répartition 50/50 des classes prédites. L'entropie est une mesure mathématique de l'impureté dans un échantillon de données donné. L'état chaotique dans l'arbre de décision est représenté par la partition qui est proche de 50/50.
    • Cas de classification des fleurs à l'aide d'un algorithme d'arbre de décision

    Après avoir compris les connaissances de base ci-dessus, commençons à mettre en œuvre un cas d'application. Dans cet article, nous allons implémenter un modèle de classification d'arbre de décision en Python à l'aide de la bibliothèque Scikit Learning.

    Une brève explication sur l'ensemble de données

    L'ensemble de données de ce tutoriel est un ensemble de données sur la fleur d'iris. Cet ensemble de données est déjà intégré à la bibliothèque open source Scikit, les développeurs n'ont donc pas besoin de le charger en externe. Cet ensemble de données comprend un total de quatre attributs d'iris et les valeurs d'attribut correspondantes, qui seront entrées dans le modèle pour prédire l'un des trois types de fleurs d'iris.

      Attributs/caractéristiques dans l'ensemble de données : longueur des sépales, largeur des sépales, longueur des pétales, largeur des pétales.
    • Étiquettes/types de fleurs prévus dans l'ensemble de données : Setosis, Versicolor, Virginica.
    Ensuite, une description de code étape par étape du classificateur d'arbre de décision basé sur le langage python sera donnée.

    Importer des bibliothèques

    Tout d'abord, importez les bibliothèques requises pour exécuter l'implémentation de l'arbre de décision via le morceau de code suivant.

    import pandas as pd
    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.tree import DecisionTreeClassifier
    Copier après la connexion
    Chargement de l'ensemble de données Iris

    Le code suivant montre l'utilisation de la fonction load_iris pour charger l'ensemble de données Iris dans la bibliothèque sklearn.dataset qui est stockée dans la variable data_set. Les deux lignes de code suivantes imprimeront le type d'iris et les informations caractéristiques.

    data_set = load_iris()
    print('Iris plant classes to predict: ', data_set.target_names)
    print('Four features of iris plant: ', data_set.feature_names)
    Copier après la connexion

    Exercice pratique sur l'arbre de décision d'apprentissage automatiqueAttributs et balises séparés

    Les lignes de code suivantes séparent les caractéristiques et les informations de type de la fleur et les stockent dans les variables correspondantes. Parmi eux, la fonction shape[0] est chargée de déterminer le nombre d'attributs stockés dans la variable X_att ; le nombre total de valeurs d'attribut dans l'ensemble de données est de 150.

    #提取花的特性和类型信息
    X_att = data_set.data
    y_label = data_set.target
    print('数据集中总的样本数:', X_att.shape[0])
    Copier après la connexion

    En fait, nous pouvons également créer un tableau visuel pour afficher certaines valeurs d'attribut​​dans l'ensemble de données en ajoutant la valeur de la variable X_att à la fonction DataFrame dans la bibliothèque panda.

    data_view=pd.DataFrame({
    'sepal length':X_att[:,0],
    'sepal width':X_att[:,1],
    'petal length':X_att[:,2],
    'petal width':X_att[:,3],
    'species':y_label
    })
    data_view.head()
    Copier après la connexion
    Diviser l'ensemble de données

    Le code suivant montre comment utiliser la fonction train_test_split pour diviser l'ensemble de données en deux parties : l'ensemble d'entraînement et l'ensemble de test. Parmi eux, le paramètre random_state dans cette fonction est utilisé pour fournir une graine aléatoire pour que la fonction fournisse les mêmes résultats pour l'ensemble de données donné à chaque fois qu'elle est exécutée ; test_size indique la taille de l'ensemble de test ; représente 25 % après le fractionnement. Les données de formation représentent 75 %.

    #数据集拆分为训练集和测试集两部分
    X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)
    Copier après la connexion
    Appliquer la fonction de classification d'arbre de décision

    Le code ci-dessous implémente

    un arbre de décision en utilisant la fonction DecisionTreeClassifier pour créer un modèle de classification​, classification standard Réglé sur "entropie" way . La norme permet à de définir la métrique de sélection d'attribut comme gain d'informations (Gain d'informations). Le code associe ensuite le modèle à notre ensemble d'attributs et d'étiquettes d'entraînement.

    #应用决策树分类器
    clf_dt = DecisionTreeClassifier(criterion = 'entropy')
    clf_dt.fit(X_att_train, y_label_train)
    Copier après la connexion

    计算模型精度

    下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。

    print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train)))
    print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))
    Copier après la connexion

    真实世界中的决策树应用程序

    当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域:

    • 贷款批准
    • 支出管理
    • 客户流失预测
    • 新产品的可行性分析,等等。

    如何改进决策树?

    作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。

    与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。

    译者介绍

    朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

    原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal