13 votos

Característica de la construcción y la normalización en el aprendizaje de máquina

Digamos que quiero crear una Logística Clasificador para una película de M. Mis características sería algo así como la edad de la persona, sexo, ocupación, ubicación. Así, del conjunto de entrenamiento sería algo como:

  • Edad Género Ocupación Lugar Como(1)/No Me Gusta(0)
  • 23 M Software 1
  • 24 F Médico reino unido 0

y así sucesivamente.... Ahora mi pregunta es ¿cómo debo escala y representar a mi cuenta. Una manera en que yo pensaba: Dividir la edad como la edad de los grupos, de 18 a 25 años, de 25 a 35 años, 35-arriba, de Género como M,F, Ubicación, como estados unidos, reino unido, entre Otros. Ahora crear un archivo binario característica de todos estos valores, por lo tanto la edad va a tener 3 binario características de cada una correspondiente a un grupo de edad y así sucesivamente. Así, un 28 años Masculino de Estados Unidos sería representado como 010 10 100 (010-> Grupo de Edad de 25 a 35 años, 10 -> Masculino, 100 -> Estados Unidos)

Lo que podría ser la mejor forma de representar las características aquí ? También, me di cuenta de que en algún correo.gs. de sklearn que todas las funciones se han ampliado/normalizado de alguna manera, por ejemplo, el Género está representado por dos valores, 0.0045 y -.0.0045 para hombres y mujeres. No tengo ni idea de cómo hacer escala/mormalization como este ?

28voto

John Puntos 151

Binario caso

Si quieres que tu cuenta sea binario, la buena declaración categórica (resp. real) los valores son el uno caliente (resp. termómetro) de la codificación. Usted no necesita normalizar ellos.

Para el uno caliente codificación de una categórica característica, simplemente reserva un bit para cada clase. La longitud de esta codificación es, por tanto, el número de clases de su función. Permite llevar a su ejemplo de país,

  • 00001 para Estados Unidos
  • 00010 para el reino unido
  • 00100 para Asia
  • 01000 para Europa
  • 10000 para otros

Para el termómetro de la codificación de un real o integer característica, usted tiene que elegir una longitud y los umbrales. Por tu ejemplo de la edad, a la que ha decidido dividir la edad de acuerdo a los umbrales de 18,25 y 35. La codificación será

  • 000 de 0 a 17
  • 001 para 18-25
  • 011 para 25-34
  • 111 35-por encima de

Poner los dos juntos, se puede obtener aquí una codificación de tamaño 5+3=8 bits. Para un 30 años de edad, residente en reino unido tenemos $$\overbrace{0 \cdot 0 \cdot 0 \cdot 1 \cdot 0}^{UK}\cdot \overbrace{0 \cdot 1 \cdot 1 }^{30yo}$$

Continua, caso

Si el modelo de regresión permite, usted debe prefere para mantener un valor real para un real o integer característica que contiene más información. Vamos a reconsiderar su ejemplo. Esta vez nos dejó simplemente el valor de la edad como un entero. La codificación de un 30 años de edad, residente del reino unido es así $$\overbrace{0 \cdot 0 \cdot 0 \cdot 1 \cdot 0 }^{UK}\cdot \overbrace{30 }^{30yo}$$

As BGreene said, you should then normalize this value to keep a mean of 0 and a standard deviation of 1, which insure stability of many regression models. In order to do that, simply subtract the empirical mean and divide by the empirical standard deviation.

Y_normalized = ( Y - mean(Y) ) / std(Y)

If the mean of all the age of all persons in your data base is 25, and its standard deviation is 10, the normalized value for a 30y.o. person will be $(30-25)/10 = 0.5$, que conduce a la representación $$\overbrace{0 \cdot 0 \cdot 0 \cdot 1 \cdot 0}^{UK}\cdot \overbrace{0.5 }^{30yo}$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X