Construcción de características y normalización en el aprendizaje automático


13

Digamos que quiero crear un clasificador logístico para una película M. Mis características serían algo como la edad de la persona, el género, la ocupación, la ubicación. Entonces, el conjunto de entrenamiento sería algo así como:

  • Edad Género Ocupación Ubicación Me gusta (1) / No me gusta (0)
  • 23 M Software EE. UU. 1
  • 24 F Doctor Reino Unido 0

y así sucesivamente ... Ahora mi pregunta es cómo debo escalar y representar mis características. Una forma en la que pensé: dividir la edad como grupos de edad, entonces 18-25, 25-35, 35-arriba, Género como M, F, Ubicación como EE. UU., Reino Unido, Otros. Ahora cree una función binaria para todos estos valores, por lo tanto, age tendrá 3 funciones binarias, cada una correspondiente a un grupo de edad, y así sucesivamente. Entonces, un hombre de 28 años de EE. UU. Se representaría como 010 10100 (010-> Grupo de edad 25-35, 10 -> Hombre, 100 -> EE. UU.)

¿Cuál podría ser la mejor manera de representar características aquí? Además, me di cuenta en algunos e.gs. de sklearn que todas las características han sido escaladas / normalizadas de alguna manera, por ejemplo, el género está representado por dos valores, 0.0045 y -.0.0045 para hombres y mujeres. No tengo idea de cómo hacer escala / mormalización como esta?


No me queda claro por qué quieres escalar tus características. A menudo, las características se normalizan para tener 0 unidad media de desarrollo estándar. Es posible que deba definir el problema en términos de cuáles son las clases que está tratando de clasificar, la regresión logística es útil para la clasificación binaria.
BGreene

Ciertamente no quieres clasificar las edades. ¿Cómo se mide la "calificación de la película"? ¿Es una escala de 1 a 10, un "me gusta / no me gusta" o qué?
Peter Flom - Restablece a Monica

Para simplificar, supongamos que solo hay dos clases, Me gusta y No me gusta. Me gusta ser 1 y no me gusta ser 0. Han cambiado la declaración del problema para reflejar esto.
snow_leopard

Respuestas:


15

Caso binario

Si desea que sus características sean binarias, las buenas representaciones para los valores categóricos (resp. Reales ) son la codificación en caliente (resp. Termómetro ). Usted no necesita normalizarlos.

Para la una caliente codificación de una categórica función, sólo tiene que reservar un bit para cada clase. La longitud de esta codificación es, por lo tanto, el número de clases de su característica. Tomemos su ejemplo de país,

  • 00001 para EE. UU.
  • 00010 para el Reino Unido
  • 00100 para Asia
  • 01000 para Europa
  • 10000 para otro

Para la codificación del termómetro de una característica real / entera , debe elegir una longitud y los umbrales. Para su ejemplo de edad, ha elegido dividir la edad de acuerdo con los umbrales 18,25 y 35. La codificación será

  • 000 para 0-17
  • 001 para 18-25
  • 011 para 25-34
  • 111 para 35 en adelante

00010UK01130yo

Caso continuo

00010UK3030yo

Como dijo BGreene, debería normalizar este valor para mantener una media de 0 y una desviación estándar de 1, lo que asegura la estabilidad de muchos modelos de regresión. Para hacer eso, simplemente reste la media empírica y divida por la desviación estándar empírica.

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

(3025)/10=0.5

00010UK0.530yo

Genial ... así que digamos que tenemos una persona de ejemplo de la siguiente manera: País: Reino Unido, AgeGroup: 25-34. Esto conducirá a valores como País: 2 , Grupo de edad: 4 si usamos una codificación activa . Ahora, mientras creamos un vector de características, deberíamos normalizarlos. Entonces digamos que vienen como 0.4 y 0.6, entonces nuestro vector de características de entrada para modelar se convierte esencialmente en [0.4, 0.6], ¿correcto?
snow_leopard

hmm .. si uso la codificación "one hot", ¿debería convertir el valor de codificación a su representación entera como una característica, por ejemplo, 0010 se convierte en 2. O debería tratar esto como un conjunto de 4 características de las cuales solo una estará ENCENDIDA? En el primer caso, ¿no introduce una noción de que 1000 está más allá de 0001 que 0100, lo que podría no ser la intención ya que no queremos que el valor de la característica de EE. UU. Esté más cerca del valor de la característica del Reino Unido que el valor de Asia o algo más?
snow_leopard

Edité mi respuesta para aclarar estos puntos. No necesita normalizar las características binarias, y debe tratarlas como un vector, no convertirlas en un número entero.
Emile

Explicación realmente útil y clara como el cristal. ¡Gracias!
George Liu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.