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

Durante la etapa de ingeniería de factores, decidimos incluir la característica Nacionalidad para evaluar su correlación con el comportamiento del consumidor. Conducimos un breve análisis de NULOS que produjo la tabla a continuación:

machine_learning_1.PNG

Mejorar este factor sería útil en el periodo de entrenamiento de nuestra etapa de modelación de ML. Como estos NULOS son derivados de la característica Nacionalidad, no sería eficiente categorizarlos en un grupo singular y llamarlos N/A, ya que esto sesgaría el modelo y asumiría que N/A es una sola nacionalidad que contiene el mismo comportamiento, cuando en realidad es una amalgama de todas las otras nacionalidades y más. Así que ¿cómo lo resolvimos?

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

Nos decidimos por un Enfoque de 2 Pasos, donde el primer paso involucraba buscar otras características en la misma base de datos que pudieran indicar cuál podría ser la nacionalidad NULA. Encontramos una que era mucho más útil de lo que podríamos haber anticipado. Esa característica era el Código de Nacionalidad, ya que encontramos muchos casos donde el código de la nacionalidad estaba presente, pero la nacionalidad fue registrada como NULO.

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

Como puede observarse, pudimos remover casi la mitad de los NULOS corrigiendo el mapeo. Debido a este enfoque, estábamos seguros de que este mapeo era correcto ya que estaba influenciado por la característica Código de Nacionalidad.

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.

Para implementar nuestro método reaplicando la distribución, procedimos a través de nuestro Enfoque de 2 Pasos:

Paso 1: Presentamos cada área y la distribución de la población dentro de ella, como se puede ver en la siguiente tabla:

machine_learning_3.PNG

Paso 2 - redistribución basada en la muestra conocida

En el segundo paso hicimos uso de una poderosa biblioteca en Python llamada NumPy y revisamos cada cuenta dentro de las áreas que poseía nacionalidad NULA. Seleccionamos las nacionalidades basadas en la distribución usando el operador np.random.choice, el cual toma una lista de elementos y sus probabilidades/distribuciones como parámetros.

machine_learning_4.PNG

Por favor notad que usamos este método en áreas donde observamos más de 100 unidades de nacionalidades conocidas y una proporción máxima de NULOS del 20%, para asegurarnos de que la muestra de nacionalidades conocidas representaba a la población entera. Naturalmente, este método está basado en la asunción, ya que existen metodologías de predicción más precisas (tales como KNN). Sin embargo, esto consumiría más tiempo, y tomaría más características en consideración además de la de área.

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