Accéder au contenu principal Passer au contenu complémentaire

Créer un modèle de classification à l'aide de Random Forest

Ce scénario présente la création d'un modèle de classification à l'aide de l'algorithme Random Forest.

Construire le flux de données

Procédure

  1. Dans la perspective Integration du Studio Talend, créez un Job vide Spark Batch, nommé rf_model_creation par exemple, depuis le nœud Job Designs de la vue Repository.
    Pour plus d'informations concernant la création d'un Job Spark Batch, consultez .
  2. Dans l'espace de modélisation graphique, saisissez le nom du composant à utiliser et sélectionnez-le dans la liste qui s'affiche.
    Dans ce scénario, les composants sont les suivants : un tHDFSConfiguration, un tFileInputDelimited, un tRandomForestModel et quatre tModelEncoder.
    Il est recommandé de renommer les quatre composants tModelEncoder différemment afin de reconnaître d'un coup d’œil quelle tâche est effectuée par quel composant. Dans ce scénario, ils sont nommés, respectivement, Tokenize, tf, tf_idf et features_assembler.
  3. Sauf le tHDFSConfiguration, reliez les autres composants à l'aide de liens Row > Main.
    Job de sept composants utilisant le composant tRandomForestModel.

Configurer la connexion au système de fichiers utilisé par Spark

Consultez la procédure dans le Guide de prise en main.

Lire le jeu de données d'apprentissage

Procédure

  1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Component.
  2. Cochez la case Define a storage configuration component et sélectionnez le composant tHDFSConfiguration à utiliser.
    Le tFileInputDelimited utilise cette configuration pour accéder à l'ensemble d'apprentissage à utiliser.
  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.
  4. Cliquez cinq fois sur le bouton [+] pour ajouter cinq lignes et, dans la colonne Column, renommez-les, respectivement label, sms_contents, num_currency, num_numeric et num_exclamation.
    Les colonnes label et sms_contents contiennent les données brutes composées de messages texte SMS dans la colonne sms_contents et les libellés indiquant si un message est indésirable dans la colonne label.
    Les autres colonnes sont utilisées pour contenir les caractéristiques ajoutées aux jeux de données brutes, comme expliqué précédemment dans le scénario. Les caractéristiques sont respectivement le nombre de symboles monétaires, le nombre de valeurs numériques et le nombre de points d'exclamation trouvés dans chaque SMS.
  5. Dans la colonne Type, sélectionnez Integer pour les colonnes num_currency, num_numeric et num_exclamation.
  6. Cliquez sur OK pour valider ces modifications.
  7. Dans le champ Folder/File, saisissez le répertoire dans lequel l'ensemble d'apprentissage à utiliser est stocké.
  8. Dans le champ Field separator, saisissez \t, séparateur utilisé par les jeux de données que vous pouvez télécharger et utiliser dans ce scénario.

Transformer des SMS en vecteurs de caractéristiques à l'aide du tModelEncoder

Cette étape nécessite quatre sous-étapes : transformation du message en mots, calcul du poids d'un mot dans chaque message, réduction du poids des mots non pertinents dans chaque message et combinaison des vecteurs de caractéristiques.

Procédure

  1. Pour transformer des messages en mots :
    1. Double-cliquez sur le tModelEncoder nommé Tokenize pour ouvrir sa vue Component. Ce composant transforme les SMS en mots.
    2. Cliquez sur le bouton Sync columns afin de récupérer le schéma du composant précédent.
    3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.
    4. Du côté de la sortie, cliquez sur le bouton [+] pour ajouter une ligne et, dans la colonne Column, renommez-la sms_tokenizer_words. Cette colonne est utilisée pour contenir les messages transformés.
    5. Dans la colonne Type, sélectionnez Object pour la ligne sms_tokenizer_words.
    6. Cliquez sur OK pour valider ces modifications.
    7. Dans la table Transformations, ajoutez une ligne en cliquant sur le bouton [+] et en procédant comme suit :
      1. Dans la colonne Input column, sélectionnez la colonne fournissant les données à transformer en caractéristiques. Dans ce scénario, sélectionnez sms_contents.
      2. Dans la colonne Output column, sélectionnez la colonne contenant les caractéristiques. Dans ce scénario, sélectionnez sms_tokenizer_words.
      3. Dans la colonne Transformation, sélectionnez l'algorithme à utiliser pour la transformation. Dans ce scénario, sélectionnez Regex tokenizer.
      4. Dans la colonne Parameters, saisissez les paramètres que vous souhaitez personnaliser pour les utiliser dans l'algorithme sélectionné. Dans ce scénario, saisissez pattern=\\W;minTokenLength=3.
      En utilisant cette transformation, le tModelEncoder sépare chaque message d'entrée par des espaces blancs, sélectionne uniquement les mots contenant au moins trois lettres et écrit le résultat de la transformation dans la colonne sms_tokenizer_words. Les symboles monétaires, les valeurs numériques, les signes de ponctuation et les mots comme a, an ou to sont exclus de cette colonne.
  2. Pour calculer le poids d'un mot dans chaque message :
    1. Double-cliquez sur le tModelEncoder nommé tf pour ouvrir sa vue Component.
    2. Répétez les opérations précédemment décrites durant la configuration du tModelEncoder nommé Tokenize pour ajouter la colonne sms_tf_vect de type Vector au schéma de sortie et définir la transformation comme dans l'image ci-dessus.

      Dans cette transformation, le tModelEncoder utilise HashingTF pour convertir les SMS transformés en vecteurs de caractéristiques de longueur fixe (15 dans ce scénario) afin de refléter l'importance d'un mot dans chaque SMS.

  3. Pour réduire le poids des mots sans importance dans chaque message :
    1. Double-cliquez sur le composant tModelEncoder nommé tf_idf pour ouvrir sa vue Component.
      Dans ce processus, le tModelEncoder réduit le poids des mots apparaissant très souvent mais dans de trop nombreux messages, car un mot de ce genre n'apporte généralement pas d'information utile lors d'une analyse de texte, comme le mot anglais the.
    2. Répétez les opérations précédemment décrites durant la configuration du tModelEncoder nommé Tokenize pour ajouter la colonne sms_tf_idf_vect de type Vector au schéma de sortie et définir la transformation comme dans l'image ci-dessus.

      Dans cette transformation, le tModelEncoder utilise Inverse Document Frequency pour réduire le poids des mots apparaissant dans cinq messages ou plus.

  4. Pour combiner les vecteurs de caractéristiques :
    1. Double-cliquez sur le tModelEncoder nommé features_assembler pour ouvrir sa vue Component.
    2. Répétez les opérations décrites précédemment dans la configuration du tModelEncoder nommé Tokenizer pour ajouter la colonne features_vect de type Vector au schéma de sortie et définir la transformation comme affiché dans l'image ci-dessus.
      Notez que le paramètre à mettre dans la colonne Parameters est inputCols=sms_tf_idf_vect,num_currency,num_numeric,num_exclamation.
      Dans cette transformation, le tModelEncoder combine tous les vecteurs de caractéristiques en une seule colonne de caractéristiques.

Apprendre le modèle à l'aide de Random Forest

Procédure

  1. Double-cliquez sur le tRandomForestModel pour ouvrir sa vue Component.
  2. Dans la liste Label column, sélectionnez la colonne fournissant les classes à utiliser pour la classification. Dans ce scénario, sélectionnez label, qui contient deux noms de classes : spam pour les messages indésirables et ham pour les messages normaux.
  3. Dans la liste Features column, sélectionnez la colonne fournissant les vecteurs de caractéristiques à analyser. Dans ce scénario, sélectionnez features_vect, qui combine toutes les caractéristiques.
  4. Cochez la case Save the model on file system et, dans le champ HDFS folder qui s'affiche, saisissez le répertoire à utiliser pour stocker le modèle généré.
  5. Dans le champ Number of trees in the forest, saisissez le nombre d'arbres de décision que vous souhaitez que le tRandomForestModel construise. Vous devez essayer différents nombres pour exécuter le Job courant afin de créer plusieurs fois le modèle de classification. Après comparaison des résultats d'évaluation de chaque modèle créé à chaque exécution, vous pouvez décider du nombre à utiliser. Dans ce scénario, saisissez 20.
    Un Job d'évaluation sera présenté dans l'une des sections suivantes.
  6. Laissez les autres paramètres tels qu'ils sont.

Sélectionner le mode Spark

Consultez la procédure dans le Guide de prise en main.

Exécuter le Job pour créer le modèle de classification

Procédure

Appuyez sur F6 pour exécuter le Job.

Résultats

Le fichier du modèle est créé dans le répertoire spécifié dans le tRandomForestModel.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.