Les données Prétraitement: Les variables font l'entité d'extraction de caractéristiques Intègre

Entités embarqués (enrobage que) la table d'attribut de classification de données d'objet (a à s) à la quantification .

1. Les entités Présentation Embed:

  • entité Intégrer est principalement utilisé dans une profondeur tableau de classification de traitement des données de technologie de l'étude, ou plus précisément le domaine de la PNL le plus populaire, word2vec est en train de faire le mot d'intégration.
  • Les réseaux de neurones par rapport à xgboost courant populaire, LGBM et autre modèle d'arbre n'est pas une bonne affaire directement avec un grand assortiment de niveaux de classification des fonctions. Étant donné que les réseaux de neurones nécessitent classification du processus d'entrée de données est effectuée une à chaud. Lorsque la classification de haut niveau caractéristique du temps, un chaud apportent souvent une explosion de dimension, suivie par l'explosion d'arguments, minimum local de plus en plus enclins à surajustement et ainsi de suite une série de questions.
  • la réduction de dimensionnalité est intégré des entités de ce point de vue d'améliorer ces problèmes. L'unité d'entrée qui lui est connecté dans toute la couche du réseau en classant les attributs, suivi d'un petit nombre d'unités de moins que la couche d'entrée couche cachée (variables continues et un accès direct à la première couche cachée), grâce à la formation du réseau de neurones sortie de la première des unités de couche cachée de la couche cachée associée variables catégoriques, en tant que caractéristiques extraites, pour entrer différents modèles.

 

2. L'incorporation de l'extraction de caractéristiques voir avec la structure de réseau physique (exemple)

(Temporairement omis)

 

 

 

 

 

3. Les entités du code embarqué (échantillon)

  . 1    2    . 3  importation Math
   . 4  importation aléatoire RN
   . 5  importation numpy AS NP
   . 6  de keras.models importer le modèle
   . 7  de keras.layers importation de l'entrée, la Dense, le Concatenate, Reformer, chute de tension
   . 8  de keras.layers.embeddings importation Embedding
   . 9  10  
. 11  # les variables qualitatives données entrantes (pas un chaud) et des données et des rendements variables en continu un objet modèle (qui , selon la composition de la définition des classes cadres bonne réseau de données, vous pouvez appeler après la formation de classe, les données d' alimentation) 
12  DEF build_embedding_network (category_data, continus_data):
 13      
14      #Obtenir des noms de variables catégoriques 
15      cat_cols = [X pour X dans category_data.columns]
 16      
17.      # Stocké dans un dictionnaire pour les variables {Nom: Dimension} 
18 est la      taille Category_origin_dimension = [Math.ceil (category_data [cat_col] .drop_duplicates (). ) pour cat_col à cat_cols]
 . 19      
20 est      # dans le dictionnaire est stocké dans les variables de classification du programme embed {nom: dimension} 
21 est      category_embedding_dimension = [(taille Math.ceil Math.sqrt (category_data [cat_col] .drop_duplicates ().)) pour cat_col en cat_cols]
 22 est  
23 est      # structure de couche de réseau du embeddding avant, la couche dense (entièrement relié) après 2 ;. ensemble d'entraînement X doit première caractéristique de classification, caractérisé en ce qu'après continu.
24      entrées = []
 25      Plongement = [] # liste de couche enterrée données organisées 
26 est      
27      # pour chaque variable, ce qui suit 
28      pour cat_val, cat_origin_dim, cat_embed_dim dans la liste (ZIP (cat_cols, category_origin_dimension, category_embedding_dimension)):
 29          
30          # objets instanciés tenseurs de données d' entrée 
31 est          input_cate_feature l'entrée = (. Forme = (1,)) # le batch_size, vide (dimension) 
32          
33 est          # noeud instanciation couches intégrer: onehot dimension entrée définissant (une variable catégorique dimension), la dimension de sortie (la dimension de celui - ci après la d' intégration), en passant dans l'objet de données d'entrée 
34 est          enrobage que = Embedding (input_dim = cat_origin_dim, 
 35                               = Output_dim cat_embed_dim, 
 36                                input_length =. 1 ) (input_cate_feature)
 37 [          
38 est          # forme incorporer la couche de réglage de la sortie 
39          enrobage qui transforment = (target_shape = (cat_embed_dim,)) (enrobage que)
 40          
41 est          # traversant chacun une donnée d'entrée de variable de classification sera ajouté les entrées de l'objet 
42 est          inputs.append (input_cate_feature)
 43 est          
44 est          # chaque prolongement traversant une variable de classification sur une couche d' enrobage noeud 
45          embeddings.append (enrobage)
 46 est          
47      # DDA dans une opération continue , dans lequel les suivantes: 
48      
49      # obtenir des caractéristiques continues le nombre de variables 
50     = Continus_data.shape cnt_val_num [1. ]
 51 est      # sortie combinée intact que les caractéristiques continues d' enrobage de manière itérative les variables catégoriques ont été ajoutés ensemble (sans opération d' intégration) 
52 est      de cnt_val_num dans les plages (cnt_val_num):
 53 est          . Input_numeric_features l'entrée = (Shape = (1 ,))
 54 est      
55          # données d'entrée continu sans aucun processus d'activation est directement combinée avec la fonction embed + remodeler la variable catégorique 
56 est          embedding_numeric_features = dense (Unités = 16 ) (input_numeric_features) 
 57 est          inputs.append (input_numeric_features)
 58          embeddings.append (embedding_numeric_features)       
 59          
60      # données liées à différentes entrées de couche d' enrobage
61 est      X = la Concaténation () (embeddings) # cette formulation indiquer un retour de la fonction de concaténation, le deuxième support et le paramètre transmis est retourné 
62 est     
63 est      X = dense (Unités = 16, Activation = ' RELU ' ) (X)
 64      
65      # rejet de 15% du noeud 
66      X = chute de tension (0,15 ) (X)
 67      
68      # couche de sortie comprend une fonction d'activation de noeud est RELU 
69      output = dense (. 1, activation = ' RELU ' ) (X)
 70      Modèle = Modèle (entrées, sorties)
 71 est      model.compile (perte = ' mean_squared_error ' , = Optimizer 'ADAM ' )
 72  
73 est      retour Modèle
 74  
75  
76  # Train 
77 NN = build_embedding_network (category_features_in_trainset, continus_features_in_trainset)
 78 NN.fit (X-, y_train, = époques. 3, la batch_size = 40, verbeux = 0)
 79  
80  # lecture de données couche d' enrobage 
81 cate_feature_num = category_features_in_trainset.columns.size
 82  
83 modèle = NN   # créer le modèle original 
84  pour I dans Range (cate_feature_num):
 85      #Si les anciennes caractéristiques de décharge de catégorie après des caractéristiques de décharge continu, cate_feature_num + i est l' ensemble couche d' enrobage 
86      layer_name, le NN.get_config = () [ ' couches ' ] [cate_feature_num + I] [ ' nom ' ]
 87   
88      intermediate_layer_model = Modèle (= Entrées NN.input,
 89                                       sorties = model.get_layer (layer_name, la) .output)
 90      
91 est      # numpy.array 
92      intermediate_output = intermediate_layer_model.predict (X-)
 93  
94 intermediate_output.resize ([train_data.shape [0], cate_embedding_dimension [I] [ 1 ]])
 95      
96     IF I == 0: # sera affecté à la première sortie X_embedding_trans, après superposées derrière l'objet 
97          X_embedding_trans = intermediate_output
 98      l'autre :
 99          X_embedding_trans np.hstack = ((X_embedding_trans, intermediate_output)) # couture horizontale 
100  
101  
102  # Display données quantifiées pour la classification des variables 
103 X_embedding_trans

 

4. point de vue personnel

Des niveaux élevés de variables, il est ID multi-utilisateur, l'adresse, le nom et ainsi de suite. Des variables telles que « adresse » peuvent obtenir moins de provinces, municipalités et autres par les caractéristiques dimensionnelles du concept d'une approche à plusieurs niveaux, « produits » peut également être stratifiée obtenir sa catégorie par concept plus général, mais l'essence de cette opération est lisse données, risque de noyer les informations utiles. Je ne serais probablement pas choisir cette façon de construire un modèle prédictif (les statistiques sur la répartition, vue en perspective du temps souvent utilisés pour). Certaines personnes ne seraient pas classer ces variables, mais je pense qu'il va perdre certains facteurs utiles, il est donc préférable de faire le meilleur usage.

Equipé de la même entité word2vector objets similaires font les valeurs de sortie dans la couche cachée est également similaire. L'utilisation d'une faible latitude, variables continues de modèle de données de formation, l'effet sera beaucoup mieux que la grande dimension, les données de formation clairsemée.

Cette méthode d'extraction de caractéristique de variables catégoriques est très efficace pour améliorer la précision de la prédiction est, avec le modèle empilé aussi efficace.

Je suppose que tu aimes

Origine www.cnblogs.com/mx0813/p/12635378.html
conseillé
Classement