Wiki

Clone wiki

maplearn / configuration

Quelque soit la façon dont vous utilisez Mapping Learning, un même fichier de configuration est utilisé. Ce fichier (.cfg) permet de définir le ou les traitements souhaités (traitements), le jeu de données sur lequel travailler (entrées/sorties), et si il faut le modifier auparavant (prétraitements).

Le fichier de configuration est la solution qui vous donnera au plus grand nombre de paramètres, et vous permettra ainsi de connaître toutes ses possibilités.

Le fichier de configuration se compose de 3 parties:

  1. Entrées/sorties [io] : définition des entrées et sorties (sur quel fichier travailler, où enregistrer les résultats...)
  2. Prétraitements [preprocess] : quel(s) prétraitement(s) faut-il appliquer avant d'entraîner le/les algorithme(s) ?
  3. process : quel traitement appliquer ? une régression, une classification supervisée ou non supervisée (clustering) ? Cette dernière section permettra notamment de définir la liste des algorithmes à comparer, et bien d'autres choses.

La suite de cette page décrit chacune de ses parties, et présente l'extrait du fichier de configuration correspondant.

io_icon.png 1. Entrées/Sorties [io]

Mapping Learning permet de travailler sur de nombreux formats (csv, excel, tiff, shp...), mais également de nombreuses façons : * en choisissant la ou les variable(s) (features) de votre jeu de données qui serviront à vos traitements * avec des échantillons (samples), un jeu de données inconnu (data), ou les deux * en utilisant directement les valeurs de la variable à prédire (label) ou à l'aide de codes correspondants à ces valeurs (label_id) Dans tous les cas, pensez à vérifier ou seront enregistrés vos résultats (output)

Un jeu de données en machine learning peut classiquement être présenté sous la forme d'un tableau où :

  • les colonnes sont autant de variables qui pourront être utilisées par les algorithmes de machine learning.
  • les lignes correspondent aux individus

Variables

Les variables se divisent en deux catégories :

  1. les variables pour lesquelles vous avez des informations : ce sont les prédicteurs (ou features en anglais)
  2. la variable à prédire

Echantillons

Parmi les individus, vous aurez peut-être l'information qui vous intéresse pour certains d'entres eux ; ce sont les échantillons (samples). Dans ce cas, vous pourrez utiliser l'approche supervisée (votre connaissance a priori d'une partie de données guidera l'analyse). Cette approche, probablement la plus commune, consiste en 2 étapes :

  • l'entraînement d'un modèle à partir des échantillons (samples)
  • la prédiction à partir des autres données (data)

machine_learning.png

Sans échantillons, vous pourrez utiliser une approche où vous devrez ajouter votre connaissance a posteriori : l'approche non-supervisée (avec le clustering).

Dans Mapping Learning

#!python
[io]
# [txt] Echantillons utilises pour entrainer le ou les algorithmes (chemin d'acces)
samples=
# [optionnel:txt] colonne correspondant au ID des classes (sous forme de nombres)
label_id=
# [optionnel:txt] colonne correspondant aux libelles des classes (sous forme de texte)
label=
# [optionnel:txt] liste des features a utiliser (separes par ',')
features=
# [optionnel:txt] jeu de donnees sur lequel appliquer les classification (chemin d'acces)
data=
# [txt] chemin vers le dossier qui contiendra les sorties
output=

Dans le cas d'une approche supervisée (classification ou régression), vous pouvez : * vous contenter de n'utiliser que des échantillons (samples) * utiliser des échantillons conjointement avec des données inconnues (data) NB: dans le dernier cas, les échantillons et les autres données devront présenter les mêmes prédicteurs.

Dans une approche non-supervisée (clustering), vous pouvez vous contenter de spécifier les données (data).

preprocess-icon.png 2. Prétraitements [preprocess]

Mapping learning n'a pas vocation à réaliser toutes les manipulations nécessaires à votre jeu de données pour le rendre utilisable. NB: (re)voyez le paragraphe précédent pour voir comment doit être structuré par les algorithmes de machine learning. Néanmoins, Mapping Learning dispose de quelques outils de prétraitements qui modifieront les valeurs des données (scale), les features (reduce et ncomp), les échantillons (balance). Enfin, un test permettra d'estimer les chances d'obtenir des bons résultats avec vos échantillons (separability).

#!python
[preprocess]
# [optionnel:booleen] faut-il centrer/reduire ? [true/false]
scale=
# [optionnel:booleen] faut-il reequilibrer les echantillons ? [true/false]
balance=
# [optionnel:txt] Reduit les dimensions du jeu de donnees [une parmi pca, lda, kbest, rfe, kernel_pca]
reduce=
# [optionnel:nombre] nombre de dimensions souhaitees apres reduction
ncomp=
# [optionnel:booleen] faut-il analyser la separabilite des echantillons ? [true/false]
separability=

process_icon.png 3. Traitements [process]

Nous voici finalement à la partie la plus intéressante : que voulez-vous prédire ? Des nombres continus (température, ...) ou des valeurs discrètes (classe sociale, occupation du sol...) ? Dans tous les cas, Mapping Learning vous permettra d'utiliser une panel d'algorithmes, et vous aidera à obtenir les prédictions les plus précises.

Cette dernière partie vous permettra de définir :

  • le type de prédiction (type)
  • le(s) algorithme(s) à appliquer (algorithm)
  • si il faut essayer d'améliorer la précision (optimize)
  • comment utiliser vos échantillons (kfold)

Que prédire ? (type)

Suivant la nature des valeurs à prédire, on parlera de : * classification quand les valeurs sont discrètes (aussi appelées catégorielles) * régression quand les valeurs sont continues

classif_reg.png

Si vous ne disposez pas d'échantillons, vous pouvez alors envisager une classification non supervisée, également appelée clustering.

Quelque soit le type de prédiction choisi, Mapping Learning vous fournira un grand nombre d'algorithmes. Plutôt que de vous donner ici une liste exhaustive, je vous renvoie vers la documentation de scikit-learn.

  • Faut-il prédire (predict) ?

Cette question peut sembler absurde mais il est prudent de ne pas demander tout de suite de prédiction de nouveaux résultats : si votre jeu de données est volumineux et que vous ne savez pas précisément quel(s) algorithme(s) sont pertinents, alors vous pouvez vous focaliser d'abord sur les résultats statistiques (obtenus lors de l'étape d'entraînement).

Validation croisée (kfold)

Vous êtes l'heureux possesseur d'échantillons et vous voulez vous assurer d'avoir des résultats robustes et valides statistiquement ? La validation croisée est faite pour vous. Cette méthode divise vos échantillons en k lots (d'où le nom de k-folds) :

  • k-1 lots serviront à entraîner votre modèle
  • le dernier lot servira à le valider

Ensuite, les lots tournent et le modèle est validé sur un nouveau lot de validation après avoir été entraîné sur les autres. Votre modèle est ainsi validé k fois, et la variabilité dans vos résultats vous indiquera si le modèle est suffisamment robuste.

Recherche des hyperparamètres (optimize)

Les algorithmes de machine learning présentent généralement des paramètres. Là encore, une liste exhaustive n'est pas souhaitable sachant que ces paramètres dépendent du/des algorithme(s) choisi(s). Néanmoins, sachez que l'on distingue :

  1. Les paramètres proprement dits, dont les valeurs sont calculées pendant l'entraînement
  2. Les hyperparamètres dont la valeur doit être fixée avant l'étape d'entraînement du modèle. Ce sont ces derniers que l'analyste de données devra définir en fonction de ses connaissances (de l'algorithme et du jeu de données).

Dans Mapping Learning

#!python
[process]
# [txt] type de traitement a realiser [classification, clustering ou regression]
type=classification
# [optionnel:txt] quelle mesure de distance utiliser (si different euclidean)
distance=
# [optionnel:txt] algorithme(s) de classification a appliquer (ex: knn)
algorithm=
# [optionnel:nombre] en combien de lots diviser les echantillons pour la validation croisee
kfold=
# [optionnel:booleen] optimize des parametres de classification ? [true/false]
optimize=
# [optionnel:booleen] faut-il predire des resultats (exporter des classifs) ? [true/false]
predict=

Retour à la page Utilisation

Updated