""

MACHINE LEARNING - DE LO MÍSTICO A LOS PRÁCTICO: Navegando a Través de un Océano de Nulos

Así como las personas, toda compañía debe embarcarse en su propio proyecto de auto crecimiento. En nuestra experiencia, nuestros compromisos de ciencia de datos nos trajeron desafíos que pudimos superar no solo usando nuestros conocimientos técnicos sino la creatividad. En el post de hoy, os narraremos nuestra travesía navegando por un océano de NULOS. Esta es la historia de cómo pasamos de lo místico, las expectativas y asunciones iniciales, a lo práctico, una verdadera metodología para resolver problemas que se convirtió en parte integral y reutilizable de nuestro enfoque sobre la estructura de la ciencia de datos.

Los proyectos de ciencia de datos involucran varias dificultades que requieren de adeptas capacidades de resolución de problemas. Hay muchas posibles soluciones a los problemas técnicos, los cuales pueden ser escogidos en base a ciertos criterios, algunos de ellos son:

  1. Restricciones de tiempo

  2. Limitaciones de presupuesto

  3. Complejidad de implementaciones

  4. Medición de la efectividad (el método que Clariba usa para medir qué tan eficientemente una solución se ha desempeñado)

Un desafío recurrente que hemos visto en nuestros proyectos involucra lidiar con los valores NULOS. En los proyectos de ciencia de datos, está esencialmente garantizado que el equipo de proyecto encontrará valores NULOS en la mayoría de los campos cuando realice ingeniería de factores o ingeniería de predicción. Hay tres factores principales que consideramos cuando lidiamos con NULOS, los cuales son:

  1. Frecuencia de los NULOS

  2. Razones que causan los NULOS

  3. Precisión/fiabilidad de nuestro método para corregir los NULOS

Diseñamos un plan que tomaba en consideración los criterios y factores anteriormente mencionados, y lo aplicamos en un caso de negocios. Los procesos y resultados que os describiremos son un testimonio del impacto positivo que nuestro enfoque tiene frente a estos valores. Por favor notad que todos los valores mostrados en este post son de una simulación de datos usados para ilustrar nuestra metodología.


Predecir si un consumidor se atrasará con su pago este mes basado en su comportamiento histórico

During the feature engineering stage, we decided to include the Nationality feature in order to assess its correlation with user behavior. We conducted a brief NULL analysis that produced the table below:

machine_learning_1.PNG

Improving this feature would be useful in the training phase in our ML modeling stage. As these NULLs are derived from the Nationality feature, it would not be efficient to categorize them within a single group and call it N/A. This would skew the model and it would assume that N/A is a single nationality that holds the same behavior, when in reality it is an amalgam of all other nationalities and more. So how was this resolved?

Primero, era importante entender el porqué de la presencia de estos NULOS. Después de algunos análisis, descubrimos que se debía simplemente a malas prácticas de entrada de datos. Esto nos permitió formar la solución que proponemos a continuación.

 Paso 1 - Reingeniería del mapeo de características

We decided on a 2 Step Approach, where the first step involved looking for other features in the same database that could indicate what the NULL nationality could be. We found one that was far more useful than we could have anticipated. That feature was Nationality Code, as we found many cases where a nationality code was present, but the nationality was registered as a NULL.

Después de una significativa cantidad de trabajo manual, fuimos capaces de corregir los problemas de mapeo causados por la incompatibilidad de los datos. Consecutivamente, fuimos capaces de llegar a la tabla siguiente.

machine_learning_2.PNG

As can be observed, we were able to remove almost half the NULLs by fixing the mapping. Due to this approach, we were certain this mapping was correct as it was influenced by the Nationality Code feature. 

Sin embargo, había más por lograr. En esta etapa, había varios métodos que podríamos haber usado para lidiar con los NULOS. Ya que estábamos limitados por el tiempo, implementamos un método único que era aplicable al problema actual, que necesitaba que se reaplicara la distribución de las muestras conocidas a los NULOS.

Sabíamos que estos datos contenían detalles de familias o individuos viviendo en diferentes áreas de la ciudad, y también sabíamos que esas áreas generalmente tendían a tener una distribución sesgada por una nacionalidad específica.

In order to implement our method of reapplying the distribution, we proceeded through our 2 Step Approach:

Step 1: We displayed each area and the distribution of the population within it, as seen in the following table:

machine_learning_3.PNG

Paso 2 - redistribución basada en la muestra conocida

In the second step, we made use of a powerful library in Python called NumPy and went through each account within the areas that possessed a NULL nationality. We selected nationalities based on the distribution using the np.random.choice operator, which takes a list of elements and their probabilities/distributions as its parameter.

machine_learning_4.PNG

Please note that we used this method on areas where we observed more than 100 units of known nationalities and a maximum 20% NULL ratio, in order to ensure that the sample of known nationalities represented the whole population. Naturally, this method is based on an assumption, as there are more accurate methodologies of prediction (Such as KNN). However, these would consume more time, and would take more features into consideration in addition to the area feature.

Después de implementar el método de distribución a nuestros NULOS, logramos el siguiente resultado:

machine_learning_5.PNG

Después de implementar nuestra solución de 2 pasos, ¡tuvimos éxito en hacer que los NULOS disminuyeran en un 99%! Después le asignamos un valor específico N/A a las restantes 79 cuentas, que no sobrecargaban el modelo mientras entrenábamos. 


En Resumen

Aunque no todas las nuevas ideas tienen resultados positivos cuando son aplicadas por primera vez, nosotros tuvimos éxito durante nuestro primer y segundo intento y validamos una metodología sostenible para lidiar con los valores NULOS. Fuimos capaces de concluir que la ciencia de datos no se trata únicamente de implementar modelos ML. También implica proveer valor a los negocios usando tecnología de punta y utilizando habilidades efectivas de resolución de problemas.

La mezcla entre el aprendizaje automatizado y la perspectiva humana nos permitieron darnos cuenta de que problemas como los NULOS explicados anteriormente, surgen principalmente de una mal flujo de ingreso de datos.

La aplicación de nuestro enfoque a este caso de negocios hizo posible que podamos hacer propuestas para colaborar a mejorar la calidad de los datos y eliminar la causa fundamental o la presencia de cualquier valor NULO. La solución puede ser implementada en diferentes formularios de información personal e implica presentar a la nacionalidad en un menú desplegable en lugar de en una caja de texto. De tal manera, cuando un usuario registre sus datos a su nueva cuenta, tendrá que seleccionar la nacionalidad de esta lista.

¿Alguna vez has lidiado con valores NULOS? Si es así, ¿cómo lograste disminuirlos? ¿Fue nuestra experiencia útil para ti? Dejadnos saber en los comentarios de abajo sus opiniones.

EspañolEnglish