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.