Machine Learning + Redes.
El propósito del post es motivar a quienes se sientan interesados en explorar estas herramientas y habilidades, así que detalles muy técnicos será en otros futuros post.
----------------------------------------------------------------------------------------------------------
Es bueno empezar por definir qué es Machine Learning? Machine Learning es una disciplina científica del ámbito de la Inteligencia Artificial que crea sistemas que aprenden automáticamente. Aprender en este contexto quiere decir identificar patrones complejos en millones de datos. (Wikipedia).
La administración TI tradicional:
La administración "tradicional" de las infraestructuras de tecnología, aún con la llegada del Cloud y de las Virtualizaciones, sigue siendo a manera general limitada. Muchas empresas compran estas tecnologías mayormente motivados por las promesas de ahorros a corto y/o mediano plazo, que evidentemente es una ventaja en empresas en las que el negocio no es el ámbito tecnológico, por lo que sus gastos e inversiones deben estar ampliamente justificados. Esto ha generado como resultado que se mal interprete la compra o renta de estas tecnologías como única justificación para reducción o ahorros en el pago por mantenimiento de dichos productos en software y hardware o en la reducción en espacio y consumo de energía.
La realidad es que las empresas que continúan viendo sólo el lado del ahorro al momento de tomar la decisión de Cloud, Virtualizaciones, y otras recientes tecnologías, estan perdiendo grandes oportunidades al quizás por desconocimiento no tomar en cuenta que deben capacitar a su personal no sólo en la administración y soporte técnico de ellas, sino de motivar un cambio en la mentalidad de los mismos. Un cambio en la mentalidad del personal se refiere a incorporar y/o desarrollar habilidades en el proceso de trabajo más allá de un simple requerimiento o soporte de conectividad usuarios/sistemas. Se requiere la manipulación inteligente de los equipos, sistemas, y datos (los que se almacenan y los que circulan en tiempo real en la red) y así poder máximizar la inversión, es decir, sacar el máximo provecho.
Fabricantes tecnológicos tienden a crear productos para solucionar problemas generales, o para suplir demandas colectivas, entonces es ahí donde realmente se genera la ganancia de los fabricantes y se reducen las oportunidades de los clientes que adquieren dichas tecnologías en el sentido de que deben adquirir múltiples productos y soluciones de diferentes fabricantes para solucionar parte de sus problemas y lograr algunos objetivos del negocio, lo que trae como consecuencia ver a los departamentos de TI como gastos, no inversión, de ahí que la justificación #1 es el ahorro al momento de proponer la adquisición o cambio de tecnologías. En este último punto es cuando Machine Learning empieza a ser de gran ayuda, porque ayuda a identificar los retos y oportunidades y a presentar múltiples soluciones por medio de la identificación de patrones, modelos predictivos, y otros.
Como diría un buen amigo, " muy bonito todo eso, suena de película, y eso en que me ayuda a mí? ."
Es común que Machine Learning tienda a ser asociado a temas comerciales, como identificar tendencias de compra en clientes, oportunidades de ventas, todo lo relativo a negocios y también en actividades puramente científicas. Sin embargo Machine Learning o Deep Learning como tambien se le conoce, pueden aplicarse por ejemplo en la administración de infraestructuras de redes, bases de datos, en el tráfico que circula en estas, en el comportamiento en tiempo real que tiene en determinado momento por ejemplo la red de una empresa, en fin puede ser aplicada a todo.
Dato personal. Cuando conocí sobre Machine Learning lo hice aprendiendo, por curiosodad algo totalmente alejado de mi área laboral (en mi tiempo libre), dessarrollo de Realidad Virtual (VR) en la plataforma Oculus. Cuando empecé con la parte teórica un tema obligado fue Inteligencia Artificial (AI). Lo admito, después de repasar, repasar, repasar, volver a repasar y un poco más de repaso de matemáticas y lógica, , todo empezó a ser más claro ;-) . Me surgió la curiosidad de si esto tenía alguna manera de aplicarse en infraestructura de redes y encontré mucho material online, entre foros, blogs, eBooks, y muy importante la apuesta de grandes fabricantes como Cisco, HPE, Microsoft, Oracle, fabricantes que en principio no se asocian (o no se asociaban) cuando se habla de inteligencia artificial desde el punto de vista comercial.
Entonces qué cambió en la industria?
Bueno, lo que cambió es el enfoque tradicional que tenían los fabricantes, cambió el fabricar "cajas cerradas" para soluciones generales, a "cajas abiertas" para adaptarse a las necesidades de cada cliente. Ahora los clientes tienen la oportunidad de adaptar sus infraestructuras tecnológicas, por ejemplo de redes, bases de datos, incluso las interacciones de las personas y el ambiente que les rodea. (IoT/IoE)
Y cómo me ayuda Machine Learning?
Una de las maneras más simples de explicar cómo funciona la inteligencia artificial es, identificar patrones o eventos, desarrollar una respuesta a cada una de ellas e incluso respuestas a exepciones. Esto normalmente nos lleva a la siguiente pregunta, en una red cómo puedo identificar patrones? La manera tradicional es capturar el comportamiento de los equipos y mediante thresholds determinar lo que es aceptable "normal" y lo que no lo es. Cómo puedo desarrollar respuestas a cada una de ellas? La manera tradicional es mediante syslogs, snmps, otras.
Cómo puedo identificar excepciones? Esto último es lo que conocemos en nuestro día a día como errores, averías, falsos positivos, comportamiento anormal, inetestabilidad, y algunos 2 ó 5 etc. porque excepciones son aquellos comportamientos que no pudimos identificar muchas veces por la complejidad que suele existir en las infraestructuras de redes. La complejidad viene dada como resultado de los mútiples tipos de tráficos que circulan, es como la complejidad del ser humano reflejada en ella. (Filosóficamente hablando, la tecnología no puede ser perfecta porque es creada por los seres humanos (humanos=imperfección), sin embargo sí puede ser mejorada constamentemente en función a los nuevos requerimientos y exigencias).
Entonces, cómo manejamos las excepciones? bueno, antes habían pocas maneras de identificarlas, casi siempre después de ocurrir. Mi primera experiencia laboral en tecnología fue como soporte HelpDesk, y pude experimentar todos los días cómo estas se registraban en los departamentos de seguridad, bases de datos, sistemas operativos, redes, proveedores, clientes, y otros. Algunas son molestosas, y otras generan perdidas monetarias.
Con la aplicación de Machine Learning ahora es posible reducir dicha complejidad y reducir las fallas a través de la identificación de excepciones registradas en capturas previas o detectadas en tiempo real. Existen varios algoritmos para poder solucionar problemas y predecir comportamientos.
Algunos tipos de problemas nos dirigen hacia uno de dos metodos de aplicar Machine Learning, como por ejemplo: Machine Learning Supervisado y Machine Learning No Supervisado.
Saber cuáles tipos de tráfico tengo circulando en mi red, de manera estática es como se hace hoy día aún, es decir, primero identificar las aplicaciones y sistemas de mi empresa. clasificarlas en Críticas, Importantes, Normal, y en función de prioridades aplicar ciertas reglas. De manera dinámica si lo que quiero por ejemplo es identificar y categorizar todas aquellas que supongo circulan en mi red, utilizo Machine Learning Supervisado, a manera general le digo qué busco y qué hacer cuando lo encuentre.
Y las que desconozco, aquellas que un departamento X instaló y por la razón que sea no pude identificarla en mi inventario periódico, o aquel tráfico malicioso o no, que está empezando a circular aunque aún no me ha afectado? Entonces estas las puedo tratar con algoritmos de problema de regresión, estas son de gran ayuda cuando no tengo conocimiento de cómo categorizarlo, porque no sé qué es. Machine Learning No Supervisado dispone de algoritmos que permiten "escanear" el tráfico o analizar el trafico capturado y almacenado, separar lo conocido de lo desconocido, identificar patrones, y entonces se pueden tomar acciones.
Es bueno saber, en caso de que no estes relacionado con estos temas, que usar el Machine Learning y las herramientas que existen para estas es más que un trabajo de dar clicks sólo cuando ocurre un problema. Es un trabajo de iterar continuamente, día a día, sobre los datos capturados tratando de identificar patrones, probar modelos predictivos, probar mediante prototipos y análisis, todo con el objetivo de adelantarse a posibles acontecimientos futuros que pudieran ser positivos o negativos. Identificar oportunidades.
Entonces debo ser un matemático con experiencia de haber trabajado en la NASA o en el CERN? No.
Existen múltiples herramientas que te ayudan a lograr estos beneficios, sin embargo sí es necesario conocer o tener los fundamentos de esta disciplina. Es una disciplina en la que se debe iterar constanmente. En internet existen varios recursos que te pueden ayudar a profundizar. Algunas herramientas las puedes encontrar buscando herramientas relacionadas a Big Data, Machine Learning, por ejemplo.
En lo personal dos herramientas que conozco son: mlpack para C++, y MatLab, esta última la más fácil si no tienes o no te interesa tener conocimientos de C++. MatLab es también la más conocida en cuanto a trabajar con algoritmos de Machine Learning y es agnóstica en cuanto a otros fabricantes. MatLab trabaja en estructuras de matrices, por lo que es fácil generar reportes en archivos .csv / archivos Excel, en la fase de pre-proceso de los datos, e importarlo en MatLab y poder trabajar en ellos aplicando los diferentes algoritmos.
Por otro lado Cisco tiene buena integración con productos como Hadoop. HPE, Microsoft, Oracle, y varios fabricantes tienen compatibilidad con otras herramientas.
Aquí he intentado lanzar algunas ideas, referencias, nombrar algunos conceptos, y herramientas. El objetivo principal es motivar a los de formación técnica, a explorar otras habilidades que, utilizadas de la manera correcta, pueden ser de gran ayuda en sus labores cotidianas, y prepararles para el siguiente nivel técnico requerido en estos próximos 5 años.
Lo importante es entender que es una disciplina relativamente nueva para la formación técnica, que puede que en muy raros casos lo apliques de manera intensiva debido a que los fabricantes también se esfuerzan en facilitar estas herramientas en sus productos.
En lo que sí te ayudará tener los fundamentos de Machine Learning y algunos de sus diferentes algoritmos, es poder identificar cuándo lo necesites, interactuar con los proveedores que trabajan estas soluciones, y así poder obtener el mejor resultado, como por ejemplo si se requiere adquirir estas soluciones y/o cómo identificar las habilidades necesarias en tu departamento de TI para prepararte en este nuevo reto tecnológico.
Abrazos!