jeudi 22 juin 2023

Traitement des données pour l'apprentissage automatique: suite

 Dans un article précédent, j'ai commencé à exposer des techniques pour réduire les données à traiter pour un dispositif d'apprentissage automatique. (voir article).

Continuons notre cheminement : comment éliminer les facteurs moins utiles ou encore comment supprimer des données non conformes (erreur de mesure etc.) 

Analyse des corrélations.

Il est possible d'obtenir la corrélation deux à deux des facteurs avec Pandas avec la méthode corr()


Une valeur proche de zéro est un signe de facteurs indépendants. 


On peut aussi avoir une confirmation visuelle par les lignes suivantes:

corrélation 2 à 2
A noter le ';' en fin d'instruction permettant de cacher les méta-informations de Matplotlib

Garder pour un apprentissage 2 facteurs qui sont fortement corrélés n'apportera pas d'informations nouvelles. Aussi, on peut supprimer un des deux facteurs sans risque d'appauvrir les informations.

Eliminations des valeurs aux extrémités.


Pour cela plusieurs solutions sont proposées

La méthode par l'écart type ou la déviation standard.

On ne conservera que les valeurs comprises dans une fourchette dont les extrémités sont calculées à partir de la moyenne et de l'écart type.  Il est possible de jouer sur l'amplitude de la fourchette.


Ici , on a pris 2 fois l'ecart type de chaque coté pour obtenir l'amplitude de la fourchette.
2 valeurs seulement sont éliminées à droite de la moyenne.

La méthode par la médiane et les quantiles.

La méthode quantile de Pandas permet de séparer les facteurs en jeux de données de même nombre (quantile(0.5)
Il faut donc calculer le quantile pour 0.25 puis 0.75
Exemple:

L'intervalle interquartile sera donné par quantile(0.75) - quantile(0.25)

On pourra déterminer une borne inférieure et supérieure: 
borne int = quant25 - irq * 1,2
et 
borne sup = quant75 + irq * 1.2
(1.2  à 1.5 sont des coefficients généralement utilisés)


Méthode avec LocalOutlierFactor   de sklearn


Utilisation :


Apres filtrage les valeurs retenues sont en rouge: