Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
Culture & Values
Cómo los valores y la cultura de Nu dan forma a los productos que creamos Ago 7
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



Lea la Parte II de esta historia aquí.
En Nubank, dependemos en gran medida del aprendizaje automático para tomar decisiones escalables basadas en datos. Si bien existen muchas otras bibliotecas de ML (usamos ampliamente Xgboost, LGBM y ScikitLearn por ejemplo), sentimos la necesidad de una abstracción de nivel superior que nos ayudara a aplicar estas bibliotecas más fácilmente a los problemas que enfrentamos. Fklearn empaqueta eficientemente estas bibliotecas en un formato que hace que su uso en producción sea más efectivo.
Actualmente, Fklearn impulsa un amplio conjunto de modelos de aprendizaje automático en Nubank, resolviendo problemas que van desde la calificación crediticia hasta respuestas automatizadas por chat de atención al cliente. Lo construimos con los siguientes objetivos en mente:
Desde el principio, decidimos que la programación funcional sería un poderoso aliado para intentar lograr estos objetivos.
F es de Funcional
Aquí en Nubank, somos grandes admiradores de la programación funcional, y eso no se limita al capítulo de Ingeniería. Pero, ¿cómo ayuda la programación funcional a los científicos de datos?
El aprendizaje automático se realiza frecuentemente mediante el uso de código Python orientado a objetos, y esa es la forma en que solíamos hacerlo también en Nubank. En aquel entonces, el proceso de crear modelos de aprendizaje automático y ponerlos en producción era tedioso y, a menudo, lleno de errores. Implementaríamos un modelo solo para descubrir que las predicciones hechas en producción no coincidían con las observadas durante la validación. Es más, la validación a menudo era imposible de reproducir, y con frecuencia se realizaba en Jupyter Notebooks con estado.
La programación funcional ayuda a solucionar estos problemas al:
Veamos un ejemplo para ver cómo la programación funcional hace esto en la práctica. Digamos que estamos tratando de predecir cuánto gastará alguien en su tarjeta de crédito en función de dos variables: ingresos mensuales y monto de la factura anterior. Como el resultado de este modelo se utilizará para la toma de decisiones sensibles, nos gustaría asegurarnos de que sea robusto frente a valores atípicos en las variables de entrada, razón por la cual decidimos:
Y luego usar un modelo de regresión lineal simple. Así es como se ve el código:
¡No se alarme! Revisaremos el código paso a paso y explicaremos algunos conceptos importantes de fklearn.
Funciones de aprendizaje
Mientras que en scikit-learn, la abstracción principal de un modelo es una clase con métodos de ajuste y transformación; en fklearn, usamos lo que llamamos función de aprendizaje. Una función de aprendizaje toma algunos datos de entrenamiento (más otros parámetros), aprende algo de ellos y devuelve tres cosas: una función de predicción, losdatos de entrenamiento transformados y un registro. Las primeras tres líneas de nuestro ejemplo inicializan tres funciones de aprendizaje: capper, linear_regression_learner y prediction_ranger.
Para ilustrarlo mejor, aquí hay una definición simplificada de linear_regression_learner:
¡Observe el uso de sugerencias! Ayudan a que la programación funcional en Python sea menos complicada, junto con la inmensamente útil biblioteca toolz.
Como mencionamos, una función de aprendizaje devuelve tres cosas (una función, un Marco de Datos, y un diccionario), como lo describe la definición LearnerReturnType:
Las funciones de aprendizaje muestran algunas propiedades de programación funcional comunes:
Puede que le lleve algún tiempo comprender todo esto, pero no se preocupe, no necesita ser un experto en programación funcional para utilizar fklearn de forma eficaz. La clave es comprender que los modelos (y otras transformaciones de datos) se pueden definir como funciones que siguen la abstracción del aprendizaje.
Descubre las oportunidades
Canales
Sin embargo, los modelos de aprendizaje automático rara vez existen por sí solos. Al centrarse únicamente en el modelo, los científicos de datos tienden a olvidar las transformaciones que atraviesan los datos antes y después de la parte de ML. Estas transformaciones a menudo deben ser exactamente las mismas cuando se entrenan e implementan modelos, y los científicos de datos pueden intentar recrear manualmente sus pasos de pre y posprocesamiento de entrenamiento en producción, lo que conduce a una duplicación de código que es difícil de mantener.
Las funciones del aprendizaje son componibles, lo que significa que dos o más alumnos combinados pueden verse como un aprendizaje nuevo y más complejo. Esto significa que no importa cuántos pasos tenga en su proceso, su modelo final se comportará igual que uno solo, y hacer predicciones es tan simple como llamar a la función de predicción final sobre nuevos datos. Tener todos los pasos de su proceso de modelado contenidos en una única función pura también ayuda con la validación y el ajuste, ya que podemos pasarlo a otras funciones sin temor a efectos secundarios.
En nuestro ejemplo, nuestra canalización consta de tres pasos: limitar la variable de ingresos, ejecutar la regresión y luego restringir el resultado de la regresión al rango [0, 20,000]. Después de inicializar a cada aprendizaje, creamos la canalización y la aplicamos al conjunto de capacitación utilizando estas dos líneas de código:
La variable de aprendizaje ahora contiene la canalización resultante de la composición de las tres funciones de aprendizaje y se aplica a los datos de entrenamiento para producir la función de predicción final. Esta función aplicará todos los pasos equivalentes en la canalización a los datos de prueba, como lo ilustra la siguiente imagen:
Ejemplo de cómo los datos fluyen a través de una canalización durante el entrenamiento y a través de una función de predicción al realizar predicciones. La función de predicción en sí es devuelta por la canalización; es la composición de las tres funciones de predicción generadas por cada alumno cuando se llamó por primera vez a la canalización con los datos de entrenamiento. Los registros son una combinación de los registros provenientes de todas las funciones del alumno en proceso.
¿Qué sigue?
Hemos visto cómo los modelos y los pasos de transformación de datos se pueden escribir como funciones de aprendizaje y cómo los canales funcionales en fklearn nos ayudan a garantizar que las transformaciones realizadas durante el entrenamiento y la validación coincidan con las realizadas en producción.
En la Parte II de esta publicación de blog, hablamos sobre la validación y el análisis de modelos y las herramientas que proporciona fklearn para que esos pasos sean más efectivos.
Mientras tanto, ¡le invitamos a probar fklearn por si mismo! No esperamos que fklearn reemplace los estándares actuales en ML, pero esperamos que inicie conversaciones interesantes sobre los beneficios de la programación funcional para el aprendizaje automático.
Descubre las oportunidades