Veo que muchos algoritmos de aprendizaje automático funcionan mejor con la cancelación media y la ecualización de covarianza. Por ejemplo, las redes neuronales tienden a converger más rápido, y K-Means generalmente ofrece una mejor agrupación con características preprocesadas. No veo que la intuición detrás de estos pasos de preprocesamiento conduzca a un mejor rendimiento. ¿Alguien puede explicarme esto?
61
Es cierto que el preprocesamiento en el aprendizaje automático es algo muy negro. No está escrito en los documentos por qué varios pasos de preprocesamiento son esenciales para que funcione. Tampoco estoy seguro de si se entiende en todos los casos. Para hacer las cosas más complicadas, depende en gran medida del método que use y también del dominio del problema.
Algunos métodos, por ejemplo, son invariantes de transformación afín. Si tiene una red neuronal y solo aplica una transformación afín a sus datos, la red no pierde ni gana nada en teoría. En la práctica, sin embargo, una red neuronal funciona mejor si las entradas son centradas y blancas. Eso significa que su covarianza es diagonal y la media es el vector cero. ¿Por qué mejora las cosas? Es solo porque la optimización de la red neuronal funciona con más gracia, ya que las funciones de activación ocultas no se saturan tan rápido y, por lo tanto, no te dan gradientes cercanos a cero al principio del aprendizaje.
Otros métodos, por ejemplo, K-Means, pueden proporcionarle soluciones totalmente diferentes según el preprocesamiento. Esto se debe a que una transformación afín implica un cambio en el espacio métrico: la distancia euclidiana entre dos muestras será diferente después de esa transformación.
Al final del día, desea comprender qué está haciendo con los datos. Por ejemplo, el blanqueamiento en la visión por computadora y la normalización por muestreo es algo que el cerebro humano hace tan bien en su canal de visión.
fuente
Algunas ideas, referencias y gráficos sobre por qué la normalización de entrada puede ser útil para ANN y k-means:
K-significa :
Ejemplo en Matlab:
(FYI: ¿Cómo puedo detectar si mi conjunto de datos está agrupado o no (es decir, formando un solo grupo )
Agrupación distribuida :
Red neuronal artificial (entradas) :
Red neuronal artificial (entradas / salidas)
Curiosamente, cambiar las unidades de medida puede incluso llevar a uno a ver una estructura de agrupación muy diferente: Kaufman, Leonard y Peter J. Rousseeuw. "Encontrar grupos en los datos: una introducción al análisis de agrupación". (2005)
Kaufman y col. continúa con algunas consideraciones interesantes (página 11):
fuente
¿Por qué funciona el escalado de características? Puedo darte un ejemplo (de Quora )
fuente
Hay dos problemas separados:
a) aprender la función correcta, por ejemplo, k-means: la escala de entrada básicamente especifica la similitud, por lo que los grupos encontrados dependen de la escala. regularización - por ejemplo, regularización de pesos l2 - usted asume que cada peso debe ser "igualmente pequeño" - si sus datos no se escalan "adecuadamente" este no será el caso
b) optimización, es decir, por descenso de gradiente (por ejemplo, la mayoría de las redes neuronales). Para el descenso de gradiente, debe elegir la tasa de aprendizaje ... pero una buena tasa de aprendizaje (al menos en la primera capa oculta) depende de la escala de entrada: las entradas pequeñas [relevantes] generalmente requerirán pesos más grandes, por lo que le gustaría un aprendizaje más grande tasa para ese peso (para llegar más rápido), y vv para entradas grandes ... ya que solo desea usar una tasa de aprendizaje única, cambia la escala de sus entradas. (y el blanqueamiento, es decir, decorellating también es importante por la misma razón)
fuente
Estoy terminando las Redes neuronales para el aprendizaje automático de Geoffrey Hinton en Coursera, y él explica esto en la lección 6b: "Una bolsa de trucos para el descenso de gradiente de mini lotes". Puede obtener una vista previa del video sin registrarse o iniciar sesión.
fuente
Este documento solo habla sobre k-means, pero explica y prueba el requisito de preprocesamiento de datos bastante bien.
.
.
Fuente: http://maxwellsci.com/print/rjaset/v6-3299-3303.pdf
fuente
El preprocesamiento a menudo funciona porque elimina las características de los datos que no están relacionadas con el problema de clasificación que está intentando resolver. Piense, por ejemplo, en clasificar datos de sonido de diferentes altavoces. Las fluctuaciones en el volumen (amplitud) pueden ser irrelevantes, mientras que el espectro de frecuencia es el aspecto realmente relevante. Entonces, en este caso, normalizar la amplitud será realmente útil para la mayoría de los algoritmos de ML, ya que elimina un aspecto de los datos que es irrelevante y causaría que una red neuronal se ajuste demasiado a patrones espurios.
fuente
Creo que esto se hace simplemente para que la característica con un valor mayor no eclipse los efectos de la característica con un valor menor cuando se aprende un clasificador. Esto se vuelve particularmente importante si la característica con valores más pequeños realmente contribuye a la separabilidad de la clase. Los clasificadores como la regresión logística tendrían dificultades para aprender el límite de decisión, por ejemplo, si existe a nivel micro de una característica y tenemos otras características del orden de millones También ayuda al algoritmo a converger mejor. Por lo tanto, no corremos ningún riesgo al codificarlos en nuestros algoritmos. Es mucho más fácil para un clasificador, aprender las contribuciones (pesos) de las características de esta manera. También es cierto para K significa cuando se usan normas euclidianas (confusión debido a la escala). Algunos algoritmos pueden funcionar sin normalizarse también.
fuente