En el post anterior hablé sobre distintos riesgos que existen en el mundo del Machine Learning, creo que hice bien seleccionando los que he creído que son de los más comunes y considero de los más importantes para el correcto funcionamiento y éxito de un sistema de este tipo. Una de las recomendaciones que se hacen a la hora de diseñar sistemas de ML es que no es necesario que sean muy complejos para que tengan un muy buen funcionamiento, por ejemplo, el clustering una técnica que centra en buscar similitudes en los datos, es sencilla de implementar y simultáneamente ofrece buenos resultados. Además, este tipo de sistemas son bastante sencillos de auditar ya que el auditor no necesita saber qué reglas se deben aplicar a los datos para poder identificar similitudes o valores atípicos [1].
A la hora de diseñar los controles para los riesgos comentados en el post anterior, pienso que hay que seguir el consejo de antes, no son necesarios implementar controles extremadamente complejos para reducir el nivel de riesgo que provocan.
- Confiabilidad de los datos
Después de las empresas implementen los sistemas de ML, se tienen en cuenta a la hora de analizar los datos, sacar distintas conclusiones y hacer decisiones efectivas. Sin embargo, para que se puedan producir estos análisis de la forma más precisa posible se debe poder confiar plenamente en los datos. Además, los datos pueden ser incompletos, estar desactualizados o introducir cualquier tipo de sesgo a los resultados obtenidos. Además, se tiene que tener en cuenta también que se necesita una gran cantidad de datos para entrenar estos sistemas, por lo que para intentar minimizar el riesgo relacionado a la confiabilidad de los datos es necesario preparar y recoger de forma correcta todos los datos que sean posibles.
Hay que identificar que tipo de datos se necesitan para posteriormente extraer las características de los datos. Estas características se pueden definir como patrones que se encuentran en los datos y poderlas identificar de forma correcta aumentan la precisión de los modelos de ML a la hora de realizar predicciones [2].
- Sobreajuste (Overfitting)
El el post anterior definimos el Sobreajuste es el sobre entrenamiento de los datos de entrenamiento y la incapacidad de generalizar un modelo. Para solucionar esto, se pueden intentar varias cosas:
1. Parar el entrenamiento de los datos de forma prematura. A la hora de entrenar los datos de forma iterativa, se va comprobando el error que existe en el modelo con un set de datos de validación, por lo que si se detecta que al usar este set de datos el error aumenta se puede parar el entrenamiento para que no continúe subiendo [3].
2. También se debe intentar no usar una cantidad excesiva de dimensiones en los datos, es decir, reducir el número de características con el que se entrena el modelo.
- Infra-ajuste (Underfitting)
El Infra-ajuste es cuando un modelo no ha aprendido lo suficiente y se da una generalización demasiado pobre. Típicamente, es un problema que precede al sobreajuste, ya que se da durante el proceso de entrenamiento y no en el de validación. Por ello las técnicas para solucionar este problema pueden ser similares a las que se usan para solucionar las del sobreajuste.
- Obtener más datos: Esto se puede llegar a realizar mediante técnicas de alimentación de los datos, por ejemplo si miramos una foto se puede intentar darle la vuelta y valdría como un dato más para analizar, o incluso crear ligeras variaciones de datos existen de forma previa. Está técnica también puede ser utilizada para evitar el sobre-ajuste ya que se crean datos extra de los que puede entrenar y validar [4].
- Hiperparametros
En el anterior post mencioné que los hiperparametros de un modelo de ML pueden ser algo vital para que se pueda generalizar un modelo de forma correcta y desgraciadamente muchas veces este proceso se hace mediante la intuición de aquellas personas que desarrollan el modelo. Pero por suerte, existen herramientas para automatizar este proceso y escoger el modelo que mejor se adapte a los hiperparametros. Apache Spark porque partiendo de un mismo set de datos puede entrenar varios modelos de forma simultánea y al finalizar escogemos el modelo que mejor de todos los que se han entrenado [5].
- Algoritmos defectuosos
A la hora de rebajar el riesgo que puedan suponer el uso de algoritmos defectuosos, lo que hay que intentar hacer es intentar experimentar primero con tareas que puedan suponer un riesgo bajo, tareas que sean confiables y a las que se pueda aplicar un test riguroso antes de que sean usados en aplicaciones de alto riesgo [5]. Además de esto, me gustaría volver al inicio de este post, donde decía que las soluciones sencillas funcionan, no por aplicar algoritmos más complicados, que ademas pueden llegar a ser muy complicados de depurar y auditar, van a tener una gran diferencia en comparación a adopciones mas sencillas y tradicionales.
Como conclusión, me gustaría dejar claro que estos son riesgos que cualquier sistema de ML debe afrontar de una forma y otra y que por suerte, existen estos controles para asegurarnos de aumentar al máximo las probabilidades de minimizar estos riesgos y poder generalizar un modelo. Aunque si tuviera que centrar mis esfuerzos en solucionar algún riesgo de los mencionados y una vez asegurándonos de que los datos que tenemos disponibles son los idóneos para entrenar el modelo, serían tanto el infra-ajuste como el sobre-ajuste
Referencias:
[3] https://elitedatascience.com/overfitting-in-machine-learning#how-to-prevent
[4] https://datasmarts.net/es/que-es-underfitting-y-como-lo-detectamos/
[5] https://databricks.com/blog/2016/01/25/deep-learning-with-apache-spark-and-tensorflow.html
[6] https://www.isaca.org/resources/news-and-trends/isaca-now-blog/2017/the-risk-associated-with-ai
alvaroh
Latest posts by alvaroh (see all)
- The World Ends With You - 5 enero, 2021
- Arreglos, experiencia y conclusiones. - 25 noviembre, 2020
- Mi experiencia con el feedback - 23 noviembre, 2020
Revisado.