¿Qué es la colinealidad y cómo corregirla?

Autor: | Última modificación: 10 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Has escuchado hablar del término colinealidad? Si has estado inmerso en algún momento en el mundo del machine learning, probablemente has escuchado este concepto que causa curiosidad entre los novatos y miedo en los más experimentados. En todo caso, en este pos te contamos de qué va, por medio de un dataset de House Sales in King County, USA.

¿Qué es la colinealidad?

La colinealidad en estadística, y más específicamente en machine learning, es la correlación que existe entre variables predictoras o independientes, de modo que expresan una relación lineal en un modelo de regresión. Cuando las variables predictoras en el mismo modelo están correlacionadas, esto les impide predecir de forma independiente el valor de la variable dependiente. Esto se convierte en un verdadero problema, porque reduce su significación estadística y, por tanto, trae efectos negativos en el modelo de regresión.

¿Cómo funciona la colinealidad?

Una vez hemos hecho un primer análisis exploratorio, el siguiente paso consiste en evaluar las correlaciones entre las diferentes variables del problema. Habitualmente, esto nos puede servir para identificar posibles atributos que estén altamente correlacionados.

Si la correlación entre dos atributos es muy grande, se dice que la matriz de atributos es singular. Esto es una fuente de error importante en algunos algoritmos de machine learning, como, por ejemplo, en el caso de la regresión lineal. Por eso es recomendable eliminar uno de los dos atributos que tengan una correlación muy alta.

Este problema se denomina colinealidad. Para hacerle frente, normalmente se evalúa el coeficiente de correlación (ρ) entre los diferentes atributos, de forma que se descartan los que tengan un ρ superior a un umbral que establezcamos a priori ( l ρ l > 0.9, por ejemplo ). Hay que tener en cuenta que -1 < ρ < 1, de forma que valores próximos a 0 indican que no hay correlación y valores próximos a 1 o -1 indican una alta correlación.

Veamos ahora la matriz de correlación:

# significado de colineal
house_data.corr () #matriz de correlación
¿Qué es la colinealidad y cómo corregirla?

Como podemos ver, es muy difícil observar algo útil; es casi imposible ver y, por tanto, entender nada.

Para dar solución a este problema, utilizaremos un pequeño código que nos será de mucha utilidad. Lo que hace este código es hacer la correlación, salvo con price. También podemos dejar esta variable, pero no tiene mucho sentido, porque lo que queremos es buscar la correlación entre pares de variables para ver cuáles están altamente correlacionadas entre sí.

# colineales
import seaborn as sns

#compute the correlation matrix
corr = np.abs (house_data.drop (['price'], axis = 1).corr ())

#generate a mask for the upper triangle
mask = np.zeros_like (corr, dtype = np.bool)
mask [np.triu_indices_from (mask)] = True

#set up the matplotlib figure colineal
f, ax = plt.subplots (figsize = (12, 10))

#draw the heatmap with the mask and correct aspect ratio
sns.heatmap (corr, mask = mask, vmin = 0.0, vmax = 1.0, center = 0.5, linewidths = .1, cmap = "YlGnBu", cbar_kws = {"shrink": .8})

plt.show ()
colinealidad

Podemos ver la variable sqm_above (azul muy oscuro) con la variable sqm_living.

Por último, podemos hacer una representación (scatter_plot) de todas las variables frente al resto, para tener una idea de cómo se relacionan las variables del problema.

#colinealidad
plt.plotting.scatter_matrix (house_data, alpha = 0.2, figsize = (20, 20), diagonal = 'kde')
plt.show ()
¿Qué es la colinealidad y cómo corregirla?
¿Qué es la colinealidad y cómo corregirla?

Este sería el momento de pensar en otras variables que tuvieran sentido y de eliminar variables con alta correlación:

  • Eliminar sqm_living o sqm_above.
  • Construir el atributo antigüedad de la casa en vez de año de la construcción.

Este es un ejemplo de la ingeniería de características que se suele hacer.

¿Quieres seguir aprendiendo?

La colinealidad es un problema muy común al hacer análisis en machine learning, aunque la solución puede ser bastante simple. Si quieres seguir aprendiendo sobre una de las disciplinas mejor pagadas de la actualidad, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que adquirirás toda la fundamentación teórica y práctica para que incursiones en este interesante mundillo. ¡Entra y solicita más información ahora!

¡CONVOCATORIA ABIERTA!

Inteligencia Artificial

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado