Entrevista a los ganadores de la competencia de data science “Predicción De Precios De Apartamentos En Argentina y Colombia”

Daniel Morales
Oct 16, 2020

Entrevista a los ganadores de la competencia de data science “Predicción De Precios De Apartamentos En Argentina y Colombia”

Oct 16, 2020 14 minutes read

Aprende cómo hicieron sus modelos de machine learning y qué herramientas utilizaron con esta entrevista al Top 10 del leaderboard de la competición

Hace unos días finalizamos la competencia de data science llamada “Predicción De Precios De Apartamentos En Argentina y Colombia” en la cual se unieron 139 data scientists, 51 de ellos enviaron al menos 1 modelo de machine learning a la plataforma y recibimos y evaluamos un total de 831 modelos, o sea un promedio de 16 modelos por cada participante activo. 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. 

Dado que se trataba de una métrica de error, el puntaje mínimo y ganador se ubicó en 0.248616099466774. Solo dos personas lograron ubicarse en 0.24, miremos estos rangos:

Rangos de
  • 0.24 = 2 competidores
  • 0.25 = 7 competidores
  • 0.26 = 9 competidores

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 algunos en el TOP 10 de la tabla de clasificación final.


Tomás Ertola - Argentina - Segundo Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: El pipeline que seguí fue muy básico, EDA, Transformación de distribución y aplicación de distintos modelos.

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Cuando realice un bootcamp de DS en Agosto del 2019 el dataset de properati se usaba para entrenar lo que sería data cleaning, nunca había realizado un modelo parecido y por eso lo tomé como un desafío.

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: El dato más importante y que hace a tu modelo sobresalir es que la distribución de las tres variables cardinales están corridas para la izquierda, si vemos no siguen una distribución normal. Dándote cuenta de esto podrías revisar a qué distribución se parece más y aplicar una corrección. En mi caso las transforme a una distribución logarítmica.

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Tome solo 3 variables categóricas: País, Ciudad y Departamento a las que les aplique un one hot encoding y me olvide. El trabajo duro estuvo relacionado con la corrección de la distribución de las variables cardinales.

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Primero realice un stacking regressor con una regularización L1 y L2 (Lasso y Ridge) y luego un ensembling con Gradient Boosting, XGBoost, Catboost, LightGBM, RandomForest

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: Dentro del ensembling los que mejor perfomaron fueron los gradient boosting y a eso sumemosle que ensamblados corrigieron los defectos que tenía cada uno lo que los hizo una solución óptima. Y creo que no es casualidad que hayan funcionado tan bien, los gradient boosting vienen siendo los ganadores en varias competencias hace años, la base en la que se basan estos algoritmos en sí ya los hace destacar entre los más comunes.

P: ¿Qué librerías usaste para esta competición en particular?
R: Sklearn, scipy, numpy, catboost, xgboost, lightgbm

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Tengo 1 año aplicando data science por mi cuenta y actualmente trabajo en Data Analyst para el Gobierno de la Ciudad De Buenos Aires.

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Lo importante no es el puntaje, sino entender lo que estás haciendo. Cuando empiezas a entender más los modelos y las cosas que haces el resultado mejora pero la realidad es que es más valioso entender que el puntaje.


Pablo Neira Vergara - Chile- Tercer Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: Lo principal es entender bien el problema y pensar en qué nuevas variables se podría usar, y no me refiero solo a transformaciones para normalizar o estandarizar y hacer dummies, hablo de cosas como pensar en que la cantidad de veces que se repite una ciudad en el set de entrenamiento nos puede indicar algo de la densidad poblacional, o que incluso tal vez algunos tipos de clustering usando solo algunas variables nos puede más información que esas mismas variables por separado.

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Ninguna

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: La ciudad parecía ser una excelente variable categórica, sin embargo algunas ciudades del testeo no estaban presentes en el training, por lo que tuve que pensar en cómo compensar esa falta de información. Además algunas ciudades del entrenamiento, a pesar de pertenecer a la misma ciudad, y tener la misma cantidad de habitaciones y metros cuadrados variaba considerablemente en el precio.

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Dummies de prácticamente todas las variables que se veían sospechosamente categóricas, y posteriormente aplique Standar Scaler, además aplique un k-means junto con gridsearch para determinar qué agrupaciones podrían aportar más información a un modelo base. Entre otras cosas, por supuesto.

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Probé muchos algoritmos y ensamblajes, pero resultó que los mejores resultados los obtenía usando k-means junto con un GBR optimizado con gridsearch.

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: Pienso que hice un buen uso de la información disponible, además terminé haciendo un ensamblaje con los datos que eran exactamente iguales del testeo al training con el modelo. Si se ve como un pato, cuackea como un pato, y vuela como un pato lo más sensato es asumir que es un pato, por supuesto a veces puede ser un ganso, de ahí la necesidad de ensamblarlo.

P: ¿Qué librerías usaste para esta competición en particular?
R: Lo usual: pandas, numpy, sklearn, seaborn, matplotlib y lightgbm

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: Llevo en el área poco más de 4 años. Actualmente trabajo para el Observatorio Logístico del Ministerio de Transportes y Telecomunicaciones del Gobierno de Chile

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Pensar en el problema a resolver antes de dormir, buscar información sobre el estado de los posibles algoritmos adecuados, y de ser posible el mismísimo estado del arte del problema particular.



Cesar Gustavo Seminario Calle - Perú - Sexto Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: Me enfoque en probar de una variedad de features basados en estadísticos del target por provincia, ciudad y país y configurar mi esquema de validación con los datos de train, para comparar resultados  antes de hacer los envíos.

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Sí, he trabajado en modelos  de series de tiempo.

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: La superficie total era una variable muy importante para predecir el precio. Algunas ciudades tenían precios muy altos debido a que probablemente eran condominios, además para precios mayores 100000 la relación era casi lineal, mientras que para valores menores  la relación parecía ser exponencial.

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Aplique target encoding sobre los features de precio, cantidad de habitaciones y superficie total separado para ambos países, luego una clusterización de los departamentos usando los features construidos.

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Modelos de redes neuronales sencillas y modelos basados en árboles. Stacking de Modelos.

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: Extreme gradient boosting, por los parámetros de regularización (profundidad, learning rate, muestreo de columnas) y la técnica de boosting

P: ¿Qué librerías usaste para esta competición en particular?
R: scikit-learn, keras, pandas, seaborn, mlflow

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: 2 años de experiencia, actualmente trabajo en la compañia Voxiva.ai

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Mantener un esquema de validación ordenado y simple te permite probar muchas hipótesis y obtener resultados para no repetir tareas.


Federico Gutiérrez - Colombia - Séptimo Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: En vista de que estábamos procesando información sobre dos países diferentes, decidí que una buena estrategia sería dividir toda la información por país. Los mercados de bienes raíces en Colombia y Argentina son muy diferentes y cada uno tiene su forma particular de comportarse, debido a esto no creo que sea una buena idea crear un modelo para ambos mercados en simultáneo.

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Aunque nunca había creado modelos para hacer este tipo de pronósticos, si tenía experiencia y entendimiento general sobre el mercado de bienes raíces y la evaluación de predios. Esta experiencia la adquirí trabajando en una compañía de seguros.

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Esta competencia presentó varios retos, entre ellos la limpieza y depuración del dataset. Para hacer una buena limpieza tuve que asumir varias cosas, entre estas tuve que corregir manualmente varios precios que estaban muy lejos de los valores realistas. Para esto simplemente utilice el sentido común y los conocimientos básicos sobre el sector.

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Uno de los factores que más me ayudó fue dividir el dataset por país, esto facilitó que los modelos pudieran acercarse más a la realidad. Para el mercado de Argentina, descubrí que la presencia de un baño extra para las visitas impacta directamente en el precio final del inmueble, así que decidí calcular esta nueva variable e incluirla en mi análisis.

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Utilice diferentes algoritmos entre ellos: Regresión lineal, regresión de bosque aleatorio, regresión con Gradient boosting y regresión con XG Boosting.

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 mejor algoritmo fue el XGBoost, creo que esto se debe a que este algoritmo incluye una regularización interna lo que permite reducir el overfitting.

P: ¿Qué librerías usaste para esta competición en particular?
R: Pandas, Numpy, Seaborn, Matplotlib, Scipy, Xgboost y Scikit Learn.

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: 2 años, trabajo en The Clay Project

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Creo que para esta competencia vale la pena enfocarse en entender muy bien cómo funciona el sector de bienes raíces y que variables son críticas. Pienso que si entiendes bien el sector y el contexto del problema, podrás incluir solo las variables relevantes en tus algoritmos y así obtener mejores resultados.



Germán Goñi - Chile - Octavo Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: En mi experiencia el mercado inmobiliario tiende a ser distinto en cada país. Es importante tener una solución que no siendo genérica, tampoco genere sobreajuste.
También resulta relevante usar las transformación de features cuando se trata de variables con distribución asimétrica. 

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Sí, pero con datos de otro país.

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: Test Set contenía provincias/ciudades no observadas en Test Set: ojo con modelos "ingenuos"

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: Transformaciones de Box-Cox, Distintos tipos de Encoding para variables cualitativas

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Random Forest, 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: Pandas, Numpy, Matplotlib, Seaborn

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: 5

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Consultar expertos de Dominio, gestión inmobiliaria en este caso. Revisar literatura y tutoriales sobre Feature engineering.


Alejandro Anachuri - Argentina - Noveno Puesto


P: En términos generales cómo abordaste el problema planteado en la competición?
R: Comencé haciendo un análisis del dataset, viendo qué tipos de datos tenía el mismo, verificando si había valores nulos y luego observando por medio de gráficos si había alguna correlación entre las variables, básicamente un proceso de EDA.

P: Para esta competencia en particular, ¿tenías alguna experiencia previa en este campo? 
R: Solo experiencia en problemas similares planteados en algún libro o curso que estuve siguiendo a modo de aprendizaje.

P: ¿Qué resultados/conclusiones importantes encontraste en la exploración de los datos? ¿Con qué retos tuviste que lidiar?
R: El más importante fue haber encontrado la relación entre los precios y la superficie total y haciendo el log del precio, dicha relación se veía más claramente, esto me ayudó a mejorar el resultado de los modelos.

P: En términos generales, ¿Qué procesamiento de los datos y feature engineering hiciste para esta competición?
R: label encoder, one hot enconder, data transformation.

P: ¿Qué algoritmos de Machine Learning usaste para la competición? 
R: Random forest

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: Solo utilice Random forest que es el modelo que estaba estudiando y quería usar esta competición para tratar de entenderlo con mayor profundidad.

P: ¿Qué librerías usaste para esta competición en particular?
R: Principalmente utilice pandas, matplotlib, numpy, sklearn, seaborn

P: Cuántos años de experiencia tienes en Data Science y dónde trabajas actualmente?
R: No tengo experiencia real en data science, solo soy autodidacta desde hace un par de meses. Soy ingeniero en sistemas y me dedico al desarrollo de software en una empresa multinacional.

P: ¿Qué consejos le darías a quienes no tuvieron tan buenos puntajes en la competición? 
R: Seguir intentando y probando diferentes modelos o haciendo tuning sobre los mismos modelos, consultar con las personas del grupo y de esta forma también esta comunidad puede comenzar a crecer y nutrirse de los que más saben.



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 10 de la próxima competición!

Muchas gracias a todos los participantes y a los ganadores que nos ayudaron con la encuesta!
Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!