Pour les classificateurs linéaires, des coefficients plus importants impliquent-ils des caractéristiques plus importantes?

15

Je suis un ingénieur logiciel travaillant sur l'apprentissage automatique. D'après ma compréhension, la régression linéaire (comme OLS) et la classification linéaire (comme la régression logistique et SVM) font une prédiction basée sur un produit interne entre les coefficients formés et les variables caractéristiques :wx

y^=f(wx)=f(iwixi)

Ma question est: après que le modèle a été formé (c'est-à-dire après que les coefficients wi ont été calculés), est-il vrai que les coefficients seront plus grands pour les variables caractéristiques qui sont plus importantes pour que le modèle puisse prédire avec plus de précision?

En d'autres termes, je demande si les amplitudes relatives des coefficients peuvent être utilisées pour la sélection des caractéristiques en ordonnant simplement les variables par valeur de coefficient, puis en sélectionnant les caractéristiques avec les coefficients les plus élevés? Si cette approche est valide, pourquoi n'est-elle pas mentionnée pour la sélection des fonctionnalités (avec les méthodes d'encapsulation et de filtrage, etc.).

La raison pour laquelle je pose cette question est que je suis tombé sur une discussion sur la régularisation L1 vs L2 . Il y a un texte de présentation qui dit:

La sélection des fonctionnalités intégrées est fréquemment mentionnée comme une propriété utile de la norme L1, ce que la norme L2 ne fait pas. C'est en fait le résultat de la norme L1, qui tend à produire des coefficients clairsemés (expliqués ci-dessous). Supposons que le modèle ait 100 coefficients mais seulement 10 d'entre eux ont des coefficients non nuls, cela signifie effectivement que "les 90 autres prédicteurs sont inutiles pour prédire les valeurs cibles".

En lisant entre les lignes, je suppose que si un coefficient est proche de 0, alors la variable caractéristique avec ce coefficient doit avoir peu de pouvoir prédictif.

EDIT : J'applique également l'échelle z à mes variables numériques.

stackoverflowuser2010
la source
1
Notez que le code sous-jacent aux analyses LASSO (norme L1) et de régression de crête (norme L2) devrait pré-mettre à l'échelle les variables prédictives avant l'analyse, même si le code retransforme ensuite les coefficients dans les échelles variables d'origine. Ceux qui utilisent du code qui n'est pas pré-dimensionné se retrouvent avec les problèmes notés dans la réponse de @josliber, qu'ils fassent OLS, LASSO ou ridge.
EdM
3
Je pense que quelque chose qui mérite d'être mentionné est que, lorsque vous réfléchissez à ce que vous essayez d'exprimer par la phrase "alors la variable caractéristique avec ce coefficient doit avoir peu de pouvoir prédictif", pouvez-vous expliquer précisément ce que cela signifie vraiment? J'ai cependant constaté par expérience que le concept de «pouvoir prédictif» d'une variable individuelle dans un modèle multivarié n'a généralement pas de fondement conceptuel.
Matthew Drury
4
Je pense que l'erreur dans ce genre de pensée est que vous n'êtes probablement pas limité à produire un modèle à une variable. Si vous l'êtes et que vous souhaitez fournir un modèle avec la meilleure précision, ils sont sûrs que c'est une chose raisonnable à faire. Si vous ne l'êtes pas, c'est-à-dire si vous allez produire un modèle multivarié, alors, comme @EdM le répond, le concept d'importance variable est très, très glissant et manque de fondement conceptuel solide. Il n'est pas du tout évident que le pouvoir prédictif dans un modèle univarié devrait être considéré comme pertinent dans un contexte multivarié.
Matthew Drury
1
@MatthewDrury: Je ne sais pas pourquoi vous faites une grosse affaire de multi-fonctionnalités. Il existe tout un champ de "sélection de fonctionnalités" (par exemple les méthodes d'encapsulation) qui existe; suggérez-vous que ce domaine manque d'une base conceptuelle solide?
stackoverflowuser2010
1
@ stackoverflowuser2010 Yah, je suis probablement une valeur aberrante à mon avis ici, mais ce serait une description quelque peu précise de mon point de vue.
Matthew Drury

Réponses:

24

Pas du tout. L'amplitude des coefficients dépend directement des échelles sélectionnées pour les variables, ce qui est une décision de modélisation quelque peu arbitraire.

Pour voir cela, considérons un modèle de régression linéaire prédisant la largeur des pétales d'un iris (en centimètres) compte tenu de sa longueur (en centimètres):

summary(lm(Petal.Width~Petal.Length, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  -0.363076   0.039762  -9.131  4.7e-16 ***
# Petal.Length  0.415755   0.009582  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

Notre modèle atteint une valeur R ^ 2 ajustée de 0,9266 et attribue une valeur de coefficient 0,415755 à la variable Longueur du pétale.

Cependant, le choix de définir Petal.Length en centimètres était assez arbitraire, et nous aurions pu définir la variable en mètres:

iris$Petal.Length.Meters <- iris$Petal.Length / 100
summary(lm(Petal.Width~Petal.Length.Meters, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length.Meters, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#                     Estimate Std. Error t value Pr(>|t|)    
# (Intercept)         -0.36308    0.03976  -9.131  4.7e-16 ***
# Petal.Length.Meters 41.57554    0.95824  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

Bien sûr, cela n'affecte pas vraiment le modèle ajusté - nous avons simplement attribué un coefficient 100 fois plus élevé à Petal.Length.Meters (41.57554) qu'à Petal.Length (0.415755). Toutes les autres propriétés du modèle (R ^ 2 ajusté, statistiques t, valeurs p, etc.) sont identiques.

Généralement, lors de l'ajustement de modèles linéaires régularisés, on normalisera d'abord les variables (par exemple, pour avoir une moyenne de 0 et une variance unitaire) afin d'éviter de privilégier certaines variables par rapport à d'autres en fonction des échelles sélectionnées.

En supposant des données normalisées

Même si vous aviez normalisé toutes les variables, les variables avec des coefficients plus élevés peuvent ne pas être aussi utiles dans les prédictions car les variables indépendantes sont rarement définies (ont une faible variance). Par exemple, considérons un ensemble de données avec la variable dépendante Z et les variables indépendantes X et Y prenant des valeurs binaires

set.seed(144)
dat <- data.frame(X=rep(c(0, 1), each=50000),
                  Y=rep(c(0, 1), c(1000, 99000)))
dat$Z <- dat$X + 2*dat$Y + rnorm(100000)

Par construction, le coefficient pour Y est environ deux fois plus grand que le coefficient pour X lorsque les deux sont utilisés pour prédire Z par régression linéaire:

summary(lm(Z~X+Y, data=dat))
# Call:
# lm(formula = Z ~ X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.4991 -0.6749 -0.0056  0.6723  4.7342 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.094793   0.031598   -3.00   0.0027 ** 
# X            0.999435   0.006352  157.35   <2e-16 ***
# Y            2.099410   0.031919   65.77   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.9992 on 99997 degrees of freedom
# Multiple R-squared:  0.2394,  Adjusted R-squared:  0.2394 
# F-statistic: 1.574e+04 on 2 and 99997 DF,  p-value: < 2.2e-16

Pourtant, X explique plus la variance de Z que Y (le modèle de régression linéaire prédisant Z avec X a une valeur R ^ 2 0,2065, tandis que le modèle de régression linéaire prédisant Z avec Y a une valeur R ^ 2 0,0511):

summary(lm(Z~X, data=dat))
# Call:
# lm(formula = Z ~ X, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.2587 -0.6759  0.0038  0.6842  4.7342 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 1.962629   0.004564   430.0   <2e-16 ***
# X           1.041424   0.006455   161.3   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.021 on 99998 degrees of freedom
# Multiple R-squared:  0.2065,  Adjusted R-squared:  0.2065 
# F-statistic: 2.603e+04 on 1 and 99998 DF,  p-value: < 2.2e-16

contre:

summary(lm(Z~Y, data=dat))
# Call:
# lm(formula = Z ~ Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.0038 -0.7638 -0.0007  0.7610  5.2288 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.09479    0.03529  -2.686  0.00724 ** 
# Y            2.60418    0.03547  73.416  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.116 on 99998 degrees of freedom
# Multiple R-squared:  0.05114, Adjusted R-squared:  0.05113 
# F-statistic:  5390 on 1 and 99998 DF,  p-value: < 2.2e-16

Le cas de la multi-colinéarité

Un troisième cas où de grandes valeurs de coefficient peuvent être trompeuses serait dans le cas d'une multi-colinéarité significative entre les variables. Par exemple, considérons un ensemble de données où X et Y sont fortement corrélés mais W n'est pas fortement corrélé aux deux autres; nous essayons de prédire Z:

set.seed(144)
dat <- data.frame(W=rnorm(100000),
                  X=rnorm(100000))
dat$Y <- dat$X + rnorm(100000, 0, 0.001)
dat$Z <- 2*dat$W+10*dat$X-11*dat$Y + rnorm(100000)
cor(dat)
#              W             X             Y          Z
# W 1.000000e+00  5.191809e-05  5.200434e-05  0.8161636
# X 5.191809e-05  1.000000e+00  9.999995e-01 -0.4079183
# Y 5.200434e-05  9.999995e-01  1.000000e+00 -0.4079246
# Z 8.161636e-01 -4.079183e-01 -4.079246e-01  1.0000000

Ces variables ont à peu près la même moyenne (0) et la variance (~ 1), et la régression linéaire attribue des valeurs de coefficient beaucoup plus élevées (en valeur absolue) à X (environ 15) et Y (environ -16) qu'à W ( environ 2):

summary(lm(Z~W+X+Y, data=dat))
# Call:
# lm(formula = Z ~ W + X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.1886 -0.6760  0.0026  0.6679  4.2232 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  1.831e-04  3.170e-03   0.058    0.954    
# W            2.001e+00  3.172e-03 630.811  < 2e-16 ***
# X            1.509e+01  3.177e+00   4.748 2.05e-06 ***
# Y           -1.609e+01  3.177e+00  -5.063 4.13e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.002 on 99996 degrees of freedom
# Multiple R-squared:  0.8326,  Adjusted R-squared:  0.8326 
# F-statistic: 1.658e+05 on 3 and 99996 DF,  p-value: < 2.2e-16

Pourtant, parmi les trois variables du modèle W est la plus importante: si vous supprimez W du modèle complet, le R ^ 2 passe de 0,833 à 0,166, tandis que si vous supprimez X ou Y le R ^ 2 est pratiquement inchangé.

josliber
la source
1
(+1) Je pense que c'est une bonne réponse, et ce point doit être souligné. D'un autre côté, je pense qu'il y a beaucoup à dire même lorsque les variables ont été normalisées (et sont donc sans unité), donc il y a de la place pour quelques réponses supplémentaires.
Matthew Drury
Merci d'avoir répondu. Bien que votre écriture soit longue, elle n'est pas très approfondie car vous tirez des conclusions à partir de petites données synthétiques. De plus, R ^ 2 est spécifique à la régression linéaire. Je crois que la métrique d'erreur la plus appropriée est RMSE, ou précision / F1 pour les problèmes de classification.
stackoverflowuser2010
1
MAIS si vous mettez à l'échelle les données dans le dernier exemple, vous avez que la seule variable significative est W
marcodena
11

L '«importance des fonctionnalités» est un concept très glissant même lorsque tous les prédicteurs ont été ajustés à une échelle commune (ce qui en soi est un problème non trivial dans de nombreuses applications pratiques impliquant des variables catégorielles ou des distributions asymétriques). Donc, si vous évitez les problèmes de mise à l'échelle indiqués dans la réponse de @josliber ou le problème de faible variance des prédicteurs soulevé par @dsaxton, vous avez toujours des problèmes supplémentaires.

Par exemple, une mesure plus utile de l'importance des caractéristiques peut être le rapport de son coefficient à l'erreur estimée de son coefficient. Un coefficient élevé avec une grande erreur estimée ne serait pas nécessairement utile dans les prévisions. Ainsi, la magnitude des coefficients seule, même dans la situation pré-mise à l'échelle, n'est pas un bon guide de «l'importance».

Néanmoins, un prédicteur peut être important même si le rapport amplitude / erreur de son coefficient est faible (c'est-à-dire qu'il n'est pas "statistiquement significatif"). Les modèles linéaires permettent de prendre en compte plusieurs variables de prédicteur simultanément, de sorte que l'inclusion d'un prédicteur «non significatif» dans un modèle peut améliorer les performances globales fournies par la collection combinée de prédicteurs.

De plus, les tentatives de sélection de variables prédictives "importantes" ont tendance à dépendre fortement de l'échantillon de données particulier et ne s'étendent souvent pas bien à d'autres échantillons, en particulier si les variables sont corrélées. Vous pouvez le constater par vous-même en répétant la sélection des fonctionnalités sur plusieurs échantillons d'amorçage du même ensemble de données. Frank Harrell, dans cette réponse, montre comment utiliser son rmspackage dans R pour l'importance des fonctionnalités de classement, et note dans cette réponse comment utiliser le bootstrap pour obtenir des intervalles de confiance pour les classements. Le bootstrapping peut servir de mise en garde à ceux qui accordent trop d'importance à «l'importance des fonctionnalités».

Cette question d'il y a près de 3 ans, soulignée par @amoeba, va également dans le détail des difficultés avec l'importance des fonctionnalités dans les modèles de régression multiple.

EdM
la source
Ratio d'erreur estimée. Est-ce connu sous le nom de "coefficient normalisé"?
HelloWorld
@StudentT un " coefficient standardisé " est un coefficient de régression lorsque les variables indépendantes et dépendantes ont toutes été mises à l'échelle pour avoir une variance unitaire. Cela ne comprend aucune information sur l'erreur estimée dans le coefficient. Le rapport que je décris est la racine carrée de la statistique de Wald utilisée par Harrell comme mesure d'importance variable dans le premier de mes liens.
EdM
6

Juste pour ajouter à la réponse précédente, le coefficient lui-même ne parvient pas non plus à saisir la variabilité d'un prédicteur, ce qui a un effet important sur son utilité pour faire des prédictions. Considérez le modèle simple

E(Ouije)=α+βXje

Xje(p)p0β

dsaxton
la source