El pretratamiento de datos: Las variables categóricas hacer característica incrusta entidad extracción

Entidades incorporado (incrustación de que) la tabla de atributos de clasificación de datos objeto (una a s) para la cuantificación .

1. Introducción entidades Embed:

  • entidad incrustar se utiliza principalmente en un conjunto de datos tecnología de procesamiento de estudio en profundidad tabla de clasificación, o más precisamente el campo de la PNL más popular, word2vec está haciendo la palabra de incrustación.
  • Las redes neuronales en comparación con xgboost corriente popular, LGBM y otro modelo de árbol no es un trato bueno directamente con una gran variedad de niveles de clasificación de características. Dado que las redes neuronales requieren clasificación del proceso de entrada de datos se realiza de una sola caliente. Cuando la clasificación tiempo característico de alto nivel, uno en caliente suelen traer explosión dimensión, seguido de la explosión argumento, mínimo local más y más propenso a exceso de montaje y así sucesivamente una serie de cuestiones.
  • reducción de dimensionalidad se incrusta entidades desde este punto de vista para mejorar estos problemas. La unidad de entrada conectado a él en toda la capa de la red por atributos clasificación, seguido de un escaso número de unidades menos que la capa oculta capa de entrada (variables continuas y un acceso directo a la capa de primera oculto), a través de la formación de redes neuronales de salida de las unidades de la capa de primera ocultos en la capa oculta asociada variables categóricas, como características extraídas, para la introducción de varios modelos.

 

2. La incorporación de la extracción de características ver con la estructura de red física (ejemplo)

(Temporalmente omitido)

 

 

 

 

 

3. Las entidades código incrustado (muestra)

  . 1    2    . 3  Importación Math
   . 4  Importación azar como RN
   . 5  Importación numpy AS NP
   . 6  de keras.models importar el modelo
   . 7  de keras.layers importación la entrada, el denso, el Concatenate, Reshape, Dropout
   . 8  de keras.layers.embeddings importación incrustación
   . 9  10  
. 11  # las variables categóricas de datos de entrada (no uno-caliente) y continua variable de datos y devuelve un objeto del modelo (que según la composición de la definición de buenas redes de datos clases del framework, puede llamar después de la clase, la alimentación de la formación de datos) 
12  DEF build_embedding_network (category_data, continus_data):
 13      
14      #La obtención de los nombres de variables categóricas 
15      cat_cols = [X para X en category_data.columns]
 16      
17.      # Almacenado en un diccionario para las variables categóricas {Nombre: Dimensión} 
18 es      Category_origin_dimension = [Math.ceil (category_data [cat_col] .drop_duplicates () tamaño. ) para cat_col en cat_cols]
 . 19      
20 está      # en el diccionario se almacena en las variables de clasificación programa incrustar {name: dimensión} 
21 es      category_embedding_dimension = [Math.ceil (Math.sqrt (category_data [cat_col] .drop_duplicates () de tamaño.)) para cat_col en cat_cols]
 22 es  
23 es      # estructura de capa de red de la embeddding frontal, capa densa (totalmente conectado) después de característica conjunto ;. 2 formación X debe primera clasificación, caracterizado porque después de continua.
24      Entradas = []
 25      inmersiones = [] # de datos lista de capas incrustado organizados 
26 es      
27      # para cada variable categórica, la siguientes 
28      para cat_val, cat_origin_dim, cat_embed_dim en lista (ZIP (cat_cols, category_origin_dimension, category_embedding_dimension)):
 29          
30          # objetos instanciados tensor de datos de entrada 
31 es          input_cate_feature la entrada = (. Shape = (1,)) # la batch_size, vacío (dimensión) 
32          
33 es          # nodo instanciación incrustar capas: onehot dimensión de entrada que define (a variable categórica dimensión), la dimensión de salida (la dimensión de los mismos después de la embed), pasando en el objeto de datos de entrada 
34 está          incrustando que = Embedding (input_dim = cat_origin_dim, 
 35                               = Output_dim cat_embed_dim, 
 36                                input_length =. 1 ) (input_cate_feature)
 37 [          
38 es          # forma incrustar capa de ajuste de salida 
39          la incrustación que Reshape = (target_shape = (cat_embed_dim,)) (incrustando que)
 40          
41 es          # cada atraviesa un conjunto de datos de entrada variables de clasificación será añadido entradas el objeto 
42 es          inputs.append (input_cate_feature)
 43 es          
44 es          # cada extensión atravesar una variable de clasificación en un nodo de la incorporación de la capa 
45          embeddings.append (incrustación)
 46 es          
47      # DDA en una operación continua en el que los siguientes: 
48      
49      # obtener características continuas el número de variables 
50     = Continus_data.shape cnt_val_num [1. ]
 51 es      # combinada de salida intacta como las características continuas iterativamente incrustación de las variables categóricas se añadió junto (sin operación incrustación) 
52 es      para cnt_val_num en Rango (cnt_val_num):
 53 es          . Input_numeric_features la entrada = (Shape = (1 ,))
 54 se      
55          # datos de entrada continuo sin ningún proceso de activación se combina directamente con la función incrustar + remodelar la variable categórica 
56 es          embedding_numeric_features = la densa (Unidades = 16 ) (input_numeric_features) 
 57 es          inputs.append (input_numeric_features)
 58          embeddings.append (embedding_numeric_features)       
 59          
60      # datos vinculados a diferentes entradas de capa de encaje
61 es      X = la Concatenate () (incrustaciones) # esta formulación indicar una función concatenar devoluciones, el segundo soporte y se devuelve el parámetro pasado 
62 es     
63 es      X = el denso (Unidades = 16, Activación = ' RELU ' ) (X)
 64      
65      # descartando 15% del nodo 
66      X = deserción (0,15 ) (X)
 67      
68      # capa de salida comprende una función de activación de nodo es RELU 
69      de salida = la densa (. 1, la activación = ' RELU ' ) (X)
 70      Modelo = el modelo (entradas, salida)
 71 es      model.compile (Pérdida = ' mean_squared_error ' , = Optimizer 'ADAM ' )
 72  
73 es      el retorno Modelo
 74  
75  
76  # tren 
77 NN = build_embedding_network (category_features_in_trainset, continus_features_in_trainset)
 78 NN.fit (X-, y_train, = épocas. 3, la batch_size = 40, verbose = 0)
 79  
80  # lectura de datos capa de encaje 
81 cate_feature_num = category_features_in_trainset.columns.size
 82  
83 modelo = NN   # crear el modelo original 
84  para que en el rango (cate_feature_num):
 85      #Si las características anteriores categoría de descarga después de características de descarga continuas, cate_feature_num + i es todo incrustación capa 
86      nombre_capa, la NN.get_config = () [ ' Layers ' ] [cate_feature_num + I] [ ' nombre ' ]
 87   
88      intermediate_layer_model = el Modelo (= Entradas NN.input,
 89                                       Salidas = model.get_layer (nombre_capa, la) .output)
 90      
91 es      # 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: # será asignado a la primera salida X_embedding_trans, posterior superponen detrás del objeto 
97          X_embedding_trans = intermediate_output
 98      la otra cosa :
 99          X_embedding_trans np.hstack = ((X_embedding_trans, intermediate_output)) # horizontal costura 
100  
101  
102  # Display datos cuantificados a la clasificación variable de 
103 X_embedding_trans

 

4. punto de vista personal

Los altos niveles de las variables categóricas, es multi-usuario de identificación, dirección, nombre y así sucesivamente. Variables como la 'dirección' puede obtener un menor número de provincias, municipios y similares a través de las características dimensionales del concepto de un enfoque por capas; 'mercancías' también puede ser en capas obtener su categoría por el concepto más general, pero la esencia de esta operación es suave los datos, es probable que ahogar la información útil. Probablemente no volvería a elegir este modo de construir un modelo predictivo (ver estadísticas de averías, vista en perspectiva de las veces utilizan a menudo para). Algunas personas no clasificarían estas variables, pero creo que va a perder algunos factores útiles, así que lo mejor es hacer el mejor uso de ellos.

Equipado con el mismo word2vector entidad objetos similares hacen valores de salida en la capa oculta es también similar. El uso de baja latitud, las variables continuas del modelo de datos de entrenamiento, el efecto será mucho mejor que el, los datos de formación escasa de alta dimensión.

Este método de extracción para la función de las variables categóricas es muy eficaz para mejorar la exactitud de la predicción es, con el modelo apilados tan eficaz.

Supongo que te gusta

Origin www.cnblogs.com/mx0813/p/12635378.html
Recomendado
Clasificación