Comment encoder une classe avec 24 000 catégories?

10

Je travaille actuellement sur un modèle de régression logistique pour la génomique. L'un des champs de saisie que je souhaite inclure en tant que covariable est genes. Il existe environ 24 000 gènes connus. Il existe de nombreuses fonctionnalités avec ce niveau de variabilité en biologie computationnelle et des centaines de milliers d'échantillons sont nécessaires.

  • Si je LabelEncoder()ces gènes 24K
  • et puis OneHotEncoder()eux ...

Est-ce que 24 000 colonnes rendront mes temps de formation de keras déraisonnables pour un processeur i7 quad-core 2,2 GHz?

Si oui, existe-t-il une approche différente de l'encodage que je peux adopter avec cela?

Dois-je en quelque sorte essayer de dédier une couche de mon modèle à cette fonctionnalité?

Est-ce à dire que j'ai besoin de 24 000 nœuds d'entrée?

HashRocketSyntax
la source
Pourquoi ne pas apprendre la représentation en utilisant VAE? Je pense que dans l'apprentissage des séquences de gènes, la représentation (comme cela se fait en PNL) aura beaucoup de sens par rapport à un simple PCA ...
n1tk

Réponses:

10

Oui, l'utilisation d'un codage à chaud sur les fonctionnalités 24k nécessite des nœuds d'entrée 24k. Cependant, cela ne devrait pas être un problème pour Keras (ou toute autre bibliothèque d'apprentissage en profondeur). Le traitement du langage naturel utilise souvent un codage à chaud sur des mots avec une taille de vocabulaire dans le même stade.

Si vous utilisez un modèle "profond", l'une de vos couches masquées doit veiller à réduire la dimensionnalité de vos données. Une étape de prétraitement distincte n'est généralement pas nécessaire.

Le temps de formation ne doit pas être déraisonnable.

C. Yduqoli
la source
Merci pour le contrôle de santé mentale.
HashRocketSyntax
J'ai remarqué que vous avez mentionné une couche, pas PCA dans sklearn. Recommanderiez-vous les encodeurs automatiques comme une forme de réduction de dimensionnalité?
HashRocketSyntax
2
Vous avez mentionné que vous utilisez Keras, vous utilisez donc une sorte de réseau de neurones, n'est-ce pas? Si quelque part dans votre réseau, vous avez une couche avec un plus petit nombre de nœuds que votre entrée, le réseau effectue automatiquement la réduction de dimensionnalité. Je suppose que vous n'avez qu'une (ou un petit nombre) de sorties de régression. Donc, une façon simple est d'avoir la couche d'entrée (d = 24k), une ou plusieurs couches intermédiaires (d = 1k ou quelque chose comme ça) et votre couche de sortie (d = 1).
C.Yduqoli
Bien que des couches de taille similaire soient courantes en PNL, il est généralement déraisonnable de former des modèles PNL modernes sur le processeur, les GPU puissants sont vraiment des enjeux de table en PNL pour tout ce qui dépasse les petits modèles `` jouets ''. D'un autre côté, ce n'est pas une grande barrière, car les GPU physiques et cloud sont assez facilement disponibles.
Peteris
6

L'incorporation d'entité pour les variables catégorielles ( téléavertisseur d'origine ) serait une approche très appropriée ici. Lisez ici ou ici . J'ai en fait mis des morceaux de codes ici et là et fait une implémentation complète, voir ce dépôt git. Cela gère facilement des variables catégorielles cardinales très élevées en utilisant des réseaux de neurones. Je ne vais pas énumérer les avantages et les inconvénients de OHE, vous venez de Google, mais l'un de ses principaux inconvénients, en particulier. lorsque la variable catégorielle cardinale est très élevée, cela augmente considérablement votre espace de fonctionnalités, ce qui, à mon avis, n'est pas idéal. Et surtout OHE, à ma connaissance, ne rend pas compte de la relation sémantique entre les catégories s'il existe une telle relation! Cependant, l'incorporation d'entité est un concept de l'incorporation de mots dans la PNL, les pondérations qui sont apprises pour coder les catégories peuvent potentiellement capturer des relations intra-catégorie.

TwinPenguins
la source
3

Généralement, ce nombre de gènes devrait être réduit à un ensemble beaucoup plus petit de caractéristiques significatives. Ensuite, l'ensemble de fonctionnalités réduit peut être utilisé dans le modèle. Par exemple, l'analyse en composantes principales (ACP) est l'une des techniques de réduction les plus courantes et a été utilisée pour les données d'expression génique .

"L' apprentissage automatique pour l'intégration des données en biologie et en médecine: principes, pratiques et opportunités" par Zitnika et al. couvre une variété de techniques d'ingénierie des fonctionnalités pour les gènes.

Brian Spiering
la source
Merci est logique. Réduisez l'espace des fonctionnalités au nombre de gènes pertinents (et de zones de régulation dans les wgs).
HashRocketSyntax
Est-ce trop difficile de demander quel type de réduction de dimensionnalité vous recommanderiez?: ACP, collecteur, regroupement / densité, une sorte de réseau neuronal?
HashRocketSyntax