Sélection des fonctionnalités à l'aide de l'apprentissage en profondeur?

9

Je veux calculer l'importance de chaque fonction d'entrée en utilisant un modèle profond.

Mais je n'ai trouvé qu'un seul article sur la sélection des fonctionnalités à l'aide de l'apprentissage en profondeur - la sélection des fonctionnalités approfondies . Ils insèrent une couche de nœuds connectés directement à chaque entité, avant la première couche cachée.

J'ai entendu dire que le réseau de croyances profondes (DBN) peut également être utilisé pour ce genre de travail. Mais je pense que DBN ne fournit que des abstractions (grappes) de fonctionnalités comme PCA, donc bien qu'il puisse réduire la dimension efficacement, je me demande s'il est possible de calculer l'importance (poids) de chaque fonctionnalité.

Est-il possible de calculer l'importance des fonctionnalités avec DBN? Et existe-t-il d'autres méthodes connues pour la sélection des fonctionnalités à l'aide de l'apprentissage en profondeur?

z991
la source

Réponses:

10

Une approche que vous pouvez adopter pour presque tous les modèles de prédiction consiste à former d'abord votre modèle et à trouver sa précision, puis pour une entrée, ajoutez-y du bruit et vérifiez à nouveau la précision. Répétez cette opération pour chaque entrée et observez comment le bruit aggrave les prévisions. Si une entrée est importante, l'incertitude supplémentaire due au bruit sera préjudiciable.

N'oubliez pas de régler la variance du bruit pour qu'elle soit proportionnelle à la variance de l'entrée en question.

Bien sûr, le bruit est aléatoire et vous ne voulez pas qu'une entrée apparaisse sans importance en raison d'effets aléatoires. Si vous avez peu d'exemples de formation, envisagez de calculer à plusieurs reprises le changement de précision pour chaque exemple de formation avec un nouveau bruit ajouté à chaque fois.

En réponse aux commentaires:

Cette analyse peut également être effectuée en supprimant entièrement une variable, mais cela présente certains inconvénients par rapport à l'ajout de bruit.

  • Supposons que l'une de vos entrées soit constante, elle agit comme un terme de biais, elle a donc un rôle à jouer dans la prédiction mais n'ajoute aucune information. Si vous supprimiez complètement cette entrée, la prédiction deviendrait moins précise, car les perceptrons obtiennent le mauvais biais. Cela donne l'impression que l'entrée est importante pour la prédiction même si elle n'ajoute aucune information. L'ajout de bruit ne causera pas ce problème. Ce premier point n'est pas un problème si vous avez normalisé toutes les entrées pour avoir une moyenne nulle.

  • Si deux entrées sont corrélées, les informations sur une entrée donnent des informations sur l'autre. Un modèle peut être bien formé si vous n'utilisez qu'une seule des entrées corrélées, vous voulez donc que l'analyse révèle qu'une seule entrée n'est pas utile. Si vous venez de supprimer l'une des entrées, alors, comme le premier point soulevé, la précision de la prédiction diminuerait beaucoup, ce qui indique qu'elle est importante. Cependant, l'ajout de bruit ne causera pas ce problème.

Hugh
la source
2
Hugh, je suis familier avec cela en supprimant la fonctionnalité. Quels sont les avantages de remplacer la fonction par du bruit?
DaL
@ Dan, je ne voulais pas dire que la fonctionnalité devait être complètement remplacée par du bruit, juste que du bruit devait être ajouté. La suppression d'une entité peut rendre les entités non importantes importantes si elles ont une moyenne non nulle ou si elles sont corrélées avec d'autres variables. J'ai édité ma réponse pour l'expliquer.
Hugh
Merci pour le commentaire. Mais en fait, j'ai un certain nombre de fonctionnalités (entrées) et beaucoup d'entre elles sont corrélées. Dans ce cas, le temps de calcul sera peut-être proche de n! car je dois considérer les combinaisons. Je souhaite donc appliquer un modèle basé sur le deep learning qui peut prendre en compte des combinaisons de fonctionnalités complexes.
z991
@ z991 en régression linéaire multivariable, le même problème peut se produire avec des variables qui ne sont pas parfaitement corrélées. Souvent, nous introduisons chaque variable une par une ou utilisons toutes les variables et les supprimons une à la fois. Il n'y a aucun moyen de calculer simplement la meilleure combinaison. Si cela n'a pas été résolu pour la régression linéaire, vous ne trouverez pas de solution pour les NN. Vous pouvez adopter la même approche et supprimer les variables une à la fois et éviter le n! calcul.
Hugh
1
@Huge Merci pour le commentaire. Je suis d'accord avec toi. Mais ce que je voulais vraiment savoir, c'était comment calculer l'importance de chaque fonctionnalité avec l'apprentissage en profondeur, ou réseau de neurones. Comme ils utilisent plusieurs extractions d'entités (couches cachées), il m'a été difficile d'analyser l'importance des entités. Il est possible de calculer le poids total de chaque fonction, mais cela semble assez complexe et long. Le papier lié utilisait une seule couche linéaire et je pense que c'est une bonne idée. Je voulais connaître d'autres meilleures méthodes pour analyser l'importance des fonctionnalités sur le réseau.
z991
2

Peut-être consultez ce document: https://arxiv.org/pdf/1712.08645.pdf

Ils utilisent l'abandon pour classer les fonctionnalités.

... Dans ce travail, nous utilisons le concept d'abandon sur la couche d'entités en entrée et optimisons le taux d'abandon en fonction des objets correspondant. Étant donné que chaque entité est supprimée stochastiquement, notre méthode crée un effet similaire à l'ensachage des entités (Ho, 1995) et parvient à mieux classer les entités corrélées que les autres méthodes sans ensachage telles que LASSO. Nous comparons notre méthode à Random Forest (RF), LASSO, ElasticNet, Marginal ranking et plusieurs techniques pour dériver de l'importance dans DNN telles que Deep Feature Selection et diverses heuristiques ...

Florida Man
la source