¿Cómo ayuda la normalización de datos en Machine Learning?

Mi respuesta en Stackoverflow:

La normalización no siempre es necesaria, pero rara vez duele.

Algunos ejemplos:
K-significa:

La agrupación de K significa que es “isotrópica” en todas las direcciones del espacio y, por lo tanto, tiende a producir agrupaciones más o menos redondas (en lugar de alargadas). En esta situación, dejar varianzas desiguales es equivalente a poner más peso en las variables con menor varianza.

Ejemplo en Matlab:

X = [randn (100,2) + unos (100,2);…
randn (100,2) -ones (100,2)];

% Introducir deformación
% X (:, 2) = X (:, 2) * 10;

opts = statset (‘Pantalla’, ‘final’);

[idx, ctrs] = kmeans (X, 2, …
‘Distancia’, ‘ciudad’, …
‘Réplicas’, 5, …
‘Opciones’, opta);

plot (X (idx == 1,1), X (idx == 1,2), ‘r.’, ‘MarkerSize’, 12)
Espere
plot (X (idx == 2,1), X (idx == 2,2), ‘b.’, ‘MarkerSize’, 12)
plot (ctrs (:, 1), ctrs (:, 2), ‘kx’, …
‘MarkerSize’, 12, ‘LineWidth’, 2)
plot (ctrs (:, 1), ctrs (:, 2), ‘ko’, …
‘MarkerSize’, 12, ‘LineWidth’, 2)
leyenda (‘Cluster 1’, ‘Cluster 2’, ‘Centroides’, …
‘Ubicación’, ‘NO’)

Agrupación distribuida:

El análisis comparativo muestra que los resultados de la agrupación distribuida dependen del tipo de procedimiento de normalización.

Red neuronal artificial (entradas):

Si las variables de entrada se combinan linealmente, como en un MLP, rara vez es estrictamente necesario estandarizar las entradas, al menos en teoría. La razón es que cualquier cambio de escala de un vector de entrada puede deshacerse efectivamente cambiando los pesos y sesgos correspondientes, dejándolo con los mismos resultados exactos que tenía antes. Sin embargo, hay una variedad de razones prácticas por las cuales estandarizar las entradas puede hacer que el entrenamiento sea más rápido y reducir las posibilidades de quedarse atascado en los óptimos locales. Además, la disminución de peso y la estimación bayesiana se pueden hacer más convenientemente con entradas estandarizadas.

Red neuronal artificial (entradas / salidas):

¿Debería hacer alguna de estas cosas a sus datos? La respuesta es, depende.
La estandarización de las variables de entrada u objetivo tiende a hacer que el proceso de entrenamiento se comporte mejor al mejorar la condición numérica (ver Mal acondicionamiento en redes neuronales) del problema de optimización y garantizar que sean apropiados varios valores predeterminados involucrados en la inicialización y terminación. La estandarización de objetivos también puede afectar la función objetivo.
La estandarización de los casos debe abordarse con precaución porque descarta la información. Si esa información es irrelevante, entonces estandarizar casos puede ser bastante útil. Si esa información es importante, entonces estandarizar casos puede ser desastroso.

Si está utilizando Python, puede usar scikit-learn para normalizar y estandarizar datos. Hay una biblioteca llamada sklearn.prepcessing que se ocupa de ellos.

Referencia de API – documentación de scikit-learn 0.18.1

Para la normalización, use MinMaxScaler.

sklearn.preprocessing.MinMaxScaler – documentación de scikit-learn 0.18.1

# Normalización
desde sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler ()
X_norm = mms.fit_transform (X)

Para la estandarización, use el método StandardSclar.

sklearn.preprocessing.StandardScaler – documentación de scikit-learn 0.18.1

# Estandarización
desde sklearn.preprocessing import StandardScaler
stdsc = StandardScaler ()
X_std = stdsc.fit_transform (X)

Cualquier enfoque que dependa del espacio métrico euclidiano se verá afectado por la normalización. Franck describe exactamente el resultado: “dejar las variaciones desiguales es equivalente a poner más peso en las variables con una variación menor”. Los algoritmos que dependen de las distancias vecinas más cercanas se ven fuertemente afectados por la normalización.

Regresión lineal:
Mínimo Square Solver es invariante de escala, no requiere normalización.
pero la regresión de Ridge y Lasso no es una forma de regularización
debe normalizar los datos antes de usar la regresión Lasso / Ridge, etc.

Hablando desde el punto de vista del análisis de componentes principales, imagine que está intentando ejecutar PCA en un conjunto de datos con altura y peso que varían, digamos:

altura: 1,2 metros y 2 metros
peso: 50Kg a 120kg

(por supuesto, normalmente tendría la altura capturada como centímetros, pero por el ejemplo, imagine que está en metros).

PCA va a encontrar un componente principal grande en la variable de peso (porque es mucho más “variable” que la altura) por lo que va a seguirlo en lugar de tratar de encontrar una correlación entre la altura y el peso.

Aquí hay otra buena explicación de por qué se requiere el escalado de características en Machine Learning, si esto es lo que está buscando.
Página en Cloudfront
Gracias @Coursera Andrew Ng’s Machine Learning Lectures.

More Interesting

¿Cuáles son algunos ejemplos del mundo real en los que la ciencia de datos se usa con la teoría de juegos?

¿Deberían los científicos de datos ser un equipo separado en una organización o distribuirse entre varios equipos de la organización?

Para aprender IA, ¿debería saber ciencia de datos?

¿Qué es la computación paralela y cómo se usa en ciencia de datos?

Mientras se construye un modelo de datos predictivos, ¿el tratamiento para valores perdidos y valores atípicos debe realizarse tanto en los conjuntos de datos de entrenamiento como de prueba?

¿Qué sigue después de la regresión múltiple para la ciencia de datos?

Tengo experiencia con React and Angular, y desarrollo de JavaScript de pila completa, ¿debería incluirlos cuando busco entre ciencia de datos?

¿Vale la pena hacer el Programa de Diploma de Postgrado en Ciencia de Datos de Manipal Global Academy of Data Science?

¿Un perfil como el mío tiene alguna posibilidad de ingresar a un buen instituto a través de GRE para obtener una maestría en ciencia de datos?

¿Alguien ha pasado por Springboard y Udacity analista de datos / programas de ciencia? Estoy buscando garantías de empleo e información de contenido educativo.

Después de realizar una validación cruzada K-fold en una entrada 7 * 98 con una salida de datos 1 * 98, ¿cómo selecciono los datos para el entrenamiento y las pruebas?

¿Cuál debería ser mi primer enfoque para comenzar a aprender análisis de datos?

¿Qué tipo de herramientas de colaboración reducirían la duplicación del esfuerzo de I + D en el análisis y el intercambio de datos?

¿Hay algún tipo de versión de conjunto de datos y versión de código, estilo GitHub para Data Science? (más fácil de usar que GitHub)

Cómo extraer el registro DNS de un sitio web para compartir videos (YouTube) para combatir el terrorismo