¿Cómo aplicar la estandarización / normalización al entrenamiento y al conjunto de pruebas si el objetivo es la predicción?


47
  1. ¿Transforme todos mis datos o pliegues (si se aplica CV) al mismo tiempo? p.ej

    (allData - mean(allData)) / sd(allData)

  2. ¿Transforme el conjunto de trenes y el conjunto de pruebas por separado? p.ej

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(testData)) / sd(testData)

  3. ¿O transformo el conjunto de trenes y uso los cálculos en el conjunto de pruebas? p.ej

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(trainData)) / sd(trainData)

Creo que 3 es el camino correcto. Si 3 es correcto, ¿tengo que preocuparme de que la media no sea 0 o que el rango no esté entre [0; 1] o [-1; 1] (normalización) del testset?


¿Hay alguna forma elegante de codificar esto R? Vea esta pregunta: stackoverflow.com/questions/49260862/…
Boern

Respuestas:


42

La tercera forma es correcta. Exactamente por qué se cubre con detalles maravillosos en Los elementos del aprendizaje estadístico , consulte la sección "La validación cruzada incorrecta y correcta", y también en el capítulo final de Aprendiendo de los datos , en el ejemplo del mercado de valores.

Esencialmente, los procedimientos 1 y 2 filtran información acerca de la respuesta, o del futuro, de su conjunto de datos retenidos en la capacitación o evaluación de su modelo. Esto puede causar un sesgo de optimismo considerable en la evaluación de su modelo.

La idea en la validación del modelo es imitar la situación en la que estaría cuando su modelo toma decisiones de producción, cuando no tiene acceso a la respuesta verdadera. La consecuencia es que no puede usar la respuesta en el conjunto de pruebas para nada, excepto para comparar con sus valores predichos.

Otra forma de abordarlo es imaginar que solo tiene acceso a un punto de datos desde su reserva a la vez (una situación común para los modelos de producción). Cualquier cosa que no pueda hacer bajo esta suposición debe sospecharlo con gran recelo. Claramente, una cosa que no puede hacer es agregar todos los nuevos puntos de datos pasados ​​y futuros para normalizar su flujo de producción de datos, por lo que hacer lo mismo para la validación del modelo no es válido.

No tiene que preocuparse por la media de que su conjunto de pruebas sea distinto de cero, esa es una mejor situación en la que estar sesgando sus estimaciones de rendimiento de espera. Aunque, por supuesto, si la prueba realmente se extrae de la misma distribución subyacente que su tren (una suposición esencial en el aprendizaje estadístico), dicha media debería ser aproximadamente cero.


Eso es lo que pensé. ¡Gracias por aclarar esto!
DerTom

Clearly, one thing you cannot do is aggregate over all new data-points past and future to normalize your production stream of data. Por qué no?
Anmol Singh Jaggi

1
@AnmolSinghJaggi Es el "y el futuro". Si todavía no ha recopilado los datos, no puede normalizar su uso.
Matthew Drury

55
y

1
@MatthewDrury. Gracias por tu clara explicación. Estoy de acuerdo contigo ahora. Solo la tercera forma es correcta.
inundación el
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.