La maldición de la dimensionalidad, conocida en el nuevo mundo como maldición de la dimensión, es un problema que se puede llegar a presentar si nos volvemos locos y queremos tener en cuenta todas las características (o atributos) posibles en un sistema.
Y es que es muy lógico pensar que para clasificar de forma correcta «entre más datos mejor», sin embargo esto es un error que desembocará en un tiempo de procesamiento alto y en una selección de datos de entrada irrelevantes o redundantes para nuestro sistema de clasificación. Por cierto, al problema de la dimensión se le conoce en inglés como «The course of dimensionality«.
Esto es lo que vas a aprender
Selección de dimensionalidad
Existen una gran cantidad de factores que podemos tener en cuenta a la hora de seleccionar un algoritmo en inteligencia artificial, en realidad es casi un arte con mucho contenido científico, y entre los más importantes se encuentra el de decidir qué datos de entrada va a recibir nuestro sistema.
La dimensionalidad en machine learning se refiere al tamaño de tu matriz o vector que es representado por tus datos de entrenamiento, es decir aquellos atributos que tendremos en cuenta a la hora de modelar nuestro sistema de clasificación.
Ejemplo de la selección de dimensionalidad
Imagina que quieres clasificar a las personas al momento de pasar frente a una cámara de seguridad, tu clasificación se basa en decir si la persona es alta o baja, la pregunta es ¿Qué atributos debes tener en cuenta para clasificar si es de estatura alta o baja? Bueno para que entiendas lo voy a poner en dos casos, en uno me voy a volver loco y en otro seré un poco más sensato…
Aquí suponemos que me volví loco… Altura, Largo del cabello, zapatos, tipo de color de piel, sombrero, tiene joroba…
Tamaño = 6 dimensiones
Aquí soy más sensato y uso el sentido común… Altura y Tamaño de zapatilla…
Tamaño = 2 dimensiones
¿Qué es la maldición de la dimensionalidad?
Supongamos que tenemos un conjunto de imágenes en la se pueden llegar a presentar dos tipos de animales, un gato o un perro, y nuestro objetivo es hacer un clasificador que nos permita saber que tipo de animal es el que aparece en la imagen, esto lo vamos a hacer enseñándole a nuestro algoritmo una serie de atributos únicos correspondientes a una de las dos especies.
Como punto a tener en cuenta los datos que vamos a obtener de nuestros animales serán numéricos, esto nos va a permitir hacer comparaciones con operaciones matemáticas simples, como promedios, sumas, sumas, restas, etc.
Para fines de entender la maldición de la dimensionalidad vamos a tener en cuenta el color de la imagen en escala RBG. Promedio de color rojo, promedio de color azul y promedio de color verde.
Suponiendo que podemos obtener los colores en escalas RBG de la imagen, podemos definir una función con un umbral que nos permita distinguir qué tipo de animal es.
If 0.5*rojo+ 0.3*verde+ 0.2*azul > 0.6 : return gato;
else return perro;
Por supuesto que lo de los colores no es más que un supuesto, en este caso representan nuestros atributos. Dichos atributos nos van a servir para identificar si es perro o gato, y el umbral en el ejemplo sería de 0.6.
No es difícil pensar que esa cantidad de datos, tanto por la calidad como por la cantidad no van a ser suficientes para nuestro clasificador, por lo que quizás sea conveniente agregar la profundidad de la imagen así como su intensidad, con lo que tendríamos 5 atributos.
No es ilógico que nuestro primer pensamiento sea que entre más atributos tengamos en cuenta será mejor, sin embargo esto es un error muy común que no debemos cometer. En la figura 1 podemos observar que el desempeño de nuestro clasificador disminuye al pasar cierta cantidad de atributos.
El desempeño de nuestro clasificador en MACHINE LEARNING va a depender de dos factores, la calidad y la cantidad de los datos, y con calidad me refiero a tener en consideración sólo aquellos atributos que realmente nos aporten datos de valor a la hora de realizar nuestra clasificación.
El problema de tener muchos atributos
El problema más visible a la hora de trabajar con atributos redundantes o inservibles se torna «muy tangible» en el momento en que tienes que procesar la información de tu algoritmo en un computador. Ya que si bien las computadoras son increíblemente más rápidas que hace 3 años, entre más atributos mayor tiempo de procesamiento. Vamos viendo un ejemplo…
Supongamos que arrojamos una moneda en un estadio de fútbol y sólo puede caer en una de las rallas del suelo que mide 100 metros, para buscarla bastaría con buscarla en esa linea, podríamos incluso caminar sobre la linea y la encontrarías con mucha facilidad.
Ahora vamos a suponer que arrojamos la misma moneda, sólo que ahora puede caer en la superficie cuadrada del estadio que es de 100 metros cuadrados, para buscarla tendríamos que recorrer los 100 metros cuadrados.
Ahora supón que no arrojamos de nuevo la moneda, pero ahora puede caer en cualquier punto cubico del estadio, es decir podría estar flotando en algún lugar dentro de ese estadio, suponiendo que es un estadio con forma de cubo tendríamos que recorrer los 100 metros cúbicos para encontrarla.
¿Cómo evadir la maldición de la dimensión?
Estoy seguro que existen investigadores que están trabajando en encontrar algún método para saber con exactitud la cantidad de atributos que nos permitan evitar la maldición de la dimensionalidad a la hora de modelar nuestro algoritmo de clasificación, sin embargo como puedes ver en la figura 1, la elección de tus atributos va a depender de la calidad de tus datos y de la cantidad que decidas usar, y eso es algo muy subjetivo ya que depende tanto de tu problema en especifico, como de la cantidad de los datos de entrenamiento.