Aprende cómo hicieron sus modelos de machine learning y qué herramientas utilizaron con esta entrevista al Top 5 del leaderboard de la competición.
Hace unos días finalizamos la competencia de data science llamada “Predicción De La Intención De Compra En Una Página Web” en la cual se unieron 76 data scientists, 35 de ellos enviaron al menos 1 modelo de machine learning a la plataforma y recibimos y evaluamos un total de más de 3.100 modelos.. Desde aquí podemos sacar varias conclusiones, y es la necesidad de construir diferentes modelos para evaluar su efectividad y encontrar el que mejor resultado arroje.
El mejor resultado obtuvo un puntaje de 0.817631034576143, seguido de cerca por otro con el score de 0.816491504853038
Debido a estos buenos resultados, quisimos conocer en detalle que hicieron los competidores que se ubicaron en los primeros lugares. Aquí tenemos entonces las preguntas y respuestas de nuestros ganadores.
P: En términos generales cómo abordaste el problema planteado en la competición?
R: Primero entender el problema, ¿cuál es el objetivo? ¿Qué se quiere responder? ¿Cómo las covariables relacionan con mi variable de interés? (aprendizaje supervisado en este caso, objetivo:clasificación)
P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo?
R: Si, soy estadístico y todo el tiempo estoy trabajando en el modelado de datos, en cómo extraer información útil para mi empresa a partir de un conjunto de los mismos, pensar en qué transformaciones, qué forma de limpiarlos, ayuda a obtener un mejor ajuste de los modelos.
P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Encontré que en ciertos casos, las transformaciones de las variables categóricas juegan un papel importante en el resultado final del modelo, el reto de era procesar tanto el conjunto de prueba como validación de tal forma que las transformaciones hechas y el preprocesamiento sea homogéneo. Variables como los tiempos que un usuario pasa en una página web ayudan a entender la intención de compra.
P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Como utilicé métodos basados en árboles, no fue necesario el escalamiento de las variables cuantitativas, lo cual da una ventaja en la interpretabilidad al permanecer estas en su escala original. Para las variables categóricas utilicé un one-hot encoding, y toda esta transformación se hizo previa a la unión de test-train para asegurarse de conservar la misma estructura. Estudié la proporción de unos y ceros para entender en caso de ser desbalanceados (como lo era efectivamente) si debía utilizar un punto de corte óptimo para la clasificación.
P: ¿Qué algoritmos de Machine Learning usaste para la competición?
R: Utilicé cerca de 10 algoritmos de clasificación de aprendizaje de máquinas, estos fueron: xgboost, catboost, lightgbm, random forest, booting, adaboost, cart, regresión logística, extreme random trees, etc. Y posteriormente estudié qué ensambles generaban más información en el dataset.
P: ¿Cuál fue el algoritmo de Machine Learning que te dio el mejor puntaje y por qué crees que funcionó mejor que los demás?
R: El podio está entre catboost y xgboost, muy seguramente el método de refuerzo (boosting) que es la base en ambos, logra mapear una estructura no paramétrica a partir de particiones generadas en el hiperplano de las covariables en aras de mejorar la explicación en la variable respuesta. Encontré además que para este problema en particular, el bosque aleatorio es un muy buen ensamblador.
P: ¿Qué librerías usaste para esta competición en particular?
R: Usé las librerías scikit learn (con muchas de sus funciones) , catboost, pandas, numpy, xgboost, lightgbm, seaborn y matplotlib
P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Tengo cinco años de experiencia como data science y actualmente estoy trabajando para la compañía Seguros Suramericana S. A
P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?
R: Hacer un muy buen feature engineering, trabajar a partir del entendimiento del problema en la creación de nuevas variables que puedan aportar a la explicación de la variables de interés en su variación conjunta (de las covariables).
P: En términos generales cómo abordaste el problema planteado en la competición?
R: Primero hice un análisis exploratorio de los datos, después hice un preprocesamiento de los mismos y finalmente probé distintos modelos.
P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo?
R: Actualmente estoy formándome en Data Science y había puesto en práctica algunos modelos, pero no de forma profesional.
P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Los datos están completos (ningún NA).
Las variables numéricas están en diferentes escalas.
Además, en ciertas variables había outliers.
P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Centrado y escalado de variables numéricas.
Eliminación de outliers.
Eliminación de variables con varianza cero o cercana a cero.
P: ¿Qué algoritmos de Machine Learning usaste para la competición?
R: Regresión Logística, Random Forests y XGBoost.
P: ¿Cuál fue el algoritmo de Machine Learning que te dio el mejor puntaje y por qué crees que funcionó mejor que los demás?
R: XGBoost. Es un modelo de difícil configuración de hiper parámetros, pero con un gran poder de predicción.
P: ¿Qué librerías usaste para esta competición en particular?
R: tidyverse, caret y H2O.
P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Actualmente estoy formándome como Data Scientist y trabajo como Ingeniero de Datos.
P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?
R: Que según vayan aprendiendo sobre ciencia de datos, busquen datasets y lo pongan en práctica.
P: En términos generales cómo abordaste el problema planteado en la competición?
R: Hice una análisis exploratorio inicial de cada variable vs la variable objetivo, con el fin de obtener una intuición inicial de que era cada variable e identificar tendencias y posibles transformaciones o nuevas variables a crear. Luego aplique técnicas de selección de variables y probé algunos algoritmos de clasificación para finalmente optimizar hiperparametros.
P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo?
R: No. Mi experiencia se ha enfocado en datos financieros.
P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Para este problema la variable pagevalues era muy importante, solo esta variable realiza una gran discriminación de la variable objetivo, solo poniendo revenue = 0 para todo lo pagevalues igual a 0, y el resto como revenue = 1, se logra obtener una métrica de 0.79 y lo que logró mejorar con los modelos fue relativamente poco. No me alcanzó el tiempo para explorar bien el problema por separado, quizá hubiera logrado mejores resultados..
P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Estandarización, creación de nuevos features a partir de los hallazgos en en el análisis exploratorio y uso de algoritmos de selección de variables
P: ¿Qué algoritmos de Machine Learning usaste para la competición?
R: Realicé pruebas con LightGBM, XGBoost y Catboost
P: ¿Cuál fue el algoritmo de Machine Learning que te dio el mejor puntaje y por qué crees que funcionó mejor que los demás?
R: LightGBM, XGBoost y Catboost fueron los que mejor resultado me dieron
P: ¿Qué librerías usaste para esta competición en particular?
R: sckit-learn, lightgbm, imbalanced-learn, borutapy, optuna
P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Tengo 12 años en el grupo Bancolombia
P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?
R: Lo más importante de todo es entender los datos, comprender el significado de las variables, cómo se relacionan con la variable objetivo y seguir buenas prácticas a la hora entrenar los modelos para evitar sobre ajustes.
P: En términos generales cómo abordaste el problema planteado en la competición?
R: Lo que suelo hacer en la mayoría de estas competencias es leer rápidamente el enunciado, encontrar las ideas principales como: tipo de modelo (clasificación/regresión...), métrica a optimizar (F1, accuracy, ...) y bajar los datos para comenzar a probar.
Luego de obtener un flujo completo para subir los resultados, comenzar a iterar para mejorarlo, agregando feature engineering, probando modelos, hiper parámetros, etc... Es decir, un flujo generalista.
En esta ocasión quería probar un framework y me vino excelente para la ocasión: optuna.
P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo?
R: Soy Desarrollador hace 7 años aprox, y hace 1 año y medio me di cuenta que el trabajo es aburrido, hacer CRUDs pasó a ser una tarea monótona.
Descubrí todo este mundillo, y cada día estoy investigando y mejorando mis capacidades.
Al venir de un rol dev y estudiar una carrera universitaria de software, se me da más fácil el tema de escribir código fuente, aunque mis conocimientos técnicos no son tan fuertes como los de algunos orientados a ciencias duras.
En este momento, me encuentro en proceso de búsqueda de algún puesto que sea full time relacionado directamente en estas temáticas.
P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: No recuerdo haber encontrado nada raro, pero puedo estar mintiendo :-)
P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: En general, podría haber buscado más opciones en el FE, pero lo hice bastante sencillo:
- MinMax Scaler para columnas númericas
- transformé en ordinales columnas categóricas
- creé Total_Duration para sumarizar todas las columnas con "_duration"
- creé Duration_AVG para las columnas "_duration"
P: ¿Qué algoritmos de Machine Learning usaste para la competición?
R: Testeé varios modelos: KNeighborsClassifier, RandomForestClassifier, KNeighborsClassifier, LightGBM. También intenté un Stacking de algunos modelos pero me pareció demasiado excesivo y los resultados prácticamente no se modificaban (simple es mejor que complejo).
P: ¿Cuál fue el algoritmo de Machine Learning que te dio el mejor puntaje y por qué crees que funcionó mejor que los demás?
R: LightGBM. La mayoría de las veces los algoritmos que elijo (y en otras competencias donde suelen ser ganadores) se encuentran LGBM, XGBoost, RandomForest.
Estos algoritmos de boosting suelen ser muy buenos para encontrar patrones en los datos.
Hay que tener cuidado porque también suelen overfittear (RandomForest es bagging...)
No hay un algoritmo que resuelva todos los problemas, No existe tal modelo que sea el mejor de todos.
La elección es porque es la más sencilla que resolvió el problema.
¿Podríamos haber utilizado redes neuronales? ¿O un ensemble de varios modelos? si, pero quizás íbamos a obtener el mismo resultado por mucho más esfuerzo.
LightGBM ó XGBoost suelen ser buenas opciones para problemas tabulares.
P: ¿Qué librerías usaste para esta competición en particular?
R: jupyter, sklearn, lightgbm, optuna
P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Digamos que tengo 1 año y medio en DS (no me identifico con un rol y estoy buscando identidad al respecto) y Trabajo actualmente hace 7 años en una consultora de software.
P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?
R: Hay cursos en Kaggle que suelen abarcar los problemas más comunes a resolver.
Luego ir investigando técnicas particulares que te hagan mejorar tus capacidades: algunos leerán libros, otros harán cursos.
Hay una gran explosión en este tópico, por ende, recursos en línea hay miles.
P: En términos generales cómo abordaste el problema planteado en la competición?
R: Lo primero hice un EDA ,para encontrar algunos insight ,lo primero fue construir un modelo baseline ,sobre este modelo empecé a crear más variables para quedarme con las más importantes.
P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo?
R: Data Science y competencias en kaggle
P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Bueno creo al crear más variables ya mi modelo overfiteaba ,y trate de sólo quedarme con las variables más importantes.
P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Mi feature engineering cree variables como flag,ratios ,totales ,para las variables categóricas cree algunas interacciones ,y para otras de baja cardinalidad hice un one hot encoding ,y los de alta cardinalidad que cree probabilidades condicionales ,
P: ¿Qué algoritmos de Machine Learning usaste para la competición?
R: ligthtgbm+catboost
P: ¿Cuál fue el algoritmo de Machine Learning que te dio el mejor puntaje y por qué crees que funcionó mejor que los demás?
R: catboost
P: ¿Qué librerías usaste para esta competición en particular?
R: sklearn, pandas, numpy, KFold, ligthtgbm
P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Tengo 3 años de experiencia y trabajo en Experian peru
P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición?
R: Bueno que sigan practicando ,a veces es frustrante cuando pasamos horas creando variables ,analizando y nuestro score no sube siempre no debemos de perder la calma.
Conclusiones
Como podemos leer, cada competidor ha seguido sus propios métodos, y modelos, pero existe algo en particular, y es la necesidad de probar diferentes enfoques, preguntas, respuestas y modelos. 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 de participantes de la próxima competición!