Analítica aplicada al mundo front-end: Por dónde comenzar y qué tener presente

Daniel Herrera Sánchez
Bancolombia Tech
Published in
8 min readApr 29, 2022

Las prácticas front-end cada día evolucionan más y ya nos quedamos cortos para describir una solución, pues ya utiliza conceptos como micro fronts, micro apps, módulos federados, accesibilidad, SEO, Server Side Render (SSR), CX, UX, BFF (Back For Front-end), entre otros. Ahora, sumado a lo anterior, tenemos una corriente que afirma tener Intelligent Apps y aprendizaje de máquina aplicada al mundo front.

En este artículo hablaremos de estrategias que nos permitan implementar aprendizaje de máquina en nuestras aplicaciones para hacerlas más inteligentes.

Diferencias entre inteligencia artificial y aprendizaje de máquina

He decido comenzar por este punto antes que cualquier otro tema, ya que existe una confusión muy grande entre estos dos términos. Con frecuencia escuchamos a muchos proyectos afirmar que están empleando inteligencia artificial en sus proyectos, pero… ¿será esto verdad?

Lo primero que debemos tener en el radar es que la inteligencia artificial, definida de forma sencilla, es lograr que una máquina llegue a pensar como un ser humano. Para lograr esto, se ha estudiado cómo hacer que la máquina entienda nuestros sentidos, tales como la vista y la audición. Sin embargo, solo se considerará inteligencia artificial cuando la máquina tome decisiones similares a las de un ser humano utilizando lo que percibe; no por lo que un algoritmo de aprendizaje dirigido le dijo que tenía que hacer. Hacer que una máquina dibuje, cante, opine por su cuenta sin copiar y pegar de otros, es inteligencia.

Por otro lado, está el concepto de machine learning. Para esta práctica tecnológica utilizamos un conjunto de datos para entrenar a una máquina y clasificar o calcular valores posibles automáticamente.

Un ejemplo sería mostrando o cargando un conjunto de imágenes de perros y gatos al dispositivo, para que luego la máquina los identifique y sepa diferenciarlos; esto es un proceso de aprendizaje. Otro caso podría ser que, a partir de las características de un terreno, la máquina reconozca y pueda dar un precio estimado de venta.

De lo anterior podemos concluir que la mayoría de algoritmos que utilizamos en nuestras aplicaciones front utilizan aprendizaje de máquina. Por ejemplo: biometría, sugerencias de contenido, personalización de la app según acciones del usuario, detección de patrones de comportamiento, asistentes de voz, bots, entre otros.

Por lo tanto, cuando utilices un estrategia de aprendizaje de máquina, ten presente que no es lo mismo que inteligencia artificial.

Intelligent Apps

Ahora sí, pasemos a definir las Aplicaciones Inteligentes. Son aquellas que, haciendo uso de inteligencia artificial y aprendizaje de máquina, logran dar a sus consumidores una experiencia enriquecida, adaptativa y personalizada. Hablemos de algunos de sus enfoques principales.

Enfoque a las acciones del cliente

En este caso de uso, nos centramos en determinar cuáles son los gustos del cliente para darle recomendaciones. No obstante, el cliente final decide si aceptar las sugerencias hechas por el algoritmo de aprendizaje o no. Un ejemplo de este enfoque son las sugerencias de las redes sociales que utilizamos en nuestro día a día. También, se puede crear una “huella de comportamiento digital”, con la que determinas la interacción normal del cliente y, ante una anomalía, generas alertas o acciones frente a tal escenario.

Enfoque adaptativo

Cuando tenemos aplicaciones con muchas experiencias de cara el usuario, se espera que la aplicación se adapte a las necesidades del mismo. Es decir, si a un usuario le encanta comprar helados en una app de comida, las ofertas y contenidos deberían enfocarse en sus gustos. En este enfoque la interfaz de la aplicación se adapta al cliente sin que este lo haya solicitado.

Enfoque a la detección de entradas complejas

En la actualidad, las aplicaciones deben pensar que sus usuarios ya pueden utilizar entradas a la app diferentes a los campos de texto. Un ejemplo de ello serían los comandos de voz, gestos con el rostro y hasta señas por parte del cliente. Una aplicación inteligente debe estar en capacidad de leer entradas complejas aparte de las tradicionales entradas del teclado.

Enfoque al beneficio del negocio

Otro enfoque atractivo de estas soluciones es tener una herramienta poderosa para la toma de decisiones. Se puede hacer un análisis en tiempo real de los datos obtenidos y de ellos dar información valiosa al negocio para que decidan basados en ella.

Con la inteligencia artificial y el aprendizaje de máquina tenemos muchas posibilidades para potenciar nuestras aplicaciones. Por lo tanto, los enfoques que describí anteriormente no son los únicos posibles… ¿Se te ocurre algún otro enfoque? Déjanoslo saber en la caja de comentarios 🤔.

¿Por dónde comenzar?

Ya que tenemos todo claro, de seguro deseas iniciar a construir tu propia aplicación inteligente. Ahora, teniendo esto presente, te daré unos lineamientos que debes cumplir. Así tendrás una ruta para lograr implementar de forma adecuada tu app.

1. Define tu enfoque

Es de vital importancia que no pretendas que de una sola iniciativa obtendrás todos los elementos de tu solución. Por lo tanto, decide que enfoque le darás a tu aplicación para así definir de forma concisa lo que deseas lograr en tu aplicación inteligente.

2. Obtener datos confiables y de forma eficiente

El corazón de todo algoritmo de aprendizaje de máquina son los datos. No importa, que tengamos un excelente científico de datos en nuestro equipo; si los datos obtenidos no son buenos, el aprendizaje no será el esperado. Por lo tanto, el segundo punto será obtener datos confiables y coherentes con nuestro objetivo.

Esto implica que se deben definir muy bien los datos realmente relevantes a obtener, de qué lugar serán obtenidos y dónde se almacenaran. Una sesión con el científico de datos y el negocio podrá ayudar a definir de buena forma este punto.

☢️ ¡Advertencia! El front no debe adquirir datos que se puedan obtener directamente del back. Para dar un ejemplo, si deseamos saber cuales son las experiencias que más utiliza nuestro cliente, no es necesario capturar esta información en la capa de presentación; ya que necesitamos viajar a la capa intermedia y en ella podemos obtener esta información y almacenarla de forma asíncrona. Recuerda que todo lo que se haga de cara al cliente impactará la experiencia; pues entre más información viaje hacia el back, existirá más consumo de internet y memoria. Por lo tanto, solo se deben obtener del front los datos que solo existen en su contexto.

3. Define tus características principales

Cuando obtienes datos, necesitas definir cuales son las características principales de tu análisis. Por ejemplo, si estuviéramos desarrollando un algoritmo para la detección de flores y sus especies, puede ser que, al comienzo, obtuviéramos datos como largo del tallo, ancho del tallo, largo del pétalo ancho del pétalo, largo del sépalo y ancho del sépalo (estas son características).

Utilicemos el set datos de iris como ejemplo :

Gráfico 1- Características separación

Al comienzo con todas sus características no se logra identificar una buena separación entre los tres grupos de flores analizadas (setosa, versicolor, virginica). Adicionalmente, necesitamos saber cuan correlacionadas están nuestras características entre sí, ya que para los algoritmos de aprendizaje esto no es eficiente.

Veamos un pequeño código con el que evaluaremos la correlación entre estas características:

Gráfico 2 — Correlación de características

En el caso anterior, se observa que las características largo del sépalo y su ancho son las menos correlacionadas. En cambio, todas las demás sí tienen un nivel alto de correlación. Esto nos indica que lo mejor sería utilizar esos atributos poco correlacionados pues nos brindan información relevante.

4. Define los algoritmos de procesamiento de tu información

Antes de entrenar a tu máquina, debes decidir la forma en que procesarás tus datos, es decir, no basta con la reducción de características también es necesario procesar la información antes de entrenar. Por ejemplo, para el caso anterior, podríamos utilizar una técnica de reducción de dimensiones como PCA (Principle Component Analysis). Supongamos que hemos elegido dejar los cuatro atributos; si aplicamos PCA, podemos reducir estos a solo 2, donde esos dos tendrían la mayor varianza posible. Con esto logramos simplificar el proceso de aprendizaje de máquina. Veamos a lo que nos referimos:

Gráfico 3 — Data después de aplicar PCA

Como ves en la imagen superior, los datos están mucho más separados que antes de hacer el procesamiento (ver gráfico 1).

5. Define los algoritmos de aprendizaje que se adaptan a tu necesidad

En este tema es muy importante que el equipo defina el algoritmo que se acopla más a sus necesidades. No siempre será necesario implementar algoritmos de clasificación, en ocasiones serán mejor algoritmos regresivos. Tampoco debemos aplicar en todos nuestros proyectos redes neuronales, mucho menos Deep Learning. Cada caso hay que verlo con detalle y junto con el equipo de analítica definir el algoritmo o, en lo posible, el conjunto de algoritmos que ejecuten el aprendizaje de máquina.

6. Ten una capa de analítica en tu negocio

Los pasos que hemos visto de obtención de datos, procesamientos de los mismos y ejecución de algoritmos de aprendizaje hacen parte del flujo que nunca dejará de ejecutarse; por lo tanto, deberías tener una capa dedicada a los procesos de analítica de tu negocio. Esta capa debe proveer un API que sirva para que los proyectos que requieran de la máquina entrenada puedan utilizarla.

Algunos algoritmos de aprendizaje de máquina ya están disponibles en AWS en la forma de servicios, tales como: reconocimiento facial, reconocimiento de audio a texto, reconocimientos de escritura manual entre otros servicios interesantes (consulta el siguiente enlace). Por lo tanto, sería bueno enfocar los esfuerzos de la capa de analítica en aquellos que algún proveedor de servicios como Google o AWS no tengan disponible. Para el caso que se tenga el consumo de servicios disponibles por parte de una entidad tercera, pueden centralizarse en la capa de analítica; pero en este caso no sería necesario algunos de los pasos anteriores (por ejemplo, el servicio de reconocimiento de texto únicamente necesita una imagen y devuelve el texto).

7. Utiliza la capa de analítica en el front

En este punto ya puedes comenzar a utilizar la capa de analítica en tu aplicación front, pero debes tener presente que debes tener un back que administre lo que el front dibuja. En ningún momento el front debe realizar procesamiento de datos de cara al cliente ni mucho menos, llenarse de lógica para lograr la adaptabilidad. Tampoco el front debe almacenar data sensible como datos biométricos del cliente. Para que el front pueda consumir los servicios de analítica, debe ser igual que al consumir un API.

Conclusión

Podemos concluir que la clave para implementar la estrategia de las Aplicaciones Inteligentes es tener una excelente capa de analítica, que ayude al back para dar información relevante, adaptativa y personalizada por cliente al front. Si el artículo te gustó, dale muchas veces click al ícono de aplauso. 👏

¡Te envío un fuerte abrazo!

--

--

Daniel Herrera Sánchez
Bancolombia Tech

Flutter,Dart@GoogleDevExpert💙 • 🔴Youtube Channel Weincode •👨🏻‍💻FlutterMedellin Community Lead • 🙅🏻‍♂️Angular Content creator • Speaker •GitHub: weincoder