Mostrando entradas con la etiqueta Machine Learning. Mostrar todas las entradas
Mostrando entradas con la etiqueta Machine Learning. Mostrar todas las entradas

lunes, 27 de mayo de 2024

Machine Learning soluciones a los problemas

 El aprendizaje automático, o Machine Learning (ML), es una rama de la inteligencia artificial que se centra en la creación de sistemas que pueden aprender y mejorar a partir de la experiencia sin ser explícitamente programados para cada tarea específica. Este campo ha ganado una gran relevancia en los últimos tiempos debido a los avances en el procesamiento de datos, la disponibilidad de grandes volúmenes de información y el incremento en la capacidad de computación y soluciones Cloud. Vamos a explorar algunos conceptos fundamentales de ML, que problemas surgen en la práctica, como podemos limpiar los datos y que técnicas podemos emplear, que es la validación cruzada y algunos desafíos específicos que plantean los algoritmos.


Conceptos Fundamentales de Machine Learning

Tipos de Aprendizaje

  1. Aprendizaje Supervisado: En este tipo de aprendizaje, el modelo se entrena utilizando un conjunto de datos etiquetados, lo que significa que cada ejemplo de entrenamiento viene con una etiqueta de salida conocida. Los algoritmos de aprendizaje supervisado incluyen la regresión lineal, las máquinas de soporte vectorial (SVM), y las redes neuronales, entre otros.

  2. Aprendizaje No Supervisado: Aquí, el modelo intenta encontrar patrones en los datos sin etiquetas. Este tipo de aprendizaje se utiliza para tareas como la agrupación (clustering) y la reducción de dimensionalidad. Ejemplos de algoritmos no supervisados son el K-means y el análisis de componentes principales (PCA).


Problemas en el Entrenamiento de Modelos

El proceso de entrenamiento de modelos de ML puede presentar varios problemas que afectan la precisión y la eficiencia del modelo final. A continuación, se describen algunos de los problemas más comunes:

Sobreentrenamiento (Overfitting)

El sobreentrenamiento ocurre cuando un modelo se ajusta demasiado bien a los datos de entrenamiento, capturando incluso el ruido y las fluctuaciones aleatorias en los datos. Como resultado, el modelo tiene un rendimiento excelente en los datos de entrenamiento pero falla al generalizar a datos nuevos. Esto suele ocurrir con modelos demasiado complejos que tienen muchos parámetros.

Subentrenamiento (Underfitting)

El subentrenamiento se produce cuando un modelo es demasiado simple para capturar la estructura subyacente de los datos. Esto lleva a un rendimiento deficiente tanto en los datos de entrenamiento como en los de prueba. Un ejemplo típico de subentrenamiento es utilizar una regresión lineal para un problema que requiere una relación no lineal.




Técnicas para Mitigar el Sobreentrenamiento y el Subentrenamiento

  • Regularización: Métodos como Lasso y Ridge agregan un término de penalización a la función de pérdida del modelo, lo que ayuda a prevenir el sobreajuste al limitar la magnitud de los coeficientes del modelo.
  • Aumento de Datos: Generar nuevas muestras de datos a partir de las existentes mediante técnicas como el aumento de imagen o el muestreo sintético puede ayudar a mejorar la generalización del modelo.
  • Simplificación del Modelo: Reducir la complejidad del modelo eliminando características innecesarias o utilizando un modelo más simple puede ayudar a evitar el sobreentrenamiento.
  • Validación Cruzada: Utilizar técnicas de validación cruzada para evaluar el rendimiento del modelo en diferentes subconjuntos de datos puede proporcionar una mejor estimación de su capacidad de generalización.


Técnicas de Limpieza de Datos

La limpieza de datos es un paso crucial en cualquier proyecto de ML, ya que la calidad de los datos tiene un impacto significativo en el rendimiento del modelo. Las técnicas comunes de limpieza de datos incluyen:

Manejo de Valores Faltantes

  • Imputación: Reemplazar los valores faltantes con la media, la mediana o el modo de la característica correspondiente, o utilizar métodos más avanzados como la imputación basada en K-nearest neighbors (KNN).
  • Eliminación: Si los valores faltantes son pocos y no forman patrones, se pueden eliminar las filas o columnas correspondientes.

Detección y Corrección de Valores Atípicos

  • Métodos Estadísticos: Utilizar técnicas como el rango intercuartil (IQR) o el Z-score para identificar y eliminar valores atípicos.
  • Modelos Basados en ML: Emplear algoritmos de ML, como los modelos de detección de anomalías, para identificar valores atípicos.

Normalización y Escalado

  • Normalización Min-Max: Escalar las características para que los valores estén dentro de un rango específico, generalmente [0, 1].
  • Estandarización: Transformar las características para que tengan media cero y desviación estándar uno.



Validación Cruzada (Cross-Validation)

La validación cruzada es una técnica utilizada para evaluar el rendimiento de un modelo de ML de manera más robusta y evitar el sobreajuste. El método más común es la validación cruzada k-fold, donde los datos se dividen en k subconjuntos, y el modelo se entrena y evalúa k veces, cada vez utilizando un subconjunto diferente como datos de prueba y los k-1 subconjuntos restantes como datos de entrenamiento. Esto proporciona una estimación más fiable del rendimiento del modelo en datos no vistos.

Técnicas de Validación Cruzada

  • k-fold Cross-Validation: Divide los datos en k pliegues y realiza k iteraciones de entrenamiento y prueba.
  • Leave-One-Out Cross-Validation (LOOCV): Utiliza un solo ejemplo como conjunto de prueba y el resto como conjunto de entrenamiento, repitiendo esto para cada ejemplo en el conjunto de datos.
  • Stratified k-fold Cross-Validation: Similar a k-fold pero preserva la proporción de clases en cada pliegue, lo cual es útil para conjuntos de datos desbalanceados.


Problemas de Algoritmos de Machine Learning

Cada algoritmo de ML tiene sus propias ventajas y desventajas, así como problemas específicos que pueden surgir durante su aplicación:

Regresión Lineal

  • Suposición de Linealidad: La regresión lineal asume una relación lineal entre las características y la variable objetivo, lo cual puede no ser cierto para muchos problemas del mundo real.
  • Sensibilidad a Valores Atípicos: Los valores atípicos pueden tener un impacto significativo en el modelo, sesgando los coeficientes.

Árboles de Decisión

  • Sobreajuste: Los árboles de decisión pueden sobreajustarse fácilmente a los datos de entrenamiento, especialmente si no se podan adecuadamente.
  • Inestabilidad: Pequeños cambios en los datos pueden resultar en árboles completamente diferentes.

Redes Neuronales

  • Tuning de Hiperparámetros: Las redes neuronales requieren una cuidadosa afinación de los hiperparámetros, como el número de capas, la cantidad de neuronas por capa y las tasas de aprendizaje.
  • Sobreajuste: Las redes profundas tienen una alta capacidad de modelado y pueden sobreajustarse fácilmente si no se aplican técnicas de regularización adecuadas.

K-means Clustering

  • Número de Clusters: La elección del número de clusters (k) es crucial y a menudo no es obvia.
  • Sensibilidad a la Inicialización: La calidad de los clusters encontrados puede depender de la inicialización de los centroides.

Conclusión

El aprendizaje automático es una herramienta poderosa que tiene el potencial de transformar muchas industrias mediante la automatización y la mejora de la toma de decisiones basada en datos. Sin embargo, el éxito de los modelos de ML depende en gran medida de la calidad de los datos, la correcta selección y ajuste de los algoritmos, y la mitigación de problemas como el sobreentrenamiento y el subentrenamiento. Las técnicas de limpieza de datos y validación cruzada son fundamentales para garantizar que los modelos sean robustos y generalicen bien a datos no vistos. Cada algoritmo tiene sus propios desafíos y limitaciones, y es crucial comprender estos aspectos para aplicar ML de manera efectiva en la práctica.



martes, 10 de abril de 2018

IA, Machine Learning, Deep Learning

Hace unas semanas, mientras comía con un grupo de antiguos compañeros de trabajo, estuvimos hablando acerca de como con la tecnología en algunos momentos, uno tiene la sensación de que nos movemos en un mundo cíclico, donde se recuperan viejos conceptos y teorías que no han podido ponerse en práctica por diferentes razones: falta de madurez (ya sea sociedad o aplicaciones de la misma), entornos tecnológicos débiles en aquel momento, etc.

Analizamos estos conceptos que ahora mismo están tan de moda: IA, Machine Learning y Deep Learning. Nos dimos cuenta que en algunos de ellos la frontera de los mismos puede resultar poco clara llegando las personas a mezclar los mismos. La idea principal que hilaba toda la conversación, reside en el hecho de que el Big Data lo ha precipitado, ha hecho posible la eclosión de todas estas técnicas (hablamos en algunos casos de algoritmos con más 40 años de vida) permitiendo el análisis masivo de datos sobre tecnologías que hace 20 años eran sumamente caras y complejas de implantar. Por ejemplo, el procesamiento de imágenes para el reconocimiento facial podía desarrollarse sin excesivos problemas sobre máquinas MPP (Procesador Masivamente Paralelo)  o clusters, pero ¿Cual era el problema?, el coste y sobre todo la implementación de los algoritmos sobre las mismas, como por ejemplo PVM (Parallel Virtual Machine) que permite la distribución de tareas sobre un cluster formado por diferentes ordenadores de muy bajo coste (hablamos de procesadores 286 con las primeras versiones de Linux, puede que algunos los recuerden). Hoy en dia es más sencillo, debemos preocuparnos del algoritmo y sobre entornos como Spark o Hadoop podemos desarrollar los cálculos que necesitemos de una forma más simple. Pero no olvidemos que siempre deberemos tener claro donde debemos paralelizar los algoritmos desarrollando un estudio previo de ganancia sobre los mismos.



IA


Este concepto no es nuevo, quien haya cursado una Ingeniería en Informática u otras a partir de los 90 ha debido cursar asignaturas relacionadas con ella. Lleva dando vueltas desde 1950, cuando Alan Turing creó el test para determinar si un ordenador posee inteligencia real. En 1956 tuvo lugar la primera Conferencia de Inteligencia Artificial en Dartmount, lo que supuso la presentación oficial para este nuevo campo de la ciencia.

En aquellos momentos los planteamientos iniciales eran tratar de desarrollar máquinas que fueran capaces de resolver un problema complejo como lo hacemos los humanos. 

Como todo en este mundo tiende a partirse, esta nueva ciencia no estuvo exenta, surgieron dos tipos  de Inteligencia Artificial:
  • Débil o estrecha (narrow/weak IA) caracterizada por estar especializada en una tarea concreta. Ejemplo típico Deep Blue, creado por IBM en 1996 que fue capaz de ganar al gran maestro de ajedrez Gary Kasparov. O DeepMind´s AlphaGo, creada por Google, que fue capaz de vencer a jugadores profesionales de Go. Como vemos emanan de la Teoría de Juegos que aporta la base para sus algoritmos. Los asistentes digitales como Siri y Cortana son ejemplos de este tipo de IA. Siempre debemos tener en cuenta que no pueden ir más allá de aquello para lo que han sido programados.
  • Fuerte (Strong IA) nos lleva al mundo de la ciencia ficción, con cualidades humanas como la consciencia, la sensibilidad, la sabiduría y el auto conocimiento. Naturalmente, se mantiene más como una aspiración y no como una realidad. 

Machine Learning


Los primeros programas de IA, estaban basado en reglas y eran programados por una persona. En esta nueva forma de IA ya no se dependen de unas reglas y un programador, la computadora puede establecer sus propias reglas y aprender por si misma. Su objetivo es crear un modelo que nos permita resolver una tarea dada, entrenando el modelo por medio de un gran cantidad de datos. El modelo aprenderá de estos datos y será capaz de realizar predicciones que en caso de confirmarse, se podrán sumar a su base de hechos.  Dentro del Machine Learning hay dos métodos principales:

Aprendizaje supervisado (Supervised Learning)

Es una mala traducción por que realmente no hay una persona supervisando, más bien la persona dirige el aprendizaje. Un ejemplo puede ser el sistema de filtrado de SPAM de Google: el usuario ayuda a identificar a Gmail cuáles son los correos electrónicos contienen SPAM. A partir de un punto, ya se han procesado tantos mensajes que el sistema es capaz de extraer un modelo para poder predecir con una alta probabilidad de éxito cuáles de los correos son SPAM

Ejemplo de algoritmos:
  • Clasificación Naïve Bayes.
  • Árboles de decisión.
  • K-vecinos.
  • Modelos de regresión lineal.
  • Métodos de regresión logística.
  • Máquinas de vectores de soporte.
  • Métodos Ensemble.


Aprendizaje no supervisado (Unsupervised Learning)


En este modelo no se introducen ejemplos, sino que es el propio algoritmo el que debe sacar patrones o anomalías para crear un modelo. Pongamos un ejemplo, tenemos un sistema de almacenamiento donde están recogidos datos de miles de personas, con datos importantes como su estado físico y sus hábitos alimenticios. Si queremos saber cuáles son los hábitos menos saludables, tendremos que comparar cada unos ellos con el estado de salud física de la persona hasta que encontremos el patrón. 
Se trata de un ejemplo muy básico y que puede no dar resultado válidos, únicamente estaríamos empleando 2 variables para la consecución del objetivo, pero en cualquier caso nos vale como caso de uso básico.



Ejemplo de algoritmos:


  • Algoritmos de clustering (ej: K-Medidas).
  • Análisis de Componentes Principales (PCA).
  • Singular Value Decomposition.
  • Análisis de Componentes Independientes (ICA).
  • Redes neuronales.
  • Redes de funciones de base radial.

Deep Learning

Uno de los algoritmos de ML que más expectación ha despertado, han sido las redes neuronales. Basado en el funcionamiento del cerebro humano se basa en una idea sencilla: dados unos parámetros hay una forma de combinarlos para predecir un cierto resultado. Ej: sabiendo los pixels de una imagen debemos poder saber si hay un número presente en la misma y de cual se trata.

Cuando hablamos de Deep Learning, hablamos de una clase de algoritmos de Machine Learning basados en redes neuronales. Se considera que el aprendizaje profundo surgió en los años 80 a partir de redes neuronales de entre 5 y 6 capas. El neocognitrón, creado por el investigador japonés Kunihiki Fukushima se considera la primera aplicación práctica. No existe un límite establecido para el número de capas que debe tener una red neuronal para que pueda considerarse Deep Learning. En la actualidad se trabaja en redes neuronales por encima de 20 capas, capaces de procesar más de 100 variables de entrada, generando sobre 20 variables de salida. 

Las redes neuronales han demostrado ser muy efectivas en la identificación de patrones.




Como aplicaciones prácticas podemos encontrar:
  • Coches autónomos.
  • Colorear imágenes en blanco y negro.
  • Análisis y generación de informes.
  • Predecir el resultado de procedimientos judiciales.
  • Procesamiento del lenguaje natural.
  • Optimización de rutas comerciales.
  • Reconocimiento de voz e imágenes.
  • Reconocimiento de gustos de usuarios.

Retos del Machine Learning & Deep Learning

La necesidad para entrenar estas complejas redes de neuronas requiere aumentar la capacidad de procesamiento. Una de las mejoras llevadas a cabo estos años ha sido el uso de GPUs para realizar estos trabajos de manera eficiente. Esto ha ahorrado la necesidad de disponer de gran cantidad de ordenadores para realizar los cálculos. NVIDIA es uno de los principales impulsores de esta tecnología adaptando muchos de sus componentes a esta nueva realidad, tanto en la investigación como en el uso de procesadores para la IA de forma autónoma como en los vehículos o drones.

Otro de los retos más importantes es optimizar el uso de grandes volúmenes de datos para extraer patrones de ellos. Se requiere adecuar el almacenamiento de esos datos, indexarlos, y que el acceso sea lo suficientemente rápido para que pueda escalar horizontalmente. Para ello disponemos de framework en Big Data como Hadoop y Spark, que acompañados de una amplia variedad de bases de datos NoSQL cumplen las expectativas.

El problema no es ofrecer una precisión del 90% ni tan siquiera del 99%, cuando hablamos de que las máquinas piensen por nosotros o, incluso, conduciendo un vehículo de forma autónoma, es preciso disponer de un 99,999% de precisión. Ahí es dónde está el verdadero reto del Deep Learning.

Después de los últimos accidentes de coches autónomos en EEUU, algunos científicos están comenzando a defender la introducción del concepto de incertidumbre para hacer la IA más segura. Se basa en añadir a las redes neuronales la capacidad de saber que se están equivocando en su predicción, por medio de modelos de probabilidad o lógica difusa se pueden introducir estas nuevas variables que ayudarán a conseguir el 99,999% de precisión. 


Machine Learning soluciones a los problemas

  El aprendizaje automático, o Machine Learning (ML), es una rama de la inteligencia artificial que se centra en la creación de sistemas que...