Machine learning y finca raíz en Bogotá

Breve introducción a machine learning con LightGBM y validación cruzada.

Datos y código en GitHub

A manera de continuación del post anterior, me decidí a construir un modelo simple de predicción de precios de finca raíz.

El modelo debería estar en capacidad de predecir el costo de una vivienda dadas algunas características básicas tales como ubicación, tamaño, numero de habitaciones y de baños, entre otras posibles características a explorar.

Desde el punto de vista mas simplista, los algoritmos de inteligencia artificial están un poco alejados de la excesiva ficción de maquinas tomando control del mundo.

En realidad, la mayoría de los procesos de machine learning pueden resumirse en colocar la cerca apropiadamente; con esto me refiero a que los métodos de machine learning cumplen dos funciones fundamentales: Clasificación y Regresión.

Como su nombre lo sugiere, los procesos de clasificación, buscan de forma automática y sin intervención humana clasificar puntos de datos en diferentes categorías. Un algoritmo de clasificación de perros y gatos, encontrar rostros en una imagen, identificar icebergs desde del espacio, todos estos constituyen problemas de clasificación que pueden ser abordados por diferentes técnicas de inteligencia artificial ( Incluyendo, pero no limitado al deep learning).

Los problemas de regresión por otro lado buscan asignar un numero a cada punto de datos.Este es el tipo de problema que me interesa cubrir en este post. Como se relaciona por ejemplo, las caracteristicas de una casa con su precio,

Las regresiones pueden ser de muchos tipos, la forma las popular y sencilla de entender una regresión es la regresion lineal. En este tipo de escenarios la variable de interés ( y ) se supone como una combinación lineal de las caracteristicas( x ) , donde cada característica se le asigna un peso ( o mejor dicho, es trabajo del algoritmo encontrar estos pesos ) de forma que el precio de una vivienda queda definido como:

y = w1x1 + w2x2 + w3x3…. + b

xi corresponde a las características ( por ejemplo tamaño , baños etc etc ) y b es un termino independiente o bias.

Sin embargo la regresión lineal no es el único método posible a aplicar en un caso como estos. En tiempos recientes las propuestas de utilizar algoritmos como los arboles de decisión y redes neurales han tomado mucha fuerza, gracias a su poder y versatilidad.

Bien entonces para construir el modelo propongo las siguientes consideraciones:

  • Dos modelos, uno para precios de casas y otro para apartamentos.
  • Limitado numero de características. El dataset original contiene una cantidad de datos que resultan poco útiles para el desarrollo del modelo ( precio de administración, direcciones entre otros)
  • LightGBM como el método a utilizar.
  • Validación del modelo mediante cross-validation

Vale la pena aclarar los últimos dos puntos.

LightGBM

Se trata de una librería open source desarrollada por Microsoft y que ha resultado un éxito a la hora de atacar problemas de machine learning, gracias a su velocidad y manejo eficiente de memoria. Permite estudiar problemas tanto de regresión como de clasificación y se ha convertido en una de las librerías de facto en sitios como Kaggle

LightGBM implementa un método novedoso del ya afamado Gradient Boost Method. Mayor información puede ser encontrada en su pagina oficial

Cross validation o validación cruzada

Uno de los principales problemas de los modelos predictivos es overfit. Cuando se diseña cualquier modelo de machine learning, se debe tener un conjunto de datos de entrenamiento. Utilizando estos datos es que los diferentes algoritmos aprenden las relaciones entre las variables y como realizar predicciones.

El desafio de los modelos es entonces la generalizacion o como saber que las predicciones realizadas sobre datos que nunca ha visto el algoritmo, son confiables.

Una de las formas mas utilizadas de validación, es la llamada k-fold.

A grandes rasgos esta forma de validación evita entrenar el modelo con la totalidad de datos disponibles y en su lugar entrena varios modelos con diferentes fracciones de datos y genera las predicciones utilizando el promedio de esos modelos.

Modelo, código y datos

El código y los datos del modelo propuesto pueden ser encontrados en este repositorio en GitHub. El modelo propuesto es gradient boosting trees con LightGBM, con validación cruzada 5-fold.

Cualquier otro experimento que se pueda proponer con los datos en bienvenido.

--

--

Un blog de historias cortas.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store