# 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 &gt; Main.

   ![Job de sept composants utilisant le composant tRandomForestModel.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel1.png)

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

Consultez la procédure dans le [Guide de prise en main](https://help.qlik.com/talend/fr-FR/studio-getting-started-guide-data-fabric/8.0/configuring-connection-to-file-system-to-be-used-by-spark).

## Lire le jeu de données d'apprentissage

### Procédure

1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Component.

   ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel2.png)
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*.

   ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel3.png)

   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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel4.png)
   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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel5.png)
   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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel6.png)
   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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel7.png)

      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*.![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel8.png)
   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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel9.png)

      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.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel10.png)
   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*.

      ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel12.png)

      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.

   ![](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/use_case-trandomforestmodel11.png)
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](https://help.qlik.com/talend/fr-FR/studio-getting-started-guide-data-fabric/8.0/selecting-spark-mode).

## 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.