News
Machine Learning
Business
Pandas
Entrevista A Los Ganadores De La Competencia De Data Science "Prediciendo El Rating De Las Aplicaciones En Google Play Store"
Como ya es costumbre, nos hemos dado a la tarea de entrevistar a los ganadores de la competencia Prediciendo El Rating De Las Aplicaciones En Google Play Store que finalizó hace apenas unos dias, teniendo como ganador a Edimer "Siderus" de Colombia y con un puntaje de 0.698709403908066 y quien se ha convertido en el #1 de nuestra tabla de posiciones general, contando las 5 competiciones que hemos desarrollado hasta el momento. El objetivo de esta competencia era analizar y clasificar el rating de las aplicaciones móviles en el mercado Android de Google Play Store. La evaluación del modelo se dió usando el F1 score, esto es debido a que la cantidad de datos en ambas clases no era simétrica. Como trabajamos con un dataset imbalanceado, el objetivo era optimizar el modelo para que clasificara adecuadamente ambas clases y maximizara la precisión de la clasificación, especialmente de la clase con minoría de datos.Para esta competición contamos con un record de participantes, con 135 personas que se unieron y donde evaluamos un total de 1.497 modelos. Muchas gracias a los participantes, y los invitamos a que participen de la nueva competición llamada "Predicción De La Intención De Compra En Una Página Web"Demos paso a los primeros puestos de la competición y a las respuestas que nos dieron para la entrevista, aprendamos de ellos!Puesto #1 - Siderus - ColombiaP: En terminos generales como abordaste el problema planteado en la competición?R: En principio traté de concebir de manera correcta el problema, familiarizándome con la base de datos. Después invertí gran parte del tiempo en construir gráficos, tratando de encontrar patrones subyacentes en los datos o atipicidades que permitieran tomar decisiones objetivas. Finalmente ajusté tres modelos que me sirvieron como línea base para comparar si las nuevas ideas (o algoritmos) brindaban mejor rendimiento respecto a estos resultados iniciales.P: Para esta competencia en particular, tenías alguna experiencia previa en este campoR: No, ninguna. Mi campo de acción son las ciencias agropecuarias.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Varios resultados me llamaron la atención, por ejemplo, una aplicación que tiene muchos reviews no necesariamente es exitosa, no obstante, la tasa (rate) entre el número de instalaciones y los reviews resultó ser para mis modelos la variable más importante. Encontré interesante que las aplicaciones gratis (free) tuviesen mayor predisposición a no ser exitosas, también parece que a las personas les gusta que las apps se actualicen constantemente y que sean de tamaños bajos. En lo personal, creo que el problema más grande es que las clases eran imbalanceadas, afortunadamente existen herramientas que haciendo uso del muestreo con reemplazo nos permiten trabajar con este tipo de información.P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición? R: Como preprocesamiento utilicé imputación de valores ausentes a través del algoritmo k vecinos más cercanos, para el perceptrón multicapa estandaricé las variables numéricas y las transformé con la transformación Yeo-Johnson; en algoritmos basados en árboles (XGBoost, LightGBM o Catboost) sólo imputé los datos. En todos los algoritmos utilicé muestreo ascendente para balancear las clases.P: Que algoritmos de Machine Learning usaste para la competición?R: Probé muchos, Naive Bayes, KNN, modelos lineales generalizados con regularización, percentrón multicapa con keras, Support Vector Machine con kernel radial, Random Forest, XGBoost, LightGBM, Catboost, entre otros.P: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás? R: Los tres algoritmos de mayor puntaje fueron LightGBM, Catboost y Perceptrón Multicapa, el ensamble de los tres proporcionó mejores resultados.P: Que librerias usaste para esta competición en particular? R: Todo mi trabajo fue con R, haciendo uso del tidyverse y tidymodels como bibliotecas principales. También usé lightgbm, catboost y treesnip. La biblioteca themis fue de mucha utilidad para el muestreo ascendente.P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente?R: Trabajo con datos hace 5 años aproximadamente, principalmente en el diseño y análisis estadístico de experimentos agropecuarios. P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?R: Que exploren mucho los datos, que inviertan mucho tiempo en la visualización, entender el problema creo que es la parte fundamental de cualquier proyecto basado en datos.Puesto #2 - Pablo Lucero - EcuadorP: En terminos generales como abordaste el problema planteado en la competición? R: Primero realice un análisis exploratorio básico, luego elabore una línea base para tener algo en que basarme. Posteriormente, realice una extracción de atributos y luego generé nuevos. Para el modelado he probando diferentes algoritmos, los mejores resultados los encontre en los métodos basados en árboles, siendo estos los que optimice para mejorar el puntaje final.P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: Si, en mi trabajo anterior tuve la oportunidad de abordar temas similares.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Pues algo muy rápido, las aplicaciones gratuitas son las mas demandas, la mayoria de aplicaciones exitosas tienen soportan como mínimo la versión 4.1. La cateogoría Eceryone es la que dispone de más aplicaciones en el mercado. Uno de los retos, fue la generación de nuevos atributos. Creo que esa fue la clave para llegar a las primeras posiciones.P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: De forma general para el procesamiento de datos realice una limpieza de los atributos tipo texto para convertir a valores númericos (Price, Installs, last update, etc), retiré simbolos o demás caracteres que no sean necesarios (Current Ver). En cuanto a la parte de ingeniería de atributos, esta se baso en la obtención de nuevos atributos a partir de la relación que puede existir entre el atributo App con el resto. Por ejemplo, la cantidad de palabras en el título de la App o si aparece una palabra de Category en el título de la App. Esto permitio obtener unos 20 atributos bases. También se implemento una transformación logarítmica para mejorar la distribución de ciertos atributos. Luego se aplicó programación genética para obtener al rededor de 40 nuevos atributos, dando un conjunto de 60 total.P: Que algoritmos de Machine Learning usaste para la competición?R: Probe diferenes, desde SVM, RF, MLP, LightGBM, XGBoost y Catboost. P: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: De todos el que mejor resultados me dio fue LightGBM así que en este decidí optimizar los parámetros para la ronda final.P: Que librerias usaste para esta competición en particular?R: Una para programación genética que se llama gplearn.P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Tengo 5 años de experiencia. Actualmente laboro en una empresa de manufactura en el área de proyectos, liderando temas de Industria 4.0.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Revisar documentación en línea sobre problemas similares, eso ayuda a mejor el panorama del problema. (No debemos inventar la rueda). Puesto #3 - Fernando Chica - EcuadorP: En terminos generales como abordaste el problema planteado en la competición? R: En principio, realice un análisis exploratorio de los datos para identificar las características de los datos, a partir de ahí postular posibles técnicas de extracción de características y modelos de clasificación. P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: En el análisis de datos si, pero para este problema particular de predecir el puntaje (ratings) de aplicaciones no.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Lo primero que se puede notar es el hecho de que la mayoría de variables son categóricas, por lo que al inicio ya se debía pensar que tipos de transformación se podría aplicar para transformarlas a variables numéricas. Esto debido a que no todos los modelos permiten trabajar con variables categóricas. Por otra parte, el principal problema de esta base de datos (incluso se lo menciona en la descripción del reto) es el hecho de que la cantidad de datos de cada clase no es la misma, es decir, es un set de datos desbalanceado. En ese sentido, el reto era seleccionar el modelo o el proceso a seguir para abordar este problema y evitar que exista un sobre entrenamiento. P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Transformación de variables categóricas a numéricas utilizando, luego realice pruebas de balanceo de datos; duplicando los datos de la clase con menos observaciones, eliminando datos de la clase con más observaciones y creando datos sintéticos (hasta balancear los datos) de la clase con menos observaciones. Pero no existió una mejora significativa del rendimiento de los modelos que se probaron. Por lo que, el balanceo de datos no se utilizó en el modelo final. P: Que algoritmos de Machine Learning usaste para la competición?R: Perceptron multicapa, regresión lineal, árboles de decisión, XGboost, Light GBM, random forest y Bagging.P: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: El que mejor puntaje me dio fue el de Bagging, utilizando árboles de decisión como modelos base. Pienso que, funciono mejor debido al procesamiento de datos que realice, además con Bagging también se puede elegir que importancia se le da a cada clase durante el entrenamiento y al ser datos desbalanceados permite realizar una regularización al modelo y prevenir el sobre entrenamiento (overffiting). P: Que librerias usaste para esta competición en particular?R: Una gran variedad de librerías, pero de una forma general: Sklearn, numpy, pandas, matplotlib, seaborn, imblearn,datetime y keras.P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Tengo alrededor de 4 años de experiencia en Data Science y actualmente trabajo como investigador en una universidad en el campo de la inteligencia artificial aplicada. P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Tener mucha curiosidad de lo que esconden los datos, tomar en cuenta estrategias que pueden parecer absurdas y ver más allá de lo que los datos muestran a primera impresión. Puesto #4 - Nicolás Dominutti - ArgentinaP: En terminos generales como abordaste el problema planteado en la competición? R: Luego del EDA, apliqué un pipeline de preprocesamiento para poder obtener datos valiosos de las variables. Luego me concentré en generar nuevas variables que brindaran otra perspectiva a los datos originales previo a ingresar a la etapa de model selection.P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: Esta es la 1ra compentencia oficial en la que participo, previamente realizé bootcamps y me concentré en proyectos personales de MLP: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Del EDA surgió que el dataset estaba áltamente desbalanceado y constaba de variables muy dispares y desordenadas que demandaron un pipeline de procesamiento de datos interesante. Por otro lado, de este análisis también asomaron insights que permitieron generar nuevas variables que aporten valor (ejemplo: las APPS con 0 reviews tendían a tener un rating alto casi por unanimidad)P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Se aplicaron técnicas como: extracción de datos reelevantes vía regex, creación de nuevas variables, encoding de features tratadas como categóricas y estandarización de variables numéricas (para algoritmos que lo necesiten, en el algoritmo ganador, al ser un xgboost, no se utilizó). Como punto interesante, al tener un dataset desbalanceado, opté por realizar un oversampling random sobre la clase menos representadaP: Que algoritmos de Machine Learning usaste para la competición?R: Hice pruebas con Logistic Regression, SVM, Random Forest, Catboost y XgboostP: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: No es sorprendente que el mejor puntaje lo haya obtenido con el XGBOOST, un algoritmo ya consolidado en las competencias a nivel mundial. Esta es una librería súmamente potente que se basa en la utilización de boosting, lo que permite obtener scores interesantesP: Que librerias usaste para esta competición en particular?R: re, numpy, pandas, sklearn, catboost y xgboostP: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Tengo 2 años de haber arrancado con los primeros cursos de Data Science. Actualmente trabajo en Johnson & Johnson.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Dedicar tiempo en entender el dominio del problema en detalle, hacerse preguntas sobre los por qué de la industria y lograr plasmar las respuestas e insights en el datasetPuesto #5 - Fernando Cifuentes - ColombiaP: En terminos generales como abordaste el problema planteado en la competición? R: Primero fue entender el problema, entender las variables y sobre todo un buen trabajo de limpieza sobre estas ya que era difícil trabajarlas tal como venían, después creé nuevas variables, luego de esto optimicé hiperparametros en mis modelos para finalmente hacer la predicción.P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: Tengo experiencia en modelos de clasificación en los cuales he trabajado en los últimos años.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Para este caso resultó un reto trabajar con la variable de la versión ya que no correspondía propiamente a un numero decimal, ejemplo 8.1.1.También para la versión de Android en la que indicaba que variaba dependiendo la versión se concluye que no es posible trabajar estas variables directamente si no que debía hacerse un buen trabajo de limpieza antes de ingresarlo al Modelo.Adicional a esto me di cuenta que los datos estaban desbalanceados por que lo tuve que utilizar un algoritmo de SMOTE para tener una base balanceada por oversampling.P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Por ejemplo para la versión tomé solo hasta su segundo nivel, ejemplo 8.1En la fecha de actualización tomé la máxima fecha de actualización en la base y sobre esa fecha calculé los meses que las demás aplicaciones llevaban sin actualizar.Para la versión de Android realicé imputación de los datos para poder tener un aproximado sobre la versión Android en la que trabajaba en los casos en los que no especificaba una versión.También creé una nueva variable la cual llamo ratio de valoraciones correspondiente al numero de comentarios sobre el número de descargas la cual fue mi variable mas importante en mi modelo de clasificación.P: Que algoritmos de Machine Learning usaste para la competición?R: Utilice 3 modelos Random Forest, Xgboost, LightgbmP: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: Un modelo de ensamble por votación de los tres modelos mencionados anterior mente, considero que obtuvo el mejor resultado ya que a nivel macro cada modelo tenia métricas muy parecidas sin embargo a nivel individual las predicciones variaban para algunos registros, por lo cual el ensamble hacía un "consenso" entre los tres modelos.P: Que librerias usaste para esta competición en particular?R: Las principales librerias utilizadas fueron: pandas, sklearn, xgboost , lightgbm P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Actualmente trabajo en un Banco y específicamente trabajando en elaboración de modelos cerca de tres años.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Que no se desanimen, todos comenzamos así y sigan participando en competencias y leyendo foros que es donde más se ayuda para mejorar en los resultados.Puesto #6 - David Villabón - ColombiaP: En terminos generales como abordaste el problema planteado en la competición? R: Lo primero que realicé con el set de datos fue transformar las variables que se suponían eran numéricas, posteriormente feature engineering, luego ensayo de modelos en crudo evaluando su puntaje "f1" y por ultimo la mejora del modelo seleccionado!P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: No, pero con la exploración y entendimiento de los datos llegue a obtener información del campo.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Evidentemente en la exploración de los datos se encontró un desbalanceo considerable en el objetivo "Rating" la cual fue un reto para obtener buenos resultados. P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Después de transformar los datos que supuse eran numéricos y que no lo estaban, procedí a la codificación de las variables categóricas, luego de esto, remover outliers, escalamiento de los datos, selección de variables y por ultimo técnicas para balancear la variable objetivo..P: Que algoritmos de Machine Learning usaste para la competición?R: Realice pruebas con LogisticRegression, Perceptron, RandomForestClassifier, knn, XGBoost, LightGBM, RUSBoostClassifier, AdaBoostClassifier.P: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: Opte por RUSBoostClassifier, ya que este no presentaba sobreajuste.P: Que librerias usaste para esta competición en particular?R: Utilicé Pandas, Numpy, matplotlib, Sklearn, Imblearn, xgboost.P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Llevó estudiando ciencia de datos desde hace un par de años, actualmente mi trabajo no está relacionado con Data Science.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Es fundamental entender el conjunto de datos, escudriñar los datos, saber seleccionar el modelo final. Creo es parte de los aspectos para obtener buenos resultados.Puesto #9 - James Valencia - PerúP: En terminos generales como abordaste el problema planteado en la competición? R: Realicé los pasos descritos en la metodología CRISP-DM. Para afrontar el problema particular del target desbalanceado dividí en tres particiones el train para entrenar un modelo de boosting distinto para cada partición y obtener la predicción final evaluando las tres predicciones obtenidas por cada modelo.P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: Participé en la anterior competencia de DataSourceAI y también en algunas competencias en Kaggle.P: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: El Preprocesamiento de los datos era necesario para obtener datos numéricos que permitan identificar el impacto sobre el target. Además tuve que investigar sobre un método de evaluación enfocada en target desbalanceado: ensamble de modelos.P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Utilicé método regex para retirar caracteres como M (millón), $ (dólar), etc. Además para el Encoding de variables categóricas me enfoqué en el promedio del target asociada a cada categoría según la columna analizada.P: Que algoritmos de Machine Learning usaste para la competición?R: Tres modelos de Boosting: Catboost, XGboost; LightGBM.P: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: El modelo de LightGBM porque es un modelo más optimizado y funciona bien con gran cantidad de datos previamente procesados.P: Que librerias usaste para esta competición en particular?R: Las clásicas librerías para preprocesamiento: pandas, scikit-learn, matplotlib, metrics, entre otros. Además de algunas particulares para los modelos de boosting : catboost, XGBoost Classifier, lightgbm.P: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Tengo dos años de experiencia codeando en Python modelos predictivos de clustering, clasificación y regresión. Además por épocas electorales en mi país (Perú) estoy entrenando modelos de procesamiento de lenguaje natural, tomando como imput los tweets en redes sociales a través de la librería tweepy y spacy.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Investigar por cuenta propia a través de tutoriales en internet. Actualmente hay muchos recursos en Kaggle, Analytics Vidhya, TowardDataScience e inclusive canales de Youtube (mi favorito en StatQuest).Puesto #10 - Frank Diego - PerúP: En terminos generales como abordaste el problema planteado en la competición? R: Realizar un análisis exploratorio de los datos, limpieza de datos, identificar variables predictores más significantes y probar diferentes modelos de clasificación.P: Para esta competencia en particular, tenías alguna experiencia previa en este campo?R: Primera vezP: Que resultados/conclusiones importantes encontraste en la exploración de los datos? Con que retos tuviste que lidiar?R: Encontrar variables categóricas con alta cardinalidad, data imbalanceada, identificar y remover outliers en diferentes variables predictoras y probar varios modelos de clasificación.P: En términos generales, ¿Que procesamiento de los datos y feature engineering hiciste para esta competición?R: Remover caracteres especiales y de texto en las variables Size, Installs y Prices; identificar el número de versión de cada app y la cantidad de versiones android disponible para cada app, usar técnicas de Enconding para variables categóricas, y normalización de datos.P: Que algoritmos de Machine Learning usaste para la competición?R: Logistic Regression y Random ForestP: Cual fue el algortimo de Machine Learning que te dio el mejor puntaje y porqué crees que funcionó mejor que los demás?R: Random Forest porque presenta mejores score en accuracy, precision y recall.P: Que librerias usaste para esta competición en particular?R: Pandas, sklearn, matplotlib, seaborn y scikitplotP: Cuantos años de experiencia tienes en Data Science y dónde trabajas actualmente? R: Apenas llevo medio año en el mundo de ciencia de datos. He llevado cursos online sobre procesamiento de datos con la librería Pandas, estadística básica y seguimiento de tutoriales en youtube sobre machine learning que me ha servido para aplicarlo en este reto. Por otro lado, tengo en un emprendimiento sobre Inteligencia comercial de exportaciones de Perú que permite dar soporte a empresas exportadoras sobre el panorama comercio exterior en diversos sectores productivos.P: Que consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? R: Profundizar el análisis exploratorio de datos en los dataset para obtener un mejor comprensión de las características más importantes que influyan en la variable objetivo. ConclusiónComo podemos ver cada uno de los participantes pudo hacer pruebas con diferentes modelos, entre los cuales se destacan los modelos de Boosting y donde cada participante experimenta diferentes aproximaciones para resolver el problema. Esperamos hayas sacado tus propias conclusiones, las puedes compartir con nosotros en los comentarios, y te esperamos en la competición que se encuentra activa, y quizás tu podrías ser el entrevistado del TOP 10 de la próxima competición!Participar de la competiciónMuchas gracias a todos los participantes y a los ganadores que nos ayudaron con la encuesta!PD: estamos creciendo nuestro foro de discusión para data scientist en Slack en el siguiente link, únete y participa
Daniel Morales
February 2, 2021