Predecir precios de vivienda con aprendizaje automático

Con los algoritmos de aprendizaje automático de LassoCV, RidgeCV y Regresión lineal.

Foto de Gus Ruballo en Unsplash

En este post, lo guiaré por el proceso científico de mis datos para utilizando el aprendizaje automático para predecir los precios de la vivienda. Antes de comenzar, me gustaría resumir el proceso de la ciencia de datos:

  • Defina el problema
  • Reúna los datos
  • Limpie y explore los datos
  • Modele los datos
  • Evalúe el modelo
  • Responda la problema

Defina el problema

Se me asignó la tarea de crear un modelo de aprendizaje automático para predecir el precio de una vivienda usando el conjunto de datos de viviendas Ames de Kaggle. Queriendo hacer que el problema de la ciencia de los datos sea más realista, agregué la necesidad de mejorar la precisión Zestimate de Zillow (clasificación por estrellas) para áreas como Ames con 3 estrellas (Good Zestimate). Esto se debería a un supuesto aumento en el tráfico web del usuario hacia las propiedades con una estimación de 3 estrellas Zestimates.

Recolecte los datos

El conjunto de datos contenía información de la Oficina del Asesor que se usó para calcular los valores evaluados para propiedades residenciales individuales vendidas en Ames, IA de 2006 a 2010. El conjunto de datos contenía 2051 filas y 81 columnas (características) de información. Estos datos fueron recopilados y proporcionados por Kaggle. Si no me hubieran proporcionado los datos, mi método de recopilación habría sido hacer una investigación para ver si estaba disponible públicamente o bajarla mediante la API de Zillow.

Limpiar y explorar los datos

A continuación, realicé la limpieza de mis datos. y análisis exploratorio. Para el primero, verifiqué y tomé decisiones sobre valores nulos y errores de entrada de datos. Para este último, visualicé los datos para ver y comprender mejor las relaciones y distribuciones.

A continuación se muestran dos visualizaciones de mi variable objetivo, Precio de venta. Quería entender su distribución.

la distribución del Precio de venta, el objetivo, que podemos ver, está sesgada a la derecha
la distribución del Precio de venta, el objetivo, después de tomar el registro, ahora se distribuye más normalmente [19659019] Tomé el registro del objetivo y lo introduje en los modelos más adelante. Hice esto porque el modelo intentará encontrar una mediana feliz de nuestro objetivo, pero si se deja solo, consistentemente no será una buena idea de los valores atípicos, lo que afectaría negativamente la puntuación de R cuadrado. Sobre la base de la fórmula de R cuadrado, cuanto más erróneo sea nuestro modelo, más será castigado porque los residuos (errores) en el numerador están siendo cuadrados. Así que hacer predicciones en nuestro objetivo registrado permitirá que el modelo tenga tantas suposiciones como subestimaciones o predicciones con una distribución más normal.A continuación, quería entender la relación de mis características con mi variable objetivo, así que hice un gráfico un mapa de calor de mis características con correlaciones al precio de venta de 0.50 o superior. No hubo ninguno que estuviera inversamente relacionado con el Precio de venta con correlaciones de -0.50 o menos.

Quería examinar esas relaciones más a fondo, así que graficé diagramas de dispersión de seis de las características del mapa de calor de correlación de arriba.

puedo ver overall_qual que tuvo la correlación más fuerte con el precio de venta en 0.80 muestra la relación lineal más fuerte entre los seis elegidos.

Modele los datos

En este paso, divido mis datos en conjuntos de entrenamiento y pruebas , elegí mis características para incorporar los modelos, los métodos de ingeniería de características y los modelos. Inicialmente comencé con un proceso de selección hacia adelante: seleccioné una función, ejecuté mi modelo, verificé el rendimiento y repetí los pasos. También creé manualmente algunos términos de interacción, dummied (convirtiendo una característica categórica en una matriz booleana), y asigné (calificando / ponderando características categóricas) algunas de mis características categóricas. Cada característica que elegí incluir en mi modelo tal como está o fue diseñada manualmente fue intencional. La mayor parte de mi confianza estaba en la fuerte correlación de la característica con el precio de venta y en las suposiciones intuitivas que hice sobre si una característica tendría o no un impacto en el precio de venta. Con este método obtuve excelentes resultados, pero me entusiasmé y asumí (incorrectamente) que todas mis funciones tendrían el mejor rendimiento para mi modelo si simulaba o mapeaba todas las categorías y luego aplicaba características polinómicas (en términos de interacciones en masa ) para todos después de que fueran numéricos.

Verifiqué las correlaciones de mis características recién diseñadas con mi variable objetivo, Precio de venta. A continuación se muestran los resultados.

correlaciones de las nuevas características dummied con el Precio de venta
correlaciones de las nuevas características asignadas con el Precio de venta

Como puede ver, las características que asigné (segunda imagen) Tenía correlaciones mucho más fuertes con el precio de venta que las características que yo había simulado. Aún así, mantuve mi suposición y procedí a alimentar mi modelo con todas mis características (excepto, por supuesto, el precio de venta).

Elegí tres algoritmos de aprendizaje automático que eran Regresión lineal, RidgeCV y LassoCV. Sabía que con un gran número de funciones mejoraría mi potencial de sobrealimentación, así que quise incluir los últimos modelos, ya que tienen métodos rigurosos de regularización. También asumí que las características polinomiales se harían cargo de cualquier multicolinealidad entre mis características.

Evaluar el modelo

El modelo con el que fui fue LassoCV. Logró un R-cuadrado de 94% en mis datos de entrenamiento y 86% en datos invisibles. El RMSE para mis datos de prueba fue 37,334. Esto significa dos cosas: 1) 86% de la variabilidad en los datos se explica por el modelo y 2) el modelo es overfit.

A continuación puede ver la distribución de mis predicciones (yhat) superpuesta contra la variable objetivo (y

El modelo final no fue mi mejor modelo. Desafortunadamente, sobrescribí las características de mi mejor modelo, aquel en el que fui intencional en mi selección de funciones y en mi proceso de ingeniería, ya que se asumió incorrectamente que convertir todas las funciones en numéricas y usar características polinómicas daría incluso mejores resultados. [19659012] Responda al problema

El modelo LassoCV maneja los datos invisibles bastante bien, así que lo usaría para predecir el precio de una casa.

Recomendación

Una recomendación que haría sería continuar probando / aprendiendo para mejorar el modelo por:

  • Revisando mi proceso de selección inicial hacia adelante
  • Seleccionando características altamente correlacionadas con el Precio de venta
  • Creando otras nuevas y verificando su correlación
  • Alimentando el modelo y verificando los resultados
  • Manteniendo el seguimiento de la características que mejoran el modelo y descartan (pero también rastrean) las características que no

Verifique mi código y mi presentación . Por favor comente cualquier pregunta. ¡Gracias por leer!


Uso del aprendizaje automático para predecir los precios de la vivienda se publicó originalmente en Hacia la ciencia de datos en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Dejá un comentario