Quizás este artículo sea uno de los más complicados que he escrito durante la vida de este blog. Pero hablar de Machine Learning, Inteligencia Artificial y Visión Artificial no es sencillo. Sobre todo si quieres que alguien te entienda.
Puedes probar a buscar información técnica de Machine Learning. Si es la primera vez, te sonará a chino (como me pasó a mi). También hay información muy general donde se debate más sobre la ética que sobre la técnica.
Todos estos campos tienen infinidad de algoritmos, técnicas y métodos que hacen que fácilmente te pierdas.
En este artículo planteo una manera de entender qué es y cómo funciona Machine Learning de una forma sencilla y cotidiana. Para conseguir esto tienes que entender varios conceptos que aprenderás en este artículo.
Y aunque la teoría es algo muy importante, cuando realmente se aprende es con la práctica. Por eso te planteo un ejemplo práctico con Visión Artificial, para que veas cómo una máquina aprende.
Además, todo lo que veas aquí puede ser fácilmente utilizado con tecnologías libres y de código abierto como Arduino, ESP8266 y Raspberry Pi.
Espero que disfrutes de ese artículo. Tómalo con calma, prepara una buena taza de café y adelante.

Indice de contenidos
- 1 ¿Qué es la inteligencia artificial?
- 2 Inteligencia Artificial y Visión Artificial
- 3 ¿Qué es Machine Learning o aprendizaje automático?
- 4 Tipos de Machine Learning o aprendizaje automático
- 5 Proceso de aprendizaje supervisado
- 6 ¿Qué es el algoritmo de clasificación k-NN?
- 7 Conclusiones sobre Inteligencia Artificial, Machine Learning y Visión Artificial
¿Qué es la inteligencia artificial?
Antes de hablar de Machine Learning o aprendizaje automático es conveniente entender qué es la Inteligencia Artificial, IA o AI (del inglés Artificial Intelligence).
Déjame que te haga una pregunta ¿que son las matemáticas? Estoy seguro que no tienes una respuesta concreta como
«Es la ciencia que estudia las propiedades y relaciones entre entidades abstractas como números, geométricas o símbolos matemáticos».
La Inteligencia Artificial es como las matemáticas. Es algo abstracto, un grupo de campos o áreas que estudian algo complejo. Se puede definir como el área de la ciencia de la computación que hace posible que las máquinas aprendan a base de experimentar para realizar tareas similares a las de los seres humanos y animales.
Computación quiere decir programación, por lo tanto hay que programar (en algún lenguaje) para imitar el comportamiento humano. Pero ¿qué queremos imitar de nosotros?
Para a pensar un momento la cantidad de tareas que realizamos cada día. Ahora mismo, sin darte cuenta, estás analizando una imagen proyectada en un ordenador, descifrando un idioma, entendiendo qué te estoy diciendo y sacando tus propias conclusiones.
Todo esto no te supone ningún esfuerzo sin embargo, para una máquina esto es extremadamente complejo.
Si te centras en los cinco sentidos (tacto, olfato, gusto, oído y vista) seguro que se te ocurren cientos de tareas que puedes implementar en una máquina. Pero además, los seres humanos tenemos otras capacidades como razonar, calcular, leer, hablar, etc…

En consecuencia, la Inteligencia Artificial es la ciencia que intenta emular cómo funciona nuestro cerebro. Se centra en implementar algoritmos, métodos y técnicas para que una máquina pueda replicar algunas de los millones de tareas que podemos realizar los seres humanos.
Debes huir de los tópicos vistos en la película A.I. (Inteligencia Artificial) donde un robot es capaz de comportarse como si fuera un ser humano completo. Incluso es capaz de sentir y emocionarse. Todavía estamos muy lejos de que esto ocurra.
La Inteligencia Artificial intenta resolver problemas muy concretos: conducir, reconocer ciertos objetos, entender una conversación, hablar, etc… Utiliza herramientas matemáticas y algoritmos para resolver problemas complejos que nosotros realizamos sin darnos cuenta.
Historia de la Inteligencia Artificial
Aunque la Inteligencia Artificial se relaciona directamente con las últimas tecnologías, los algoritmos y técnicas que se esconden detrás llevan muchos años con nosotros. El término de Inteligencia Artificial fue acuñado formalmente en 1956 en la conferencia DSRPAI por John McCarthy.
Pero antes, el gran matemático Alan Turin, ya había explorado la posibilidad matemática de imitar el comportamiento humano. Quizás inspirado por personajes de películas de ciencia ficción de la época como El Hombre de Hojalata del Mago de Oz (1939) o María de Metrópolis (1927).
Desde la década de 1950 hasta principios de la década de 1970, se sentaron las bases matemáticas de lo que hoy es la Inteligencia Artificial. Pero pronto se dieron cuenta de las grandes limitaciones. La capacidad de cómputo de las máquinas de aquella época era la mayor limitación. Esto frenó el avance de la Inteligencia Artificial a mediados de la década de 1970.
En la década de 1980 resurgió con fuerzas renovadas gracias a los avances que Jhon Hopfield y David Rumelhart hicieron en el área de Deep Learning o aprendizaje profundo. Continuó evolucionando hasta que en 1997 se produjo un hito que cambiaría para siempre la historia de la Inteligencia Artificial.
La máquina de IBM Deep Blue, ganó al campeón de ajedrez Gary Kasparov. Por primera vez una máquina dotada de Inteligencia Artificial se impuso a un ser humano.
En todos estos años se han sentado las bases matemáticas y computacionales, pero sólo en los últimos años se ha hecho muy popular en muchos sectores. La tecnológica, la banca, el marketing o el entretenimiento son algunas de las industrias donde se utiliza masivamente.
Sin embargo, los algoritmos que hay detrás son los mismos desde hace décadas ¿qué ha cambiado?
Entre todos los factores que han hecho que la Inteligencia Artificial se popularizara hay que destacar dos.
Por un lado el límite de cómputo y almacenamiento de los ordenadores. Se estima que tanto la memoria como la velocidad de los ordenadores se ha ido duplicando cada año. Lo que en un principio frenaba al avance de la Inteligencia Artificial, ahora es un gran aliado.
Por otro lado los datos. Vivimos en la era del Big Data. En los últimos dos años se ha generado el 90% de los datos de toda la historia de la humanidad. El ritmo actual de producción de datos es de 2,5 quintillones de bytes cada día (1 quintillón es un 1 seguido de 30 ceros). Y todavía falta por implementar el IoT por completo.

Se ha descubierto que incluso si los algoritmos no mejoran mucho, gracias al Big Data y la computación masiva se consigue que una máquina aprenda a través de la fuerza bruta.
La Inteligencia Artificial será la siguiente revolución tecnológica. De hecho, ya está en marcha. No recuerdo la última vez que llamé a una compañía y hablé directamente con un ser humano.
En los próximos años se sentarán las bases de los dispositivos más inteligentes que jamás en la historia de la humanidad han existido.
Hardware y software unidos por la Inteligencia Artificial
Aunque he dicho que la Inteligencia Artificial es una rama de las ciencias de la computación (software), en gran medida el hardware está muy vinculado al desarrollo de la Inteligencia Artificial.
Qué ocurre si un cerebro está aislado es decir, no tiene ninguno de los sentidos, no puede comunicarse con el mundo exterior a través del habla, la vista o por señales. Realmente aunque tu cerebro siga funcionando, si no puedes transmitir nada a los demás, es como si no existieras.
Lo mismo ocurre con las máquinas. Podemos crear el mejor algoritmo del mundo para reconocer objetos que si no tienes una cámara para captar imágenes no sirve de nada.
En consecuencia, la parte hardware está muy ligada a la Inteligencia Artificial. Un ejemplo son los robots de Boston Dynamics. Es un conjunto de tecnologías donde están involucradas la programación, la mecánica y la electrónica.
Todas estas tecnologías hacen que un robot imite cómo anda un ser humano (y lo hacen increíblemente bien).
Inteligencia Artificial y Visión Artificial
Dentro de todos los campos que abarca la Inteligencia Artificial está la Visión Artificial (en inglés Computer Vision). Es el campo que estudia cómo interpretar y reconocer imágenes y vídeos digitales a través de las matemáticas para ser tratados por un ordenador.
Por ejemplo, ¿qué ves en esta imagen?

Salvo que vengas de Marte, todos reconocemos una fresa y una manzana. Es bastante sencillo para nosotros y no supone un gran reto. Sin embargo, para una máquina reconocer que hay en esta imagen es complejo.
Una máquina no ve como nosotros, una máquina sólo ve una matriz de números.

Ahora, dime si en esa matriz de números reconoces una fresa y una manzana. Difícil ¿verdad? Pues una máquina es capaz de hacerlo utilizando las matemáticas sobre todo el álgebra lineal. Es la rama de las matemáticas que estudia conceptos relacionados con los vectores y las matrices entre otros.
A través de algoritmos, un ordenador es capaz de extraer información muy valiosa de un montón de números y decidir si es una fresa o una manzana. Lo hace a través de procesos que sufre la imagen hasta obtener una respuesta.
Cada caso concreto utilizará unos algoritmos u otros dependiendo de la situación. La Visión Artificial y todo lo relacionado con el Machine Learning, es una ciencia experimental. Todo se consigue a base de ir probando diferentes técnicas.
Para que quede más claro, vamos a verlo con un ejemplo.
Sistema de reconocimiento de objetos con Visión Artificial
Imagínate que una empresa nos contrata. Comercializa fresas y manzanas. La única particularidad es que las manzanas son verdes, no trabaja con manzanas rojas (es una empresa peculiar).
Todos los días pasa un camión con un montón de fresas y manzanas juntas. Te contratan para que hagas un sistema de Visión Artificial para clasificar las fresas (rojas) y las manzanas (que son verdes).
De alguna manera harán llegar una imagen a tu ordenador siempre tomada desde la misma perspectiva y distancia con una fruta que puede ser una fresa o una manzana. Tu programa tiene que decir qué es.
El esquema general de este sistema consta de 4 fases.

Fase 1: leer imagen digital
Consiste en leer el archivo digital y obtener la matriz de píxeles. Cada píxel tiene asociado un color que se expresa en el modelo de color RGB con 3 componentes (R, G, B). Donde R es rojo (del inglés Red), G es verde (del inglés Green) y B es azul (del inglés Blue).

Una librería especializada en tratamiento digital de imágenes y Visión Artificial como OpenCV puede ser de gran ayuda en esta fase.
Fase 2: segmentar objeto
Ya hemos visto como la capacidad de cómputo de las máquinas es un factor importante en todo lo relacionado con la Inteligencia Artificial. Una de las tareas que tiene la Visión Artificial es analizar solo la información relevante de una imagen.
Esto hace que se reduzcan mucho las operaciones matemáticas y el sistema sea mucho más rápido. Segmentar un objeto es quedarse sólo con la información útil de dicho objeto es decir, todo lo que esté dentro de su contorno. Podemos hacerlo con muchos algoritmos como Canny, Sobel, umbralización, Laplaciano, etc…

El objetivo es poder extraer únicamente el objeto u objetos que hay en la imagen.
Fase 3: extraer características
Se suelen utilizar técnicas matemáticas para obtener características únicas de los objetos que quieres reconocer. Por ejemplo, si tuvieras que diferenciar una fresa y una manzana verde ¿qué características hacen que sean diferentes estas frutas?
A la vista está que el color es una característica diferenciadora. La fresa es roja y la manzana verde. También podrías diferenciarlas por el tamaño. Una manzana suele ser más grande que una fresa.

Estas son características únicas de cada clase de fruta (por lo menos en este caso). Más adelante profundizaré en el concepto de extracción de características.
Fase 4: Machine Learning
Por ahora la fase de Machine Learning es una caja negra. De momento sólo tienes que entender que en esta fase el algoritmo de Machine Learning tendrá como entrada las características de color y tamaño del objeto.
Gracias a un aprendizaje que hemos realizado previamente, podrá decidir si se trata de una fresa o una manzana. Muy pronto vamos a profundizar en cómo hacen los algoritmos de Machine Learning para que una máquina aprenda.
De todas estas fases, las tres primeras se pueden implementar con la librería que he mencionado anteriormente, OpenCV. Si estás interesado en aprender todos los fundamentos de Visión Artificial, no te pierdas el Curso práctico de OpenCV y Python.
La parte de Machine Learning también puede ser implementada con OpenCV. Sin embargo, existen librerías especializadas como Sklearn con cientos de algoritmos optimizados y eficientes.
Pero antes de entrar de lleno en Machine Learning, tienes que entender qué es eso de extracción de características.
Qué es un descriptor de características de una imagen
Si quieres trabajar con visión artificial acostúmbrate a los términos extracción de características y descriptor de características. Lo verás en multitud de artículos, documentación y cursos. En inglés los puedes buscar como feature extraction y feature descriptor.
Un descriptor de características es una representación de una imagen simplificada. Digamos que se queda con la esencia de la imagen y elimina la información que no es útil.
Normalmente, cuando se extraen las características de una imagen, se pasa de tener una matriz de ancho x alto x 3 (3 es por las tres componentes de color RGB) a un vector o array de n dimensiones.
Veamos esto con un ejemplo.
La imagen donde aparece una fresa tiene dimensiones de 320 de ancho por 180 de alto. Esto equivale a 57.600 píxels. Además, cada píxel tiene 3 componentes que indican de qué color es cada píxel. Esto hace una matriz de píxels con bastante información.

Hemos definido las dos características que diferencian a las fresas y manzanas (verdes): el tamaño y el color. Mediante un procesado de la imagen, se pueden obtener dos valores que representen el tamaño el color.
Por lo tanto, podemos pasar de una matriz de 57.600 x 3 elementos a un vector o array de 2 elementos, tamaño y color. Este nuevo vector se suele llamar vector de características.
Lo importante (y lo difícil) es saber diferenciar entre la información útil y la que no lo es tanto.
Está claro que si quieres visualizar una imagen, el vector de características no es útil, es más útil toda la matriz de píxels. Pero si quieres diferenciar una fresa de una manzana, el vector de características que hemos definido puede ser muy útil.
En consecuencia, el descriptor de características se tiene que elegir dependiendo de cada caso. Existen descriptores mucho más complejos como SIFT, SURF o HoG.
Muchos de ellos se basan en estudiar los gradientes (cambios de intensidad bruscos entre pixels) y son complejos.

Son muy útiles para el reconocimiento de imágenes y la detección de objetos.
El vector de características se utiliza en los algoritmos de Machine Learning para que la máquina aprenda.
Representación gráfica del descriptor de características
Realmente no se pueden representar los vectores de características. Aunque en el ejemplo de la fresa y la manzana sólo tengamos dos dimensiones, tamaño y color, en la realidad los descriptores de características tienen cientos o miles de dimensiones.
Los seres humanos sólo podemos representar gráficamente hasta 3 dimensiones, pero las operaciones matemáticas son las mismas. Da lo mismo el número de dimensiones.
Para que se entienda mejor el concepto vamos a seguir trabajando con el vector de características de dos dimensiones, tamaño y color.
Imagínate que obtienes una tabla de datos tras analizar 5 imágenes con fresas y 5 imágenes con manzanas.
Fruta | Tamaño | Color |
---|---|---|
Fresa | 10 | 58 |
Fresa | 11 | 60 |
Fresa | 12 | 57 |
Fresa | 11 | 59 |
Fresa | 9 | 65 |
Manzana | 56 | 170 |
Manzana | 54 | 200 |
Manzana | 60 | 195 |
Manzana | 58 | 215 |
Manzana | 57 | 188 |
Si utilizas el tamaño para el eje X y el color para el eje Y, puedes hacer una representación en 2D.

Visualmente puedes ver como hay dos grupos bien diferenciados. Los puntos rojos son fresas y los puntos verdes son manzanas. Vuelvo a repetir que esto no es lo normal, un vector de características tiene muchas más dimensiones.
En algunos casos, como el conjunto de datos MNIST, que contiene cientos de imágenes de números escritos a mano, se utiliza la propia imagen como descriptor de características.
Ahora sí que estás preparado para entender qué es Machine Learning.
¿Qué es Machine Learning o aprendizaje automático?
Hasta ahora lo que sabemos de Machine Learning o aprendizaje automático es que es un subcampo de la Inteligencia Artificial y que si a la entrada tiene un descriptor de características(el tamaño y el color por ejemplo), es capaz de reconocer que hay dentro de una imagen.
Pero Machine Learning o aprendizaje automático se utiliza en muchos otros campos, como la banca, la domótica, en teléfonos móviles, en altavoces inteligentes y un sin fin de sectores. En todos los casos, los fundamentos teóricos son los mismos.
También hemos visto que forma parte del proceso para reconocer objetos en una imagen con Visión Artificial. Cuando hablo de Machine Learning estoy hablando de todas las técnicas orientadas a que una máquina aprenda.
Una de estas técnicas es Deep Learning o aprendizaje profundo. Es un subcampo de Machine Learning o aprendizaje automático que utiliza redes neuronales. Ver un algoritmo de Deep Learning en acción es lo más parecido a la magia que he visto.

La idea detrás de Machine Learning orientado a la Visión Artificial es conseguir clasificar una imagen dentro de un grupo de clases predefinidas. Por ejemplo, cuando entra un descriptor de características al sistema que hemos diseñado, queremos que nos diga si es una fresa o una manzana.
Estas clases o grupos ya están predefinidas anteriormente. El algoritmo aprende y en función del vector de características es capaz de clasificar la imagen.
Pero para que un algoritmo de Machine Learning pueda tomar este tipo de decisiones, antes tiene que aprender. Y ¿cómo es capaz una máquina de aprender?
Cuando se entrena un algoritmo de Machine Learning o aprendizaje automático se necesita un conjunto de datos del que extraer el conocimiento. Este conjunto de datos estará compuesto por muchas muestras.
En nuestro caso serán imágenes de fresas y manzanas pero puede ser cualquier cosa (en formato texto, en audio, vídeo, temperatura, presión, etc…). Por lo tanto, un conjunto de datos es una colección de muestras.
El objetivo de un algoritmo de Machine Learning o aprendizaje automático es encontrar patrones dentro del conjunto de datos. Esto le permite clasificar una nueva muestra (descriptor de características) en una clase predefinida.
Como ya hemos visto, para los seres humanos esto es una tarea sencilla sin embargo, para una máquina puede llegar a ser una tarea muy compleja y bastante complicada cuando analizas imágenes del mundo real.
Todo lo que engloba a la Visión Artificial y a Machine Learning o aprendizaje automático es experimental. Debes experimentar, haciendo pruebas, evaluando y validando.
Tipos de Machine Learning o aprendizaje automático
Existen dos tipos de aprendizaje automático: aprendizaje supervisado y aprendizaje no supervisado.
El aprendizaje supervisado requiere de un etiquetado previo del conjunto de datos. Por el contrario el no supervisado, no requiere de este etiquetado.
Aprendizaje supervisado
Imagínate que trabajas en una empresa y eres el encargado de gestionar el correo electrónico. Tu tarea es clasificar cada nuevo email para saber si es una consulta o una solicitud de presupuesto. Como sabes programar, decides hacer una aplicación que interprete el texto de cada email.
¿Cómo serías capaz de conseguir este objetivo? Puedes escribir una serie de sentencias if/else en busca de ciertas palabras para clasificar cada email como consulta o presupuesto.
Por ejemplo, si aparece la palabra presupuesto dentro del texto del email que directamente lo clasifique como presupuesto. Si aparece la palabra duda que lo clasifique como consulta. Deberías coger cada email, analizar el texto y buscar estas dos palabras.
La verdad es que esto funciona, lo hacemos constantemente programando con Arduino o en cualquier otra plataforma. Sin embargo, sería muy difícil de mantener. Imagínate la cantidad de combinaciones de palabras que podemos tener.
Lo que realmente necesitas en este caso es un algoritmo de Machine Learning. Necesitas un conjunto de datos (los mismos emails que te envían) etiquetados correctamente: emails de consulta y email de presupuesto.
Con esta información (los datos y las etiquetas) el algoritmo de Machine Learning puede analizar el texto del email y, gracias a que están etiquetados, aprender qué palabras son más comunes en un email de consulta y cuales son más comunes en un email de presupuestos.
Este es un ejemplo de aprendizaje supervisado, el tipo de aprendizaje más utilizado y más estudiado dentro de Machine Learning o aprendizaje automático.
Con un conjunto de datos, un modelo (se suele llamar así al algoritmo ya entrenado) se crea a través de un proceso de entrenamiento basado en analizar los datos para luego ir corrigiendo el modelo cuando los resultados son incorrectos.
Es importante entender este concepto ya que es la base del Machine Learning o aprendizaje automático. Más adelante veremos el proceso completo y detallado.
Existen varios tipos de algoritmos de clasificación de aprendizaje supervisado. Los más importantes son:
- Clasificadores lineales: regresión y Naive Bayes
- Árboles de decisión
- Vecino más próximo o k-NN
- Máquinas de vectores de soporte (SVM)
- Redes neuronales
Aprendizaje no supervisado
Al contrario de lo que sucede con el aprendizaje supervisado, el aprendizaje no supervisado no tiene etiquetas asociadas de lo que es cada elemento del conjunto de datos. Por lo tanto, con el aprendizaje no supervisado no podrás corregir tu modelo si se ha hecho una predicción incorrecta.
Volviendo al ejemplo del email donde clasificamos correos de dudas y presupuestos, para pasar de un aprendizaje supervisado a no supervisado lo único que tienes que hacer es quitar las etiquetas.
Debes pasar todos los emails al algoritmo de Machine Learning o aprendizaje automático sin indicar si es un email de consulta o presupuesto.
El aprendizaje no supervisado es considerado el santo grial del Machine Learning o aprendizaje automático.
Piensa por un momento. Si trabajas con un sistema de aprendizaje supervisado ¿quién tiene que etiquetar las muestras del conjunto de datos? Efectivamente, tu o cualquier otra persona.
Cuando se utiliza Machine Learning o aprendizaje automático con Visión Artificial se requieren un montón de imágenes o de vídeos. Imagínate la cantidad de fotos y vídeos que hay en Internet. YouTube, Vimeo, Instagram, Twitter y cualquier plataforma genera millones de bytes en formato vídeo e imagen todos los días.
Pero todo este contenido está sin etiquetar por un humano. Cuando quieres hacer un sistema real no queda otra que gastar mucho tiempo (y por lo tanto dinero) para clasificar el grupo de datos de entrenamiento.
¿Te imaginas que esta primera clasificación la pudiera hacer una máquina? En la actualidad, el aprendizaje no supervisado es un área muy activa en investigación que todavía no está resuelto. Se suelen utilizar híbridos entre aprendizaje supervisado y no supervisado.
Caben destacar los algoritmos de aprendizaje no supervisado como:
- k-Means Clustering
- Mean-Shift Clustering
- Density-Based Spatial Clustering of Applications with Noise (DBSCAN)
Para que quede claro cómo una máquina es capaz de aprender gracias a Machine Learning o aprendizaje automático vamos a ver el proceso completo. El siguiente ejemplo muestras las fases de un sistema de aprendizaje supervisado.
Proceso de aprendizaje supervisado
Puede que todo lo anterior te haya generado muchas dudas. No te preocupes, es algo normal. Los campos que cubren la Inteligencia Artificial y Machine Learning están estrechamente unidos y muchas veces no sabes dónde empieza y termina cada campo.
Lo mejor en estos casos es tener una perspectiva general. A veces un simple árbol no te permite ver el bosque completo :)
Volvamos al ejemplo de las fresas y las manzanas. Sabemos que para entrenar un algoritmo de Machine Learning o aprendizaje automático necesitamos imágenes (datos). El cliente nos proporciona un conjunto de imágenes con fresas y manzanas correctamente etiquetadas (aprendizaje supervisado).

Contiene 1.000 imágenes de fresas y 1.000 de manzanas. Según el proceso de Visión Artificial que hemos visto, después de leer el archivo digital hay que obtener el descriptor de características. Recuerda que en nuestro caso es el tamaño y el color.
Se puede hacer de múltiples maneras. Por ejemplo, utilizando el detector de bordes Canny podemos segmentar el objeto. Una vez detectado obtenemos el tamaño y el color. Los algoritmos de Visión Artificial se encargan de todo este proceso.
Cada algoritmo tiene sus propios parámetros. El detector de bordes Canny tiene dos: umbral mínimo y umbral máximo. A su vez los algoritmos para obtener el color y el tamaño pueden tener más parámetros.

El ajuste de estos parámetros es crucial. El objetivo de Machine Learning o aprendizaje automático es ajustar estos parámetros y los propios del algoritmo de clasificación para obtener una precisión satisfactoria.
Partiendo de este punto donde tenemos un montón de imágenes para ser procesadas, vamos a entrenar un algoritmo de Machine Learning para que aprenda.
Esto se consigue a través de un proceso que consta de tres fases: división del conjunto de datos, entrenamiento y validación y pruebas.
División del conjunto de datos
Lo primero es dividir el conjunto de datos en dos partes. Un subconjunto servirá para entrenar y validar el algoritmo de Machine Learning o clasificación y el otro subconjunto servirá para la fase de pruebas o test.
Hay mucha teoría de cómo se deben dividir los datos para entrenar y probar un algoritmo de Machine Learning. El método más común es dividir el conjunto de datos en 75% para la fase entrenamiento y el 25% para la fase de pruebas.

Si cogemos como ejemplo las 1.000 de fresas y las 1.000 de manzanas, tendremos 750 imágenes de fresas y 750 de manzanas para el entrenamiento. Por otro lado tendremos 250 imágenes de fresas y 250 de manzanas para la fase de pruebas.
Ahora toca entrenar y validar el algoritmo.
Entrenamiento y validación del algoritmo de clasificación
El entrenamiento y la validación es lo que realmente hace el algoritmo aprenda.
Se empieza con el entrenamiento. Hay que elegir un tipo de algoritmo de aprendizaje supervisado que dependerá de cada situación. Existen multitud, desde el más simple k-NN, hasta los más usados para el Deep Learning que utilizan redes neuronales.
Cada uno de ellos tendrá sus propios parámetros que hay que ajustar. Luego veremos un ejemplo con el algoritmo de clasificación k-NN.
Estos parámetros junto con los parámetros del proceso de Visión Artificial (segmentación y obtención del color y tamaño) son los que el algoritmo de Machine Learning o aprendizaje automático tiene que optimizar.
Pero sigamos con el ejemplo de las fresas y las manzanas. Cogemos las 1.500 imágenes etiquetadas destinadas al entrenamiento (750 fresas y 750 manzanas) y las pasamos por todo el proceso de aprendizaje.
En este proceso tenemos los parámetros de la parte de procesado de la imagen (Visión Artificial) y los parámetros del algoritmo de Machine Learning. Como es de suponer, partimos de unos valores iniciales (hay mucha literatura de cómo deben inicializarse estos parámetros).

Ese será nuestro punto de partida. Tras pasar todo el conjunto de datos de entrenamiento por el proceso de aprendizaje, el algoritmo nos devolverá una precisión. Esto quiere decir que con esos valores de parámetros se ha obtenido una precisión de un tanto por ciento.
Por ejemplo, si obtienes una precisión del 50% quiere decir que el algoritmo acierta la mitad si es una fresa o una manzana.
La primera vez que se obtiene la precisión no se puede comparar con una precisión anterior, es la primera. Así que modificamos los parámetros y hacemos pasar de nuevo todos los datos por el proceso de aprendizaje.
La segunda vez que pasan los datos ya puedes comparar la precisión obtenida con la anterior. Si es mayor, te quedas con ese ajuste de parámetros. Si es menor los desechas.

Por lo tanto, puedes mejorar o empeorar la precisión si modificas los parámetros de todo el proceso de aprendizaje. Esta parte es la que realmente describe el aprendizaje de máquinas. El propio algoritmo será capaz, en base a la precisión obtenida, cambiar los parámetros para intentar mejorar la precisión de forma automática.
Encontrar los parámetros óptimos es un problema típico dentro de Machine Learning o Deep Learning. Dentro de las matemáticas se conoce como la búsqueda de los extremos de una función. Básicamente lo que hace es buscar los mínimos globales o locales de una función o una región de una función.
La más famosa y usada en Machine Learning o aprendizaje automático es el descenso por gradiente.

Pero claro, encontrar los parámetros para que el modelo tenga una precisión del 100% (que acierte siempre) nos puede llevar muchísimo tiempo y puede incluso que no tenga solución.
Por eso, los algoritmos de Machine Learning darán por bueno el resultado siempre que consigan una precisión aceptable o que haya pasado un tiempo determinado. Por ejemplo, podemos decir que si se consigue una precisión del 98% pare.
El resultado de esta fase es un modelo de Machine Learning o aprendizaje automático. No es más que un algoritmo ya entrenado. Sólo nos quedaría una cosa, probar el modelo con el conjunto de datos destinados a pruebas.
Pruebas del algoritmo de clasificación
La fase de pruebas o test es la última. En esta fase se utiliza el 25% del conjunto de datos es decir, 250 imágenes de fresas y 250 imágenes de manzanas.
Aquí lo único que hacemos es pasar las imágenes del conjunto de datos destinadas para las pruebas para obtener un informe de la precisión del modelo. En ningún caso se intenta mejorar.
Recapitulando. De todo el conjunto de datos utilizamos parte para la fase de entrenamiento y validación y parte para la fase de pruebas. La división se suele hacer 75% para entrenamiento y 25% pruebas.
En la fase de entrenamiento y validación se ajustarán los parámetros para obtener la mejor precisión posible pasando una y otra vez el conjunto de datos de entrenamiento y ajustando los parámetros en base a la precisión obtenida.
Por último, se obtiene un informe detallado utilizando el conjunto de datos destinado para las pruebas.
Este sería el proceso completo que siguen los datos en el aprendizaje automático de máquinas. Para entenderlo mejor, veamos un ejemplo con el algoritmo de clasificación k-NN.
¿Qué es el algoritmo de clasificación k-NN?
El algoritmo de clasificación k vecinos más próximos o k-NN (del inglés k-nearest neighbors) es el algoritmo de clasificación más sencillo que existe. Utiliza la distancia entre los vectores de características para determinar a qué clase o grupo pertenece.
En pocas palabras se puede decir que el algoritmo k-NN clasifica un nuevo descriptor de características dependiendo de la distancia a la que se encuentren los k descriptores de características más cercanos.
Recuerda que un descriptor de características es un vector y como tal, se puede calcular la distancia a otro vector de la misma dimensión.
Para entender cómo funciona este algoritmo vamos a seguir el proceso de aprendizaje supervisado:
- División de datos (75%/25%)
- Entrenamiento y validación
- Pruebas
División de datos algoritmo k-NN
Vamos a seguir con el ejemplo de las fresas y las manzanas. El cliente nos facilita 1.000 imágenes de cada fruta. Por lo tanto tendremos los siguientes grupos de datos:
Fruta | Entrenamiento/Validación | Pruebas |
---|---|---|
Fresa | 750 | 250 |
Manzana | 750 | 250 |
Ahora pasamos a la fase de entrenamiento y validación.
Entrenamiento y validación algoritmo k-NN
Para entender esta fase representamos las muestras gráficamente. En el eje X se representa el tamaño y en el eje Y se representa el color. Como se trata de un aprendizaje supervisado, se pintan los puntos que representan a las fresas en rojo y a las manzanas en verde.
A simple vista podemos ver dos grupos separados donde las fresas están en el cuadrante más cercano al origen y las manzanas en el cuadrante opuesto.

Es lógico. Las fresas son más pequeñas y por lo tanto estarán en valores de X más bajos y las manzanas al contrario. Respecto al color, si se toma como referencia la componente G (verde) las fresas tienen un valor más bajo de esta componente que las manzanas verdes (recuerda que sólo analizamos manzanas verdes).
Sin embargo, aunque hay diferencias claras, parece ser que hay algunas fresas más grandes de lo normal y con un color verde (puede que todavía no están maduras). Por otro lado tenemos alguna manzana más pequeña de lo normal y con un color rojizo (seguramente de algún golpe).
Esto hace ciertas muestras estén entre medias de los dos grupos. Es algo normal y son las excepciones que existen en todos los conjuntos de datos.
La idea que se esconde detrás de k-NN es calcular qué muestras del conjunto de entrenamiento están más cerca de una nueva muestra. Al tratarse de vectores (puntos en una representación 2D), se puede obtener la distancia que existen entre las muestras.
Esto es precisamente lo que utiliza k-NN. Utiliza la distancia entre dos puntos para encontrar los más cercanos.

Estoy seguro que has escuchado más de una vez el término distancia Euclídea. Se calcula como
Donde (x1, y1) es el vector descriptor de un elemento del conjunto de datos para entrenamiento y (x2, y2) es el vector descriptor de la nueva muestra.
Con esta simple fórmula podemos saber qué puntos (vectores descriptores) están más cerca de la muestra. En base a esta información se determinará de qué clase es la fruta que estamos analizando.
Si hay mayoría de fresas quiere decir que es una fresa. Si hay mayoría de manzanas quiere decir que es una manzana. Es como el refrán «dime con quién andas y te diré quién eres«.
Pero ¿cuántos vectores descriptores hay que coger entorno a la muestra? Aquí es donde reside realmente el problema. Se trata del parámetro k que hay que ajustar en el algoritmo k-NN.
Imagínate que cogemos k = 1 es decir, nos vamos a quedar con el más cercano a la muestra que estamos analizando. En este caso, nos dice que es una fresa.

Ahora cogemos un k superior por ejemplo k = 4. En este caso tenemos dos vectores descriptores que son fresas y otros dos que son manzanas. Resulta que hay un empate.

Esta es una de las reglas de el algoritmo k-NN. Nunca cojas valores de k pares, siempre tienen que ser impares. Así que para desempatar vamos a coger un valor de k = 5.

Ahora sí que se deshace el empate. Hay dos vectores descriptores de fresas y tres de manzana. Por lo tanto, para k=5 la nueva muestra es una manzana.
Con este ejemplo has visto claramente que dependiendo del valor de k se obtiene un resultado u otro. Si esa nueva muestra que estamos analizando es parte del conjunto de datos de entrenamiento, sabremos realmente si es una fresa o una manzana.
En consecuencia, podremos decir si con k=1 ha acertado o no al igual que con k = 5. Así podremos ir dando más valor a los valores de k que más acierten.
Ajuste de parámetros del algoritmo k-NN
Hay dos parámetros claros que debes ajustar en el algoritmo de clasificación k-NN. El primero es obvio, el valor de k. Si es demasiado pequeño (k = 1) estarás ganando en eficiencia pero pierdes precisión y es más susceptibles al ruido.
Si coges un valor k demasiado alto, el algoritmo no será tan eficiente y puede que estés suavizando demasiado el resultado.
Por otro lado la distancia entre dos puntos también es crítica. Dependiendo de la técnica que utilices (Euclídea, Manhattan, Mahalanobis, etc…) obtendrás un resultado u otro.
Aquí es donde entra en juego la fase de entrenamiento o validación. El algoritmo deberá ajustar los parámetros (del propio algoritmo de k-NN como del procesado con algoritmos de Visión Artificial) para obtener la mejor precisión.
No hay reglas escritas, sólo en base a la experimentación conseguirás tener unos buenos resultados.
Conclusiones sobre Inteligencia Artificial, Machine Learning y Visión Artificial
Ante todo quiero darte las gracias si has llegado hasta aquí.
La idea más importante de este artículo es que Machine Learning y Visión Artificial son campos experimentales. No hay una única fórmula para todos los casos. La experiencia te irá guiando entre las diferentes técnicas y algoritmos.
Pero sin duda alguna, todo parte de aquí. Si entendemos cómo una máquina es capaz de procesar una imagen y obtener información, tenemos mucho ganado.
A partir de aquí es investigar y probar.
Si te interesa ir rápido empieza por el Curso de Visión Artificial con OpenCV y Python. Es la manera más eficiente de introducirte en la Visión Artificial y el Machine Learning :)
Por último me gustaría conocer tu opinión sobre el artículo. Me ha llevado bastante tiempo escribirlo y estaré encantado de recibir feedback.
Gracias a Shutterstock por la cesión de estas imágenes [imagen 1, imagen 2, imagen 3]