Régression saine par étapes?

14

Supposons que je veuille construire un classificateur binaire. J'ai plusieurs milliers de fonctionnalités et seulement quelques dizaines d'échantillons. De la connaissance du domaine, j'ai une bonne raison de croire que l'étiquette de classe peut être prédite avec précision en utilisant seulement quelques fonctionnalités, mais je ne sais pas lesquelles . Je veux également que la règle de décision finale soit facile à interpréter / expliquer, nécessitant en outre un petit nombre de fonctionnalités. Certains sous-ensembles de mes fonctionnalités sont fortement corrélés, donc sélectionner indépendamment les plus prédictifs ne fonctionnerait pas. Je veux également pouvoir faire des tests d'hypothèse significatifs sur mes fonctionnalités.

La procédure de régression pas à pas suivante est-elle raisonnable dans ces conditions:

  1. Compte tenu des entités déjà présentes dans le modèle (ou simplement de l'ordonnée à l'origine lors de la première itération), sélectionnez l'entité qui produit le rapport de vraisemblance de log le plus élevé lorsqu'elle est ajoutée au modèle. Utilisez le test du chi carré du rapport de vraisemblance pour calculer une valeur P nominale pour chaque test d'hypothèse effectué dans cette sélection. La valeur nulle ici est que l'ajout de la variable supplémentaire au modèle n'offre aucune capacité prédictive supplémentaire. L'alternative est qu'elle augmente la capacité prédictive

  2. Traitez les hypothèses testées à l'étape 1 de chaque itération comme une famille et calculez le taux de fausses découvertes pour la plus petite valeur P (pour la caractéristique sélectionnée) en utilisant quelque chose comme Benjamini-Hochberg.

  3. Aller à 1 sauf si certains critères d'arrêt sont remplis.

  4. Indiquez les taux de fausses découvertes pour les entités individuelles, mais pas la valeur P pour le modèle dans son ensemble (car cela sera massivement gonflé). Chacune de ces multiples valeurs corrigées de test P représente la signification statistique de cette caractéristique étant donné toutes les caractéristiques précédemment ajoutées au modèle.

Est-ce que faire quelque chose comme ça dans ces circonstances évite avec succès toutes les critiques typiques d'une régression pas à pas? Les taux de fausses découvertes ainsi calculés sont-ils raisonnables?

dsimcha
la source
3
Y a-t-il une raison de ne pas suivre une approche de régression pénalisée (lasso, élastique, etc.)?
Ben Bolker

Réponses:

11

Je ne vous recommanderais pas d'utiliser cette procédure. Ma recommandation est: abandonner ce projet. Abandonnez et partez. Vous n'avez aucun espoir que cela fonctionne.

Illustration de Dore de l'Enfer de Dante "Abandonner l'espoir" source pour l'image

Mis à part les problèmes standard de la sélection pas à pas (cf. ici ), dans votre cas, vous avez très probablement des prédictions parfaites en raison de la séparation dans un espace aussi dimensionnel.

Je n'ai pas de détails sur votre situation, mais vous déclarez n'avoir "que quelques dizaines d'échantillons". Soyons charitables et disons que vous en avez 90. Vous dites en outre que vous avez "plusieurs milliers de fonctionnalités". Imaginons que vous n'en ayez «que» 2 000. Par souci de simplicité, disons que toutes vos fonctionnalités sont binaires. Vous "pensez que l'étiquette de classe peut être prédite avec précision en utilisant seulement quelques fonctionnalités", disons que vous rechercherez des ensembles de 9 fonctionnalités maximum. Enfin, imaginons que la relation soit déterministe, afin que la vraie relation soit toujours parfaitement présente dans vos données. (Nous pouvons modifier ces chiffres et ces hypothèses, mais cela ne peut qu'aggraver le problème.) Maintenant, Dans quelle mesure seriez-vous en mesure de retrouver cette relation dans ces conditions (généreuses)? Autrement dit, à quelle fréquence l'ensemble correct serait-il le seul qui donne une précision parfaite? Ou, autrement dit, combien d'ensembles de neuf fonctionnalités s'adapteront également au hasard?

Quelques calculs et simulations (trop) simples devraient fournir des indices sur cette question. Tout d'abord, avec 9 variables, chacune pouvant être 0 ou 1, le nombre de modèles qu'une observation pourrait montrer est de , mais vous n'aurez que 90 observations. Ainsi, il est tout à fait possible que, pour un ensemble donné de 9 variables binaires, chaque observation ait un ensemble différent de valeurs de prédicteur - il n'y a pas de répliques. Sans répétitions avec les mêmes valeurs de prédicteur où certains ont y = 0 et certains y = 1, vous aurez une séparation complète et une prédiction parfaite de chaque observation sera possible. 29=512

Ci-dessous, j'ai une simulation (codée en R) pour voir à quelle fréquence vous pourriez ne pas avoir de modèles de valeurs x avec 0 et 1. La façon dont cela fonctionne est que j'obtiens un ensemble de nombres de 1 à 512, qui représentent les modèles possibles, et voir si l'un des modèles dans les 45 premiers (qui pourraient être les 0) correspond à l'un des modèles dans le second 45 (ce pourrait être les 1). Cela suppose que vous disposez de données de réponse parfaitement équilibrées, ce qui vous offre la meilleure protection possible contre ce problème. Notez que le fait d'avoir des vecteurs x répliqués avec des valeurs y différentes ne vous sort pas vraiment du bois, cela signifie simplement que vous ne pourriez pas prédire parfaitement chaque observation dans votre jeu de données, qui est la norme très stricte I utilise ici.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

La simulation suggère que vous auriez ce problème avec environ 1,8% des ensembles de 9 variables x. Maintenant, combien y a-t-il d'ensembles de 9? Strictement, ce serait (puisque nous avons stipulé que les 9 vraies variables causales déterministes sont dans votre ensemble). Cependant, bon nombre de ces ensembles se chevaucheront; il y aura 1991 /1991 choose 9=1.3×1024 ensembles de 9nechevauchent dans une partition spécifiée de vos variables (avec beaucoupces partitions possibles). Ainsi, à l'intérieur d'une partition donnée, on pourrait s'attendre à ce qu'il y ait 221 × 0,018 41991/9221221×0.0184 des ensembles de 9 variables x qui prédiront parfaitement chaque observation de votre ensemble de données.

Notez que ces résultats ne concernent que les cas où vous avez un ensemble de données relativement plus grand (dans les «dizaines»), un nombre relativement plus petit de variables (dans les «milliers»), ne recherche que les cas où chaque observation unique peut être parfaitement prédite ( il y aura beaucoup plus d'ensembles qui sont presque parfaits), etc. Votre cas réel ne fonctionnera probablement pas «aussi bien». De plus, nous avons stipulé que la relation est parfaitement déterministe. Que se passerait-il s'il y avait du bruit aléatoire dans la relation? Dans ce cas, vous aurez toujours ~ 4 ensembles (nuls) qui prédisent parfaitement vos données, mais le bon ensemble pourrait bien ne pas en faire partie .

Tl; dr , le point fondamental ici est que votre ensemble de variables est beaucoup trop grand / dimensionnel élevé, et votre quantité de données est beaucoup trop petite, pour que tout soit possible. S'il est vraiment vrai que vous avez des «dizaines» d'échantillons, des «milliers» de variables et absolument aucune idée concrète des variables qui pourraient être correctes, vous n'avez aucun espoir d'aller n'importe où avec n'importe quelle procédure. Allez faire autre chose avec votre temps.

gung - Réintégrer Monica
la source
1
Maintenant, c'est une introduction originale à une réponse, je l'adore.
Łukasz Grad
1
L'abandon d'un projet est souvent une option raisonnable. Bien qu'il ne s'agisse certainement que d'une petite proportion de cas, j'ai plus d'une fois informé les clients que les projets qu'ils envisagent ne seront pas réalisables.
gung - Réintégrer Monica
1

Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

XjY=1Y=0

Je suggère donc d'évaluer directement la prédiction, plutôt que le rapport de vraisemblance. Cependant, l'observation prévue ne doit pas être incluse dans l'estimation du modèle (car c'est exactement la situation à laquelle vous serez confronté lors de l'utilisation réelle de votre modèle). Ayez donc une nouvelle étape 1) (gras est mon changement suggéré). 1) Étant donné les entités déjà présentes dans le modèle (ou simplement l'interception lors de la première itération), sélectionnez l'entité qui produit les meilleures prédictions lorsqu'elle est ajoutée au modèle.

Maintenant, vous devez décider

  1. ce que vous voulez «mieux» signifier mathématiquement
  2. comment diviser vos données en parties «ajustées» et «prédictives»

Je ferai une suggestion pour chacun:

  1. Y=1Y=0F=CC+IFCI = "incorrect")
  2. 12,,n121,3,,n2nF=CnFm .

Fm(m=1,,M)m=argmaxmMFm . Notez que la bonne chose à propos de la méthode ci-dessus est que vous n'avez pas à vous soucier du nombre de variables dans votre modèle ou de la corrélation de ces variables (sauf si cela rend impossible l'ajustement réel du modèle). Cela est dû au fait que le modèle est adapté séparément à la prédiction, donc un biais dû à un sur-ajustement ou une dégradation due à l'instabilité numérique apparaîtra dans les prévisions les moins bonnes.

sthMs=p+1XjXj

Pas à pas peut être risqué parce que vous pouvez trouver des "maximums locaux" au lieu de "maximums globaux", surtout parce que vous avez un si grand nombre de prédicteurs (c'est un grand "espace" pour optimiser, et est probablement multimodal - ce qui signifie qu'il existe de nombreux "meilleurs" modèles)

100F

Je pense que vous en trouverez beaucoup plus facile pour justifier votre choix du modèle final auprès d'un non-statisticien, plutôt que d'essayer d'expliquer pourquoi la valeur de p indique que le modèle est bon.

Y

Deux dernières remarques:

  1. Vous pouvez également utiliser ce mécanisme pour décider si l'étape par étape est meilleure que la sélection avant (uniquement ajouter des variables) ou la sélection arrière (commencer à partir du modèle complet et supprimer uniquement les variables).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWY . Fondamentalement,λλ
probabilitéislogique
la source
Merci pour le conseil. Il y a cependant trois problèmes à cela: 1. Je me soucie de quantifier l'incertitude dans mes prédictions et la contribution de chaque variable, pas seulement la précision des prédictions binaires. 2. Compte tenu de la nature de mon ensemble de données, il est beaucoup trop intensif en calcul. 3. D'après la connaissance du domaine, je pense que la question des optima locaux n'est pas importante.
dsimcha
100nF
En fait, vous avez raison. Cette procédure ferait partie d'une base de code plus large et j'ai oublié que le reste du code n'aurait pas besoin d'être réexécuté pour chaque itération jackknife. Cependant, les deux autres points s'appliquent toujours.
dsimcha
FFFchosenF(j) est comme un effet marginal pour le jème
probabilitéislogic
F