Coder Social home page Coder Social logo

airbnb's Introduction

Análise de preço de estadia no AirBnB-Rio de Janeiro

Este repositório tem como finalidade estimar o valor de estadia no Rio de Janeiro analisando dados do AirBnB

Instalação

use python >= 3.6

pip3 install -r requirements.txt

Download e extração da base de dados utilizada

wget  http://data.insideairbnb.com/brazil/rj/rio-de-janeiro/2020-01-21/data/listings.csv.gz 
gzip -d listings.csv.gz
mv listings.csv data/
mkdir models

Como executar

python3 main.py

Definições de modelagem

Como foi a definição da sua estratégia de modelagem?

Inicialmente foi realizado uma análise exploratória no conjunto de dados, removendo aquelas que julguei não serem necessárias para a condução deste estudo. Em seguida, foram verificadas as propriedades de cada variável restante, tais como seu o tipo, descrição, quantidade de dados nulos ( 1, 2, 3 ), exemplo de itens existentes em cada variável, bem como a identificação de variáveis que possuem apenas um label.

Após esse contato inicial com a base de dados, foram utilizadas as seguintes rotinas de pré-processamento:

Para cada variável numérica, foram gerados seus respectivos gráficos de histograma e boxplot, possibilitando identificar visualmente casos aonde existem distribuição assimétrica dos dados e outliers. A variável price, por exemplo, apresenta uma assimetria à direita, ou seja, tem uma concentração de valores baixos, mas sua média é influenciada em função da cauda longa com valores mais altos. Em seu gráfico boxplot é possível visualizar a presença de outliers.

A partir da interpretação gráfica, auxiliado pela análise descritiva de cada variável feita anteriormente, foi aplicado uma remoção de outliers da base de dados, a qual consistiu em normalizar os dados de dada variável e excluir suas entradas que estivessem acima de 3 desvios padrões (-3 > z-score > 3).

A variável dependente price foi transformada em log, facilitando a conversão do modelo de regressão a ser aplicado.

Os gráficos de histograma e boxplot foram então gerados novamente, possibilitando identificar as distribuições atualizadas após o processo de remoção de outliers, bem como todas as rotinas de exploração de dados, as quais foram recomputadas para análise.

Como foi definida a função de custo utilizada?

Foi empregada a métrica de ajuste o RMSE (Root Mean Square Error), que consiste em aferir a diferença entre o valor estimado por dado modelo de regressão e o valor real. Por elevar o erro ao quadrado, esta é uma métrica sensível à outliers, o que pode ser um indicadivo para iterar a análise e filtragem dos dados.

Outro fator que favoreceu o uso desta métrica é que, por se tratar de uma avaliação universal, permite comparar o resultado de diferentes modelos empregados.

Qual foi o critério utilizado na seleção do modelo final?

Uma vez separado o conjunto de dados em treino (70%) e validação (30%), o modelo final foi aquele que alcançou o menor erro RMSE no conjunto de validação, que neste caso foi utilizando o método Gradient Boosting.

Qual foi o critério utilizado para validação do modelo?

Foram empregados no total cinco métodos distintos de regressão, sendo três abordagens lineares Ridge, Lasso e ElasticNet , a regressão não-linear SVR e o modelo Gradient Boosting.

Para todos os casos foram testados diferentes combinações de hiperparâmetros, além da avaliação cruzada, buscando o melhor ajuste possível para o conjunto de dados existente.

Por que escolheu utilizar este método?

Visto que a variável dependente price é contínua, esta tarefa teve a necessidade de utilização de uma abordagem de regressão. Neste sentido, foi decidido utilizar modelos mais simples e de baixa complexidade, tanto em sua implementação como na otimização de hiperparâmetros, possibilitando agregar resultados consistentes em pouco tempo.

Quais evidências você possui de que seu modelo é suficientemente bom?

O modelo de regressão escolhido apresentou ser mais robusto frente aos demais no benchmark desenvolvido neste estudo, sendo suficiente para dada tarefa.

airbnb's People

Contributors

luanps avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.