Áreas
- Minería de datos: Es un rol vital en el sector, se encarga de la extracción de los datos desde los puntos de origen, su tratamiento, su limpieza y su respectivo almacenamiento y todas las operaciones necesarias para ello (Knoll, Prüglmeier, & Reinhart, 2016).
- Análisis de Datos: Centrada en la obtención de patrones y el estudio estadístico de los parámetros obtenidos.
- Machine Learning : Focalizada en la implantación de soluciones basadas en IA.
Lenguajes
Los lenguajes se han desarrollado de tal manera que todos en mayor medida cubren las tres áreas principales (Minería, Análisis y ML). De hecho, muchos de ellos están interrelacionados mediante librerías y APIs. Eso sí, es pertinente remarcar que ciertos lenguajes son punteros y tienen un rendimiento destacado en algún área concreta. A continuación, un breve repaso a alto nivel (https://ocdevel.com/mlg). Las exigencias en cada área dependen del contexto, por ejemplo, la minería de datos se requiere principalmente en caso de manejar un gran volumen de datos, de lo contrario los requisitos y la complejidad son mucho menores:
- C y C++ son lo más cercano a código ensamblador y binario que existe y por lo tanto está ideado para obtener un gran rendimiento (como es el caso de Tesla). Por ende, es ideal en el caso de ser necesaria una gran escala, por ejemplo, para procesos de Blockchain. Estos lenguajes están muy especializados en el uso de GPUs en vez de CPUs, esto es, tarjetas gráficas que operan de manera más óptima matrices. Sin embargo, hay que ser consciente de que hay lenguajes más sencillos que transforman el lenguaje empleado en la codificación en C y C++, de manera que mejoran considerablemente su rendimiento y evitan parte de la dificultad requerida por estos.
- Lenguajes Matemáticos son R, Matlab, Octave y Julia. R está especializado en análisis de datos, gráficas y estadísticas. Matlab es más empleado en el ecosistema académico que en el corporativo, además de tener costes de licencia asociados. Octave es la versión de OpenSource de Matlab, pero por contrapartida es algo menos pulido que el anterior.
- Los lenguajes asociados a la Computación Distribuida son principalmente Java, Scala y Phyton. Java se vale principalmente de Hadoop (Minería de datos) y Mahout (ML). Scala utiliza Spark (Minería de datos) y Spark ML (ML) y está específicamente diseñado a la programación funcional. Phyton ha sido el más exitoso en los últimos años debido a su gran sencillez y el ciclo virtuoso que se
deriva de ella. A más facilidad se atrae a su uso a más usuarios, que acaban demandando y generando librerías y soporte, lo que acaba mejorando las capacidades del lenguaje y capta a más programadores a su entorno. Por ello, Phyton dispone de NumPy para asemejarse a Matlab en algunas funciones, Panda para suplir a R, Spark para funciones de minería de datos, Scikit para algoritmos de ML y por último los frameworks que se detallarán a continuación lo optimizan a nivel de C y C++.
Finalmente, los Framworks más empleados son Torch (Meta Platforms), Theano y el archiconocido Tensorflow (Alphabet – Google Brain). Centrándonos en este último, Tensorflow (Simplilearn, s.f.) está basado en Phyton, evita el uso de Spark e incorpora Keras. Soporta cadenas multidimensionales, ayuda a la escalabilidad de computabilidad entre máquinas y para grandes sets de datos, contiene TensoBoard para visualizar el modelo y tiene una comunidad muy amplia. Otros frameworks son Caffe, DL4J y Chainer.
Tipos de Problemas de Inteligencia Artificial
El algoritmo que dé solución a un problema de puede ser de varios tipos, dependerá íntegramente de la naturaleza del reto a abordar, aquí una lista de los más comunes (Knoll,Prüglmeier, & Reinhart, 2016) (Ng, Machine Learning Specialization):
- Supervisado (Se realiza un etiquetado de datos)
- Regresión Lineal (Sistemas poco caóticos)
- Regresión Logística, SVM (Support Vector Machines)
- Redes Neuronales (Sistemas más caóticos)
- Arquitectura de Capas:
- Cuantas más capas mejor, pero computacionalmente tendrá más coste.
- Para el número de elementos de las capas ocultas, es mejor tener muchas veces el número de entradas, o por lo menos algo mayor.
- Capas ocultas uniformes, generalmente cuantas más mejor.
- No Supervisado (No se realiza un etiquetado de datos)
- K-Means
- PCA
- Detector de Anomalías
- Otros
- Sistemas de Recomendación
Guía Práctica Básica
Diseño de Sistemas de Machine Learning
Un estudio pionero (Banko & Brill, 2001) llegó a la conclusión de que más que escoger el algoritmo adecuado (Perceptron – Regresión Logistica, Winnow, Basado en memoria y Naïve Bayes) lo que aseguraba un mayor grado de acierto era el volumen de datos.
Siendo esto generalizable y revelador, es necesario aplicar cierta racionalidad en el uso de grandes cantidades de datos. Por defecto, al principio, es más adecuado asumir que las variables poseen suficientes datos para predecir con precisión. Es más adelante cuando se corrobora que es cierta la asunción anterior o no. Un criterio útil en este punto puede ser preguntarse si un experto humano tendría suficiente con los parámetros escogidos para predecir un resultado preciso.
Pasos Previos
Los pasos anteriores a aplicar el modelo de ML son las acciones necesarias y encaminadas a conseguir la mayor eficiencia y precisión del modelo escogido. En estas tareas se dedica la mayor parte del tiempo de los perfiles técnicos expertos en IA.
- Separación para la evaluación de la Hipótesis:
- Comúnmente los datos se dividen en un 70% destinado a la simulación del modelo (Set de Entrenamiento) y un 30% para la simulación de las pruebas (Set del Test).
- Hay ocasiones en las que se deben además escoger las incógnitas o características del modelo. Por ejemplo, en regresión lineal, la función de la hipótesis puede ser un polinomio de grado cuatro o seis. Para dilucidarlo, los datos totales se dividen en tres partes, un 60% destinado al set de entrenamiento, un 20% dedicado a la validación cruzada (Cross Validation CV) y un 20% para el set de pruebas. Los ensayos de CV expondrán cuál es la mejor configuración de la hipótesis al obtener ésta errores más bajos que las demás. En el ejemplo anterior, si la hipótesis de grado cuatro tiene un error más bajo que la que se ha construido con seis grados. Es muy recomendable no mezclar ni reusar los sets de datos para varias funciones (Entrenamiento, CV o testeo) si es posible ya que pueden distorsionar los resultados.
- Pretratamiento de datos:
- No es conveniente que los parámetros diverjan en tamaño, para ello se pueden aplicar técnicas de reescalado de características (Feature scaling).
- Generalmente el rango habitual recomendado es entre -1 y 1 para cada variable.
- Normalización Media (Mean Normalization)*
- Otras operaciones: Tratamiento de valores atípicos (outliers), agrupamiento de variables, por ejemplo, fecha y hora, eliminar variables que no se van a emplear, etc.
- Regularización:
- Se suele añadir a la función de coste y a los gradientes un término que balancea la búsqueda de resultados de manera que no subajuste ni sobreajuste excesivamente (explicación de los términos más adelante). La única contrapartida es que añade un término más a controlar por los técnicos de ML.
- PCA para reducir las variables (No debe usarse siempre)
- Es un tipo de algoritmo de aprendizaje no supervisado que agrupa las variables que correlacionan de manera que se reduce el número de ellas y se eliminan redundancias. Gracias a esto, se optimizan todos los procesos realizados con ese set de datos de entrenamiento (CV y Test también)
- Ventajas:
- Compresión
- Reduce la memoria y el disco necesitado para almacenar datos
- Acelera el aprendizaje del algoritmo
- Visualización
- Siempre es más fácil visualizar un problema cuantas menos variables hay (Lo ideal son 2 o 3, pero raras veces es posible)
- Mal uso de PCA
- Emplearlo para prevenir el sobreajuste, para esta tarea es mejor usar Regularización.
- No es conveniente emplear PCA directamente una vez se ha conseguido e integrado el set de datos. Es más recomendable seguir los procesos primero sin emplear esta herramienta, y si no se obtiene el resultado deseado entonces es cuando puede ser interesante incluirla.
Problemas a la hora de generar el modelo
El desarrollo de este punto se verá facilitado por la introducción de un concepto clave en ML: La función de coste . Sin entrar en detalles matemáticos necesarios para explicar el término, para ello se recomiendan los cursos referidos, la función de coste es una medida del error obtenido por el algoritmo. Esto es, la diferencia entre la realidad conocida, etiquetas (labels), y lo estimado por el modelo.
Sesgo y Varianza
Por norma general los problemas más comunes son los que se derivan del balance entre Sesgo (Bias) y Varianza (Variance). El Sesgo implica subajustar un modelo y una alta Varianza lo contrario, sobreajustarlo.
La imagen anterior muestra los distintos estados de equilibrio entre Sesgo y Varianza. El eje de abscisas se refiere a la complejidad del modelo y el de ordenadas a la amplitud del error. Existen tres zonas diferenciadas, subajuste (alto sesgo y baja varianza), óptimo (varianza y sesgo moderados) y sobreajuste (bajo sesgo y alta varianza).
La relación de los errores cometidos en los distintos sets de datos descritos en el apartado anterior (Entrenamiento, CV y Test) va a arrojar indicios de los defectos del modelo, a saber:
El error cometido en el entrenamiento decrece a medida que se incrementa la complejidad del modelo, esto es, la función de la hipótesis pasa cada vez por más puntos del entrenamiento (línea inferior). Sin embargo, con los otros sets de datos (CV o Test) no sucede lo mismo (línea superior), al ser datos con los que la hipótesis no se ha generado estos son una prueba realista de las situaciones a las que se va a enfrentar el modelo a futuro. Ante nueva información, un modelo excesivamente complejo va a cometer errores importantes debido al sobreajuste: la hipótesis funciona muy ajustadamente con los parámetros de entrenamiento, pero no es válida para nuevos escenarios. En otras palabras, el modelo es más bien una “solución a medida” para los datos del set de entrenamiento, pero no es apto para generalizar.
Sin embargo, un modelo excesivamente sencillo ya cometerá errores importantes con los datos de entrenamiento y tampoco responderá correctamente ante nuevas situaciones, esto es, con los datos de CV o Test.
Entre estas dos situaciones extremas es donde el equipo de IA tendrá que buscar el equilibrio, minimizando así los errores con los datos de entrenamiento y con datos de CV y Test.
A modo de Resumen:
El efecto de la regularización en el Sesgo y la Varianza
Una alfa (término de regularización, en la imagen remarcado) muy elevada hará que muchos parámetros de la hipótesis sean nulos por lo que sobresimplificará el modelo (más Sesgo y menos Varianza). Por el contrario, una alfa con valor nulo anularía el término de regularización, por lo que no reduciría la complejidad del modelo, virando hacia el sobreajuste. Una alfa ajustada, al igual que la complejidad del modelo, hará cumplir un equilibrio entre Sesgo y Varianza.
Curvas de Aprendizaje
Para este apartado, se presenta el término de tamaño del set de entrenamiento (designado con la variable “m” generalmente).
Como se ha descrito en el apartado Diseño de sistemas de Machine Learning, a mayor cantidad de datos, más precisión del modelo de IA. Sin embargo, esto se refleja de manera distinta en los errores de entrenamiento y CV o Test.
Generalmente, el error de entrenamiento sigue una función logarítmica, esto es, cuantos más datos mayor error, hasta que llega un punto que hace meseta y crece levemente. Contrariamente, el error de Validación Cruzada o Test decrece de manera tangencial.
Depuración de un algoritmo (Debugging)
No obstante, en muchos entornos la información no es tan exuberante ni se tienen efectos de escala tan grandes, por lo que no siempre es posible lo descrito anteriormente.
Por lo tanto, otras estrategias son necesarias para obtener buenos resultados. Por un lado, no es sensato obcecarse siempre en obtener más datos como se puede intuir del caso de baja varianza del apartado de las Curvas de aprendizaje. La solución pasa por depurar mejor (Ng, Andrew Ng: Deep Learning, Education, and Real-World AI, 2020).
Centrando la atención en tres tipos de algoritmo muy ilustrativos a modo de ejemplo: Regresión lineal, redes neuronales y clasificador de spam o correo no deseado.
- Regresión Lineal
- Opciones:
- Obtener más ejemplos de entrenamiento (Arregla la alta varianza, Curvas de aprendizaje)
- Intentar reducir las variables del problema (Arregla la alta varianza)
- Intentar aumentar las variables del problema (Arregla el alto sesgo)
- Añadir variables polinómicas (Arregla el alto sesgo)
- Decrecer Alfa (Término de Regularización) (Arregla el alto sesgo)
- Aumentar Alfa (Término de Regularización) (Arregla la alta varianza)
- Para decantarse por alguna de las opciones, puede ser interesante realizar diagnósticos
- Un diagnóstico se basa en lanzar una prueba para detectar qué lo que funciona y lo que no en el algoritmo. Pueden tomar tiempo de implementación, pero a la larga es probable que sea lo más eficiente.
- Opciones:
- Redes Neuronales
- Pequeñas: Más probabilidad de Sesgo, computacionalmente más barato
- Grandes: Más probabilidad de Varianza, computacionalmente más costoso (Se puede solucionar con regularización)
- Clasificador de Spam
- Escoger una lista palabras representativas (de 10,000 a 50,000)
- Opciones para disminuir el error:
- Recoger muchos datos [Por ejemplo: (Unspam Technologies, Inc., 2022)]
- Desarrollar características avanzadas en función de las rutas del cabecero de los mensajes
- Implementar un tratamiento sofisticado de palabras:
- Tratamiento de singulares y plurales
- Signos de puntuación
- Crear algoritmos avanzados para detectar palabras del tipo “Diner0” que puedan haber esquivado algún filtro
- Otros
- Análisis de errores (Pasos):
- Comenzar con un algoritmo simple que se pueda implementar rápidamente y probarlo con los datos de CV.
- Dibujar curvas de aprendizaje para decidir si más datos o variables van a suponer una mejora
- Examinar manualmente los ejemplos del CV set donde el algoritmo haya cometido errores y analizar si hay alguna tendencia sistemática y si se puede reconocer algún patrón:
- Qué tipo de email son
- Qué pistas pueden ayudar al algoritmo a detectarlo mejor
- Para saber si las acciones implementadas van a surgir de veras efecto es mejor probarlas, calcular el error y compararlo con los anteriores
Apéndice
Detección de Anomalías
La mayoría de la técnica se centra en curvas gaussianas, donde se realizan operaciones estadísticas para validar si un elemento del set es defectuoso o no lo es, es decir, qué probabilidad tiene de ser anómalo o de seguir el patrón establecido y mayoritario. De todos modos, se pueden aproximar curvas no gaussianas a gaussianas con algunas modificaciones.
En este tipo de problemas es crucial distribuir los ejemplos normales con los anómalos (por norma, son un número mucho más reducido) en los diferentes sets de datos (Entrenamiento, CV y Test). Sobre todo, es interesante que los anómalos se encuentren en los de CV y Test.
Finalmente, la siguiente tabla resume la conveniencia de emplear un modelo original o uno multivariables.
Modelo Original | Modelo Multivariable |
Necesita de pretratamiento de datos y conversión a ratios | Automáticamente captura correlaciones entre variables |
Computacionalmente barato, funciona mejor con grandes escalas de datos | Computacionalmente más costoso |
Funciona bien incluso aunque el número de casos de entrenamiento sean bajos | Tiene que tener más número de ejemplos que de variables o si no la matriz sigma no será invertible. |
Deja una respuesta