Bonjour,
Je ne comprends pas bien l’utilisation d’un FeatureUnion?
Il retourne les données « transformées » avec les différentes méthodes dans un même tableau. Comment cela est utilisé par la suite?
On ne peut pas ensuite entrainer les modèles sur ce tableau? Ce sont plusieurs fois les mêmes données transformées?
Comment utilise-t-on le résultat d’un FeatureUnion?
Bonjour Laure,
Lorsque l’on utilise un FeatureUnion, on va combiner plusieurs transformeurs en un transformeur qui concatène leurs outputs. Toutes les transformations sont effectuées en parallèle et non à la suite comme dans une pipeline. Les transformations sont ensuite concaténées dans la matrice qui retourne la FeatureUnion.
Ici, en prenant l’exemple du cours,
from sklearn.preprocessing import PolynomialFeatures, StandardScaler, MinMaxScaler
std_scaler = StandardScaler() # Centrage et réduction
mm_scaler = MinMaxScaler() # Normalisation min-max
union = FeatureUnion([ ('normalisation', std_scaler),
('minmax_scaling', mm_scaler) ])
On va à partir des données initiales normaliser les données et les " minmax scalé " en même temps, pour avoir dans notre jeu de données, pour chaque variable sa version normalisée et sa version " minmax scalée", vous pouvez très bien utilisé le résultat d’un feature union pour entrainer un algorithme à l’intérieur d’une pipeline comme ceci :
from sklearn.svm import SVC
from sklearn.preprocessing import PolynomialFeatures, StandardScaler, MinMaxScaler
std_scaler = StandardScaler()
mm_scaler = MinMaxScaler()
composite_model = Pipeline([( "scaling" , union ),
('model', svc)])
Bonjour,
Merci pour cette réponse. Cela confirme ce que je comprenais.
Mais le fait de concaténer des données transformées pour entrainer un modèle, est-ce que cela ne fausse pas le modèle? Il y a duplication de données avec différentes transformations.
Dans l’exemple du cours, on a 3 transformations PolynomialFeatures, StandardScaler et MinMaxScaler. Cela multiplie le nombre de colonnes avec des données dans des référentielles différents. Cela duplique également plusieurs fois la même information.
Dans les autres modules, on apprend plutôt à standardiser les différentes features pour un meilleur modèle. Je ne comprends donc pas dans quel cas un FeatureUnion peut être utile pour un modèle.
Supposons que vous avez une variable positive. Le Standard Scaling va transformer cette variable en une variable pouvant prendre des valeurs positives ou négatives, étant donné que la variable sera maintenant centrée en 0.
Pour un modèle linéaire comme la Régression Logistique, si le coefficient associé à cette variable est positif, alors la variable d’origine ne peut avoir qu’un effet positif sur la probabilité prédite, alors que la variable normalisée peut avoir un effet positif ou négatif.
Ceci peut être optimal pour certaines variables et sous-optimal pour d’autres, mais en donnant à la fois le min-max scaling (variables uniquement positives) et le standard scaling (variables pouvant être positives ou négatives) au modèle, il aura la possibilité de choisir la représentation qui lui convient le mieux.
Le seul risque de cette pratique serait d’induire du surapprentissage au modèle.
Ceci est valable uniquement sur les modèles linéaires comme SVM. Lasso, Ridge, Régression Linéaire, etc…
Pour les modèles de type arbre, le scaling n’a pas vraiment d’interêt.
Bonjour,
Merci pour cette réponse, je comprends mieux l’intérêt de concaténer un Standard Scaling avec un MinMax Scaling. Mais dans l’exemple est également ajouté Polynomial Feature. C’était juste pour montrer la possibilité de concaténation d’un FeatureUnion, ou Polynomial Feature peut également avoir un intérêt en plus d’un Standard Scaling?
Encore merci