ID Petición

Contexto

Requirimientos del proyecto

Conclusiones y recomendaciones del equipo de DS

El tipo de inmueble (room_type) es la variable más predictora con mucha diferencia. Una vez fijada esta variable el resto del valor del inmueble se incrementa atendiendo a su distancia a sitios históricos y la cantida de noches minimas de reserva, el resto de variables estudiadas no afectan sustancialmente.

Para conseguir una mejor predicción del modelo sería aconsejable la inclusión de alguna variable más.

Resultados

Hemos valorado diferentes algoritmos de dos tipos principalmente: árboles de decisión y regresión lineal múltiple.En los dos casos hemos buscado diferentes optimizaciones de los modelos probando diferentes opciones.

En las regresiones lineales múltiples hemos creado 6 escenarios diferentes:

1. Regresión Lineal múltiple con todas las variables posibles y mínima eliminación de atípicos.Reducción de registros en 1%. RLM

2. Regresión Lineal Múltiple pero segregada por tipo de inmueble (Private room) RLM Private Room
3. Regresión Lineal Múltiple pero segregada por tipo de inmueble (Entire home/apt) RLM Home
4. Regresión Lineal Múltiple pero segregada por tipo de inmueble (Shared room) RLM Shared
5. Regresión Lineal Múltiple pero con mayores cortes en las variables para evitar el desbalanceo de las mismas.Se reducen los registros originales en un 30% RLM Cortada

6. Regresión Lineal Múltiple con Cross Validation y todas las variables. RLM Cross-Va
7. Regresión Lineal múltiple polinómica. RLM Poli

8. Regresión Lineal Múltiple con solo la variable room_type RLM room_type

Para los del tipo árbol, hemos optimizado los parámetros del árbol y su poda y hemos utilizado Random Forest buscando sus parámetros optimizados.

9. Árboles de Regresión con parámetros optimizados. Arboles Regresión

10. Random Forest con parámetros optimizados. RandomForest

En el siguiente gráfico se puede ver la comparación del MSE (Pérdida de Error Cuadrático Medio/Mean Square Error Loss ) de todos los modelos. Cuanto menor sea este valor menos errores tiene nuestro modelo.

Siendo el algortimo de RandomForest el que nos da mejores resultados, al tener el menor error la explicación del 59.12% de las variables.


Detalle del trabajo realizado

Se ha trabajado sobre un histórico de inmuebles alquilados durante el 2019 y se ha obtenido un modelo predictivo con un acierto del 55%, alto para el tipo de predicción y las variables utilizadas.

El modelo es estable y se observa que el tipo de inmueble es la variable más importante para su predicción como hemos comentado,para conseguir un mayor acierto se aconseja incluir más variables que puedan predecir de forma más precisa el valor del alquiler.

Analisis de los datos de origen

Nulos y ceros

Una vez analizados los datos nos hemos encontrado con una cantidad significativa de valores nulos en varios campos como Last_review y reviews_per_month por lo que hemos rellenado los valores nulos con valores medios de dichas variables para no perder cerca del 25% de los registros. Además de algunos ceros en la variable price que se han eliminado.

Vemos los Nulos originales

##                                sort.colSums.is.na.df00...
## id                                                      0
## neighbourhood_group                                     0
## neighbourhood                                           0
## room_type                                               0
## number_of_reviews                                       0
## availability_365                                        0
## longitude                                               1
## calculated_host_listings_count                          1
## minimum_nights                                          2
## price                                                   5
## latitude                                                6
## Km_empire                                               6
## reviews_per_month                                   10057
## last_review                                         10058

Calculamos las medias de las dos variable con mucho atípicos para sustituirlos y no pder der su información

## [1] "La media de reviews_per_month es: 1.37"
## [1] "La media de Last_review es: 2019-05-19"

Sustituimos por dichas medias reduciendo drásticamente los nulos

##                                colSums.is.na.df00..
## id                                                0
## neighbourhood_group                               0
## neighbourhood                                     0
## latitude                                          6
## longitude                                         1
## room_type                                         0
## price                                             5
## minimum_nights                                    2
## number_of_reviews                                 0
## last_review                                       0
## reviews_per_month                                 0
## calculated_host_listings_count                    1
## availability_365                                  0
## Km_empire                                         6

Variables sintéticas

Hemos creado una variable sintética que sería la distancia en Kilómetros al Empire State Building para poder así aprovechar los datos de latitud y longitud presentes en los datos. Además, ha salido predictiva

Análisis de niveles

Analizamos los datos por tipo de inmueble que como se aprecián están muy desbalanceados a tres tipos , el resto agruparemos en otros.

Analizamos los datos por localización y como se parecia hay 5 grupos muy domiantes, agruparemos los grupos menos significativos.

Analizamos los datos por sub-localización, hay una gran cantidad de niveles por lo que algún algoritmo como el Randomforest no se podría ejecutar, aguparemos hasta un máximo de 19.

Balanceo de la varibale target / normalización

Es muy apreciable un desbalanceo de la variable precio por lo que aplicaremos la función logaritmo para poder conseguir una distribución normalizada

Corte de los niveles en variables con más de 19

Corte de niveles de varias variables para aquellas con gran cantidad

La primera la dejamos en 19 para que Random Forest pueda funcionar.

Corte de niveles de la variable Última revisión para que Random forest pueda funcionar.

Por último quitamos niveles en Tipo de habitación que eran claros errores de los datos.

Cortes de los atípicos 1

Así mismo hemos tenido que eliminar varios atípicos que, aunque tenían explicación por negocio, la cantidad de registros era mínimo distorsionando así la predicción del modelo.

Gráficos antes de eliminar atípicos

Gráficos porteriores a la eliminación de atipicos hemos perdido un 1% de los registros orginales

Corte de los atípicos 2 , pérdida del 30% de registros

Este df cortado sólo se utilizará en un modelo RLM cortado para ver si mejoramos la predicción.

Variable predictivas

Para la elección de las variables predictivas, hemos utilizado RF y RLM. Obteniendo los mismos resultados.

##                                  %IncMSE IncNodePurity
## neighbourhood_group             30.59354      934.2186
## neighbourhood                   32.18443     1171.3430
## room_type                      379.24634     4683.9709
## minimum_nights                  65.75121      452.2679
## number_of_reviews               48.81924      413.6001
## last_review                     31.66879      282.5852
## reviews_per_month               50.08066      504.6215
## calculated_host_listings_count  50.61553      344.7998
## availability_365               108.41160      780.4316
## Km_empire                       35.94912     1229.7091

Para poder combinar las dos métricas hemos realizado un ranking eligiendo las mejores de cada una, dando un ranking total que podemos ver en la siguiente salida.

##                          variable R_IncMSE R_IncNodeP R_TOTAL
## 1                     last_review        9         10      19
## 2             neighbourhood_group       10          4      14
## 3               number_of_reviews        6          8      14
## 4  calculated_host_listings_count        4          9      13
## 5                   neighbourhood        8          3      11
## 6               reviews_per_month        5          6      11
## 7                  minimum_nights        3          7      10
## 8                       Km_empire        7          2       9
## 9                availability_365        2          5       7
## 10                      room_type        1          1       2

Evaluación de Random Forest y RLM

Valores optimos de RF

En el caso de RF para conseguir los mejores resultados hemos optimizado el algoritmo reduciendo al máximo los errores teniendo en cuenta:

ntree = Número de árboles. mtry = Número de variables a la vez en cada árbol. nodesize = mínimo de los nodos terminales.

En las gráficas vemos los valores óptimos para nuestro proyecto.

##   n_predictores   oob_mse
## 1             3 0.1922614
## 2             4 0.1926919
## 3             6 0.1936916
## 4             5 0.1941719
## 5             2 0.1942488
## 6             7 0.1950377

##   size   oob_mse
## 1   15 0.1882745
## 2   18 0.1885856
## 3   19 0.1887515
## 4   11 0.1887834
## 5   17 0.1888400
## 6    6 0.1888541

Los valores optimos son : mtry =3, nodesize = 15 , ntree= 200

Análisis de los residuos

Ahora visualizamos los residuos entre los valores reales y los predichos tanto para RF como para RLM viendo una menor dispersión en el caso de RF como era de esperar

La linea nos marca la distribución perfecta en donde Real = Predicción

Análisi de residuos y normalidad de la RLM

Vemos que tanto para valores muy bajos como para valores altos el modelo de RLM se separa de la normalidad, mientras que para el resto se comporta muy bien.

Además en los residuos se observan valores influyentes y algunos atípicos.

Correlación de las variables

Hemos hecho el estudio de correlación para ver si teníamos que eliminar alguna de las variables

NO se aprecian valores muy altos que implique correlación, room_type es el másalto que como vimos era muy predictiva.

Correlacion entre los dos métodos

## [1] "La correlación entre los metodos es de 0.95  muy alta como se esperaba"