Cómo Tinkoff.ru automatiza el análisis con Zeppelin

Tinkoff.ru desarrolla muchos servicios en el mercado de servicios financieros. Nuestros analistas, desarrolladores, tecnólogos y gerentes resuelven sus tareas cotidianas. Todos los días generamos ideas, analizamos, desarrollamos y hacemos todo para crear el mejor producto del mercado.

Trabajo como programador de backend en el departamento de desarrollo interno. Ayudamos a lanzar nuevas líneas de negocio, automatizar el flujo de trabajo e intentar ahorrar un banco de dinero donde sea posible (por ejemplo, negarse a comprar una licencia para algún tipo de software costoso). Nuestro flujo de trabajo es muy estándar: los gerentes presentan funciones comerciales, los tecnólogos las formalizan y establecen tareas, los analistas analizan los datos y los desarrolladores ya resuelven las tareas que se les asignaron. Todo en la vida es más complicado, pero eso ya lo sabes.

Uno de nuestros clientes comerciales es nuestro departamento de fidelización de clientes: Tinkoff Target. Antes de hablar sobre la automatización analítica, explicaré cómo funciona nuestro programa de fidelización.

Programa de fidelización Tinkoff.ru o cómo distribuimos el reembolso a las personas


Casi todos los bancos modernos emiten reembolsos: en rublos, millas o loros (puntos que puede gastar en algo específico).

No somos una excepción, emitimos un reembolso estándar del 1% para todo y del 5% para 3 categorías seleccionadas (por ejemplo, "Transporte", "Cine", "Recuerdos", etc.). No tiene que dar mucho dinero en efectivo (pero realmente quiero) y, por lo tanto, tenemos ofertas especiales de socios del banco que también desean emitir dinero en efectivo. Entonces, como parte de la línea de negocios de los programas de lealtad, estamos tratando de encontrar y convencer a varias compañías para que emitan reembolsos a nuestros clientes en condiciones de beneficio mutuo. Estas empresas son nuestros socios.

¿Cómo hacemos esto? Imagine que hay una empresa condicional Yabloko en el mercado. La mejor manera de atraer a Yabloko a nuestro programa de devolución de dinero es ayudarlo a vender su producto o servicio. Aquí la tarea es atraer una audiencia para el socio. Por ejemplo, clientes que se compran a competidores o clientes que no conocen la existencia de Yabloko. Y también, es posible que Yabloko seleccione a los clientes más adecuados para el perfil que realmente quieren "Yabloko", todavía no lo saben. Estoy hablando de inteligencia artificial y aprendizaje automático.

La tarea de seleccionar ese público objetivo recae en los analistas. Tenemos dos de ellos, y hay muchos socios, más de 1000. Además de esto, los analistas todavía tienen mucho trabajo interesante y, a medida que crece el número de socios, elegir la audiencia adecuada se convierte en una rutina. Dicha rutina debe automatizarse y convertirse en un solo clic en el botón (o mejor sin un botón). Además, el proceso de múltiples etapas para llevar a cabo tales tareas conlleva errores causados ​​por el factor humano. A continuación, le contaré cómo logramos deshacernos de ese trabajo de rutina.

Cómo construimos análisis


En Tinkoff.ru, la mayoría de los analistas usan Apache Zeppelin en sus tareas diarias. Llevamos mucho tiempo esta herramienta en servicio y la estamos desarrollando activamente (incluso comprometiéndonos con el código abierto). Todos los empleados tienen acceso a un repositorio global de datos e informes, es decir, a todos los recursos analíticos de Tinkoff.ru con la posibilidad de utilizar un lenguaje analítico conveniente.

Zeppelin está escrito en Java e incluye muchos intérpretes de lenguajes y tecnologías modernas, incluidos Python, Hive, Spark, Groovy, R y muchos otros. Las secuencias de comandos escritas se almacenan en computadoras portátiles, que consisten en párrafos; externamente, la interfaz de usuario del entorno de trabajo es muy similar a Jupyter . Y la pantalla principal de la aplicación es la siguiente:

imagen

Cada línea de negocios aquí tiene su propio directorio de trabajo con diferenciación de los derechos de lectura y edición.

Una gran ventaja para nosotros (desarrolladores) es la disponibilidad de una API muy conveniente e interactiva. Con la API, la vida se vuelve más fácil. A través de la API con esta herramienta, puede hacer lo que quiera, sin pasar por la interfaz de usuario web. Entonces surgió la idea de integrar los resultados del trabajo de los analistas en nuestro proyecto.

Brevemente sobre nuestro proyecto


Nuestro backend está escrito en Java, Frontend en Angular 5 (dado que el proyecto no es joven, parte de la interfaz de usuario está escrita en Vaadin, de la que nos estamos deshaciendo lentamente). La mayor parte del proyecto es una aplicación web para que los gerentes trabajen, donde mantienen relaciones con socios, hacen nuevas ofertas especiales, monitorean la implementación de sus KPI, etc. Tenemos una cuenta personal de un socio donde cualquier socio del banco puede observar las estadísticas de sus ofertas especiales lanzadas (acumulaciones, activación, etc.), descargar y firmar acuerdos, cuentas y relaciones de documentos en general.

imagen

Enviamos los datos al banco móvil y al portal web a la sección "Bonos" a través del servicio web SOAP. Hay un aterrizaje escrito en React, donde cualquiera puede dejar una solicitud para participar en el programa de fidelización. Hemos implementado varios mecanismos para calcular el reembolso y las cuotas especiales, integración con varios servicios bancarios.

Integración con Apache Zeppelin


Tradicionalmente, para atraer nuevos socios, los gerentes enviaron a los analistas una carta con un conjunto de deseos de los socios para generar un público objetivo. Los analistas utilizaron guiones previamente escritos en el zoológico de idiomas y magic copy-paste.

Obviamente, con la formalización adecuada de los requisitos, puede escribir un script universal, lo cual hicimos nosotros. Y para ingresar datos formalizados escribieron una IU conveniente. Solo queda implementar el trabajo con Apache Zeppelin en nuestra aplicación web. El esquema de trabajo de dicha integración es el siguiente:

imagen

El gerente en el curso de la comunicación con el socio crea una tarea en la aplicación, completando los parámetros en el formulario para formar el público objetivo. Un ejemplo de tales parámetros es el siguiente:

  • Categorías BCC y / o códigos MCC en los que el cliente realiza transacciones o realiza transacciones en un determinado período de tiempo por ciertos importes con un cierto cheque promedio.
  • Empresas competitivas en las que el cliente transporta o transporta en un determinado período de tiempo.

y otro

Hay muchos parámetros de este tipo y todos están formalizados en la interfaz de usuario. Después de ingresar los parámetros iniciales, el administrador inicia la operación de generación y el algoritmo comienza su trabajo:

  1. Como todos nuestros scripts están escritos en un cuaderno y no queremos cambiarlo, lo clonamos en un directorio separado. Zeppelin en respuesta a nuestra solicitud nos devuelve la identificación del clon, por lo que nos pondremos en contacto con la nueva computadora portátil. Clonar scripts de trabajo también es conveniente para la administración, ya que siempre podemos ver los scripts que se ejecutaron para una tarea específica y encontrar el problema.
  2. A partir de la versión Zeppelin API 0.8, después de crear una nueva computadora portátil, debe colocar el acceso CRUD para su posterior administración.
  3. En uno de los primeros párrafos de una computadora portátil que funciona, como regla, las variables se declaran y se establecen sus valores predeterminados iniciales, que deben reemplazarse. En esta etapa, insertamos nuestro párrafo en la computadora portátil (con la inicialización de variables y datos formalizados), que formamos antes de enviar.
  4. Luego, con una solicitud ligera para el método POST, lanzamos nuestra computadora portátil para su ejecución. O, mejor dicho, ejecutamos nuestros párrafos uno a la vez, para monitorear la ejecución de todos los scripts y mostrar el estado de la generación del público objetivo en la aplicación.
  5. Al final de la operación, el gerente recibe una notificación (en caso de que no supervisó el estado del progreso). El resultado de los scripts es el archivo CSV generado con la audiencia, almacenado en un directorio compartido. Al lanzar ofertas especiales, podemos generar varias audiencias y fijarlas con un tipo diferente al agregar a la oferta. Y para audiencias con diferentes tipos, podemos establecer de manera flexible las condiciones y el tamaño de la acumulación de reembolsos.

Un poco de análisis grosero


Según estimaciones aproximadas, la automatización de la recopilación de la audiencia objetivo condujo a la liberación de más del 30% del tiempo de trabajo de los analistas (sin contar el tiempo dedicado a la comunicación entre analistas y gerentes).

Desde junio de 2018 hasta enero de 2019, el número de tareas de generación completadas supera las 400. Según los gerentes de comunicación y obteniendo el resultado requerido, pasaron de 0.5 a 4 horas, tomando el tiempo promedio para formar el público objetivo de ~ 2 horas, se ahorraron más de 800 horas-hombre. (más de 100 días hábiles).

En conclusión


Lo más importante que logró la integración con Zeppelin fue minimizar el factor humano en todas las etapas del proceso de generación de audiencia objetivo. Los errores en la formación de una audiencia adecuada para el socio, por regla general, se identifican después de las acumulaciones. Es muy difícil minimizar los costos financieros incurridos y, por los errores cometidos, tiene que pagar un alto precio al dar una devolución de dinero a todos en una fila, después del lanzamiento de la oferta especial.

Otra gran ventaja es el cambio de responsabilidad hacia la fuente primaria del proceso, ya que El "cuello de botella" del factor humano está ahora en la zona de la formación inicial de datos por parte del gerente. Y esto significa que el que crea la tarea de generación y completa los parámetros iniciales lo hace con mayor atención.

Actualmente, seguimos desarrollando integración y automatizando tareas analíticas. Entonces, usando el lanzamiento remoto de scripts escritos en Zeppelin, desde la aplicación generamos varios tipos de informes analíticos para gerentes que previamente fueron preparados individualmente a pedido.

Source: https://habr.com/ru/post/441644/


All Articles