Uma Metodologia Orientada a Dados para Precificação de …

49
Universidade Federal do Rio Grande do Norte Centro de Tecnologia Graduação em Engenharia de Computação Trabalho de Conclusão de Curso Uma Metodologia Orientada a Dados para Precificação de Imóveis André Sampaio do Amaral Orientador: Prof. Dr. Ivanovitch Medeiros Dantas da Silva Natal, RN Novembro de 2018.

Transcript of Uma Metodologia Orientada a Dados para Precificação de …

Page 1: Uma Metodologia Orientada a Dados para Precificação de …

Universidade Federal do Rio Grande do Norte Centro de Tecnologia

Graduação em Engenharia de Computação Trabalho de Conclusão de Curso

Uma Metodologia Orientada a Dados para Precificação de Imóveis

André Sampaio do Amaral

Orientador: Prof. Dr. Ivanovitch Medeiros Dantas da Silva

Natal, RN

Novembro de 2018.

Page 2: Uma Metodologia Orientada a Dados para Precificação de …

Universidade Federal do Rio Grande do Norte Centro de Tecnologia

Graduação em Engenharia de Computação Trabalho de Conclusão de Curso

Uma Metodologia Orientada a Dados para Precificação de Imóveis

André Sampaio do Amaral

Orientador: Prof. Dr. Ivanovitch Medeiros Dantas da Silva

Trabalho de Conclusão de Curso apresentado ao Programa de Graduação em Engenharia de Computação da Universidade Federal do Rio Grande do Norte como parte dos requisitos para a obtenção do título de Engenheiro de Computação.

Natal, RN

Novembro de 2018.

Page 3: Uma Metodologia Orientada a Dados para Precificação de …

Amaral, André Sampaio do. Uma metodologia orientada a dados para precificação deimóveis / André Sampaio do Amaral. - 2018. 41 f.: il.

Monografia (graduação) - Universidade Federal do Rio Grandedo Norte, Centro de Tecnologia, Curso de Engenharia deComputação. Natal, RN, 2018. Orientador: Prof. Dr. Ivanovitch Medeiros Dantas da Silva.

1. Aprendizado de Máquina - Monografia. 2. Python -Monografia. 3. Web Scraping - Monografia. 4. Scikit-learn -Monografia. 5. Regressão - Monografia. 6. Imóveis - Monografia.I. Silva, Ivanovitch Medeiros Dantas da. II. Título.

RN/UF/BCZM CDU 004.85

Universidade Federal do Rio Grande do Norte - UFRNSistema de Bibliotecas - SISBI

Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede

Elaborado por FERNANDA DE MEDEIROS FERREIRA AQUINO - CRB-15/301

Page 4: Uma Metodologia Orientada a Dados para Precificação de …

Universidade Federal do Rio Grande do Norte Centro de Tecnologia

Graduação em Engenharia de Computação Trabalho de Conclusão de Curso

Trabalho de Conclusão de Curso apresentado à banca examinadora composta pelos seguintes membros:

Prof. Dr. Ivanovitch Medeiros Dantas da Silva

Aguinaldo Bezerra

Marianne Diniz

Page 5: Uma Metodologia Orientada a Dados para Precificação de …

Resumo

Este trabalho apresenta uma metodologia que, através do aprendizado de máquina, seja

capaz de estimar preços de imóveis em Natal-RN, assim como realizar um levantamento de

dados relativos a casas e apartamentos postos a venda na internet, em diversos sites de compra e

venda. Os dados, que serão obtidos por meio da técnica de Web Scraping, serão posteriormente

usados para o treinamento de um algoritmo de aprendizado de máquina que faz uso de regressão.

Todo o trabalho foi desenvolvido na linguagem Python, usando especificamente a biblioteca

Scikit-learn que contém diversos algoritmos de aprendizado de máquina.

Palavras-chave: Aprendizado de Máquina; Python; Dados; Web Scraping; Scikit-learn;

Regressão; Imóveis;

Page 6: Uma Metodologia Orientada a Dados para Precificação de …

Abstract

This project presents a methodology that is capable of estimating the prices of real estate

property located in Natal - RN through a machine learning technique, as well as extracting data

relative to these houses and apartments which are listed for sale on different websites destined

for the real estate market. The data will be obtained through the Web Scraping approach, for

subsequent training of a machine learning model which uses regression. All the work developed

in this project was made using Python, more specifically with the Scikit-learn library which

contains several different machine learning algorithms.

Key-Words: Machine Learning; Python; Data; Web Scraping; Scikit-learn; Regression; Real

Estate.

Page 7: Uma Metodologia Orientada a Dados para Precificação de …

Sumário Lista de Figuras 2

Lista de Tabelas 3

Lista de Abreviaturas 4

Introdução 5 1.1 Motivações 6 1.2 Objetivos 7 1.3 Organização do Trabalho 7

Fundamentação Teórica 8 2.1 Web Scraping 8

2.1.1 Hyper Text Markup Language (HTML) 8 2.1.2 Hypertext Transfer Protocol (HTTP) 9

2.2 Aprendizado de Máquina 11 2.2.1 Introdução 11 2.2.2 Aprendizado Supervisionado 12

2.2.2.1 Classificação 12 2.2.2.2 Regressão 12 2.2.2.3 Generalizacao, Overfitting e Underfitting 13 2.2.2.4 Relacionamento entre Viés e Variância 14

2.2.3 Modelos de Aprendizado de Máquina 15 2.2.3.2 - Coeficiente de Multipla Determinação 17 2.2.3.3 Considerações a respeito das diferenças de eficiência entre os tipos de modelo 17 2.2.3.4 - Árvores de decisão 17 2.2.3.5 - Random Forest Regressor 18 2.2.3.6 - Gradient Boosted Regression Trees 19

Desenvolvimento 20 3.1 Componentes 21

3.1.1 Python 21 3.1.2 BeautifulSoup 21 3.1.3 Requests 21 3.1.4 Pandas 22

3.1.4.1 Data Frame 22 3.1.5 Matplotlib e Seaborn 22 3.1.6 Scikit-learn 22

Page 8: Uma Metodologia Orientada a Dados para Precificação de …

3.1.6.1 Label Encoder 23 3.1.6.2 Repeated K-Fold 23 3.1.6.3 Feature Importance 24 3.1.6.4 Learning Curve 24 3.1.6.5 R2 score e Mean Error 25

3.2 Métodos 26 3.2.1 Extração de dados 26 3.2.2 Pré-processamento 27

Resultados 31 4.1 Resultados adicionais para Random Forest e Gradient Booster 34

Conclusões 37

Referências Bibliográficas 39

1

Page 9: Uma Metodologia Orientada a Dados para Precificação de …

Lista de Figuras

Figura 2.1 - Estrutura em árvore de um documento HTML

Figura 2.2 - Interação entre usuário e servidor

Figura 2.3 - Modelo de uma mensagem HTTP

Figura 2.4 - Overfitting, Good Fit e Underfitting

Figura 2.5 - Viés e Variância.

Figura 2.6 - Relacionamentos de viés e variância com o erro

Figura 2.7 - Exemplo de residuals de um modelo de regressão

Figura 2.8 - Exemplo de uma árvore de regressão

Figura 3.1 - Etapas da metodologia adotada para a precificação de imóveis

Figura 3.2 - Validação cruzada

Figura 3.3 - Curvas de aprendizado

Figura 3.4 - Exibição de anúncios no site Abreu Imóveis

Figura 3.5 - Fluxograma do Web Scraper projetado.

Figura 3.6 - base de dados data após pré-processamento

Figura 3.7 - Cabeçalho da tabela mean_data, de valores médios dos bairros

Figura 4.1 - Histograma da variável alvo salePrice

Figura 4.2 - Histograma da variável salePrice, para valores menores que 1 milhão

Figura 4.3 - Número de imóveis por bairro

Figura 4.4 - Importância de atributos para o modelo Random Forest Regressor

Figura 4.5 - learning_curve do modelo Random Forest Regressor

Figura 4.6 - Importância de atributos para o modelo Gradient Boosting Regressor

Figura 4.7 - learning_curve do modelo Gradient Boosting Regressor

2

Page 10: Uma Metodologia Orientada a Dados para Precificação de …

Lista de Tabelas

Tabela 3.1 - Atributos da base de dados

Tabela 4.1 - Resultados de testes com validação cruzada para todos os imóveis.

Tabela 4.2 - Resultados de testes com validação cruzada para imóveis do quartil 0.9.

Tabela 4.3 - Resultados de testes com validação cruzada para apartamentos.

Tabela 4.4 - Resultados de testes com validação cruzada para casas.

3

Page 11: Uma Metodologia Orientada a Dados para Precificação de …

Lista de Abreviaturas

HTML - Hyper Text Markup Language

HTTP - Hypertext Transfer Protocol

DNS - Domain Name System

TCP - Transmission Control Protocol

TCP/IP - Internet protocol suite

IP - Internet Protocol

IA - Inteligência Artificial

4

Page 12: Uma Metodologia Orientada a Dados para Precificação de …

Introdução

Inteligência Artificial (IA) tem sido um tópico bastante diseminado desde a última

década. Encontrada nas mais diversas tecnologias e tornou-se uma ferramenta fundamental no

desenvolvimento de softwares modernos. Muitas pessoas acreditam que suas aplicações ainda

não estão inseridas no nosso cotidiano e que fazem parte de um futuro distante. Algumas outras

acreditam que os seus resultados ainda não são satisfatórios quando comparados à capacidade da

mente humana e que levarão décadas de aprimoramento até se tornarem usuais.

Um dos seus principais objetivos é replicar a capacidade racional dos seres humanos nos

computadores, com a finalidade de otimizar a tomada de decisões. Segundo Bellman (1978), “A

inteligência artificial é a automação de atividades associadas ao pensamento humano, atividades

como tomada de decisão, resolução de problemas e aprendizado” [17].

Embora uma área de estudos nova, o campo da Inteligência Artificial herdou antigos

conceitos de filosofia, lógica e tomada de decisão. Um dos primeiros eventos significantes na sua

história foi a publicação do artigo Computing Machinery and Intelligence, por Alan Turing em

1950. Neste artigo, Turing elaborou um teste que poderia ser usado para determinar se um

computador pode ser considerado inteligente ou não, assim como definiu as habilidades que uma

máquina deveria possuir para passar no teste. Uma destas é o aprendizado de máquina, que

permitiria ao computador aprender e usar sua experiência com a finalidade de formular respostas

para problemas inéditos. Durante as décadas seguintes, experimentos que buscavam alcançar a

IA, conduzidos primariamente por universidades e grandes empresas, passariam por sucessos e

frustrações. Alguns marcos importantes incluem o robô de conversação ELIZA na década de 60 e

a vitória do supercomputador Deep Blue sobre o campeão mundial de xadrez da época [17].

Distante da realidade do século passado, o aprendizado de máquina se tornou um popular

componente de softwares modernos, sendo utilizado por empresas e instituições de tamanhos

variados: multinacionais do vale do silício, universidades de ponta e microempresas. É aplicado

na resolução de problemas variados como o reconhecimento de som e imagem, desenvolvimento

de estratégias de mercado, diagnóstico médico e carros autônomos (self-driving cars).

5

Page 13: Uma Metodologia Orientada a Dados para Precificação de …

Podendo ser também aplicado no mercado imobiliário, o aprendizado de máquina

apresenta grandes oportunidades. A empresa Zillow recebeu bastante atenção recentemente pelo

seu uso do algoritmo inteligente conhecido como Zestimate, que consegue apresentar ao usuário

uma estimativa de preço para o seu imóvel. Este modelo conta com dados a respeito de mais de

100 milhões de imóveis nos Estados Unidos, muitos destes providos por usuários. Com usos que

são benéficos tanto para compradores quanto para vendedores, existe uma tendência que

tecnologias similares a esta apareçam no Brasil em algum momento [27].

Para que isto aconteça, se faz necessária a existência de dados e informações disponíveis

em fontes abertas. As cidades de Nova Iorque e Boston, por exemplo, possuem duas bases de

dados (NYC Open Data e Boston Housing Dataset) que reúnem informações urbanas diversas e

já foram utilizadas no desenvolvimento de dezenas de aplicações inteligentes. Distante desta

realidade, a cidade do Natal não possui uma fonte de informações similar, fazendo da construção

de aplicações inteligentes para o mercado imobiliário uma tarefa complexa.

Como já mencionado, o aprendizado de máquina somente pode ser bem sucedido quando

adquire experiência e esta precisa vir com dados. Por estes motivos, este trabalho apresenta uma

maneira de adquirir dados que possam representar o cenário do mercado imobiliário da capital

potiguar. Estes serão necessários para a criação de um algoritmo inteligente capaz de usar a

experiência adquirida por meio dos dados a respeito da cidade para, finalmente, efetuar uma

previsão relativa ao valor dos imóveis.

1.1 Motivações

Embora existam diversos websites destinados a compra, venda e aluguel de imóveis no

Rio Grande do Norte, todas as informações a respeito do mercado imobiliário estão disponíveis

somente nestas páginas espalhadas pela internet. A dificuldade em obter estes dados é uma das

motivações deste trabalho, já que estes dados imobiliários agrupados em uma única base de

dados podem ser futuramente utilizados em pesquisas acadêmicas ou informacionais.

Em um cenário global de aumento da produção de dados e crescimento da popularidade

das aplicações inteligentes, é importante integrar a cidade de Natal neste novo contexto. Produzir

6

Page 14: Uma Metodologia Orientada a Dados para Precificação de …

diversos tipos de dados urbanos como os relacionados a imóveis, violência ou trânsito podem

futuramente ser uma importante ferramenta que os administradores da cidade do Natal teriam

para avaliar a eficácia de suas políticas públicas.

Além disso, as previsões feitas por um modelo de aprendizado de máquina podem ser

uma ferramenta útil tanto para compradores quanto para vendedores. Os proprietários de imóveis

poderiam utilizar uma previsão para adquirir melhor entendimento do valor de seu investimento,

evitando a possibilidade de vendê-lo por um valor abaixo do mercado. O mesmo se aplica a

aqueles que visam a compra, que poderiam se basear nesta previsão para pagar um preço justo.

Um modelo eficiente poderia beneficiar também corretores de imóveis ao automatizar parte do

seu trabalho.

1.2 Objetivos

O objetivo deste projeto é propor uma metodologia que, através de uma técnica de

aprendizado de máquina, seja capaz de prever com acurácia preços de imóveis localizados em

Natal, Rio Grande do Norte. Para alcançar o objetivo geral, também são necessários cumprir

objetivos específicos, tais como:

● Adquirir dados relativos a imóveis localizados nesta cidade;

● Padronizar estes dados extraídos da internet, de maneira que estes sejam adequados para

o treinamento de um modelo de aprendizado de máquina;

● Criar visualizações que auxiliem na identificação de características particulares do

mercado imobiliário da cidade;

● Examinar diferentes modelos de aprendizado de máquina com os dados relevantes;

● Verificar a precisão destes modelos e determinar o mais adequado.

7

Page 15: Uma Metodologia Orientada a Dados para Precificação de …

1.3 Organização do Trabalho

Este trabalho possui a seguinte estrutura: o segundo Capítulo revisa a teoria por trás dos

conteúdos relevantes para o projeto, sendo estes a mineração de dados por meio de Web Scraping

e aprendizado de máquina. O terceiro Capítulo trata do desenvolvimento, que inclui uma

descrição detalhada de todas as bibliotecas da linguagem Python que foram usadas no projeto,

assim como a implementação destes algoritmos. O quarto Capítulo é destinado aos resultados das

análises e o quinto Capítulo às conclusões.

8

Page 16: Uma Metodologia Orientada a Dados para Precificação de …

Fundamentação Teórica

O capítulo a seguir aborda os fundamentos teóricos necessários para o entendimento total

do trabalho, revisando conceitos sobre Web Scraping e aprendizado de máquina.

2.1 Web Scraping

Embora Web Scraping não seja uma terminologia nova, há alguns anos esta prática tem

sido mais comumente conhecida como screen scraping ou data mining assim como outras

terminologias similares. Em tese, Web Scraping é a prática de coletar dados de maneira

automatizada, fazendo requisições HTTP a um servidor da web, na finalidade de extrair páginas

HTML ou outros tipos de arquivos encontrados em um site [1, 6].

2.1.1 Hyper Text Markup Language (HTML)

É uma linguagem usada para representação visual de conteúdo na Web, inicialmente

proposta por Tim Berners-Lee (1989). Embora esteja em constante evolução desde sua incepção,

a gramática básica dos documentos HTML tem se mantido, fazendo com que esta linguagem seja

um dos mais importantes padrões para o trabalho na Web [2].

Um arquivo HTML é essencialmente um arquivo de texto, mas o que faz com que esta

linguagem seja poderosa é a sua estrutura em marcação, que permite definir quais partes do

documento devem ser projetadas como cabeçalho, links, tabelas e afins. Estas definições em

marcação acontecem por meio de sequências predefinidas de caracteres, conhecidos como tags,

que envolvem uma determinada parte do texto. A marcação diz ao navegador como o documento

está estruturado [2].

A estrutura da HTML pode ser interpretada como uma árvore. Como ilustrado na Figura

2.1, seus elementos internos seguem uma rígida regra de aninhamento: cada tag tem seu início e

fim. A infração desta regra implica em uma má formação do documento [2].

9

Page 17: Uma Metodologia Orientada a Dados para Precificação de …

Figura 2.1 - Estrutura em árvore de um documento HTML.

Fonte: Dan Hitchcock Vaughan. Disponível em: <http://gottheknack.com/>. Acessado em 13 de novembro de 2018.

O acesso visual a um documento HTML já possibilita o conhecimento de sua estrutura, o

que implica que é possível então realizar o parsing do mesmo, percorrendo sua árvore e

armazenado suas informações de maneira estruturada, na finalidade de formar uma base de dados

[6].

2.1.2 Hypertext Transfer Protocol (HTTP)

Para retirar dados da internet, é necessário habilitar o software para a comunicação com

servidores e serviços web. HTTP é o protocolo mais comum para a comunicação entre um

cliente Web (navegadores, por exemplo) e servidores. Virtualmente, qualquer página HTML,

imagem ou vídeo que é visto por meio de um navegador é entregue por este protocolo.

O protocolo HTTP pode requisitar praticamente qualquer tipo de recurso disponível em

um servidor e pode também ser usado para o envio de dados para o servidor [2]. A Figura 2.2

ilustra como ocorre a interação entre usuário e servidor.

10

Page 18: Uma Metodologia Orientada a Dados para Precificação de …

Figura 2.2 - Interação entre usuário e servidor.

Fonte: MUNZERT (2015)

Quando um website é acessado, o navegador se torna cliente HTTP. O servidor pergunta

ao servidor DNS (Domain Name System) qual endereço IP está associado com o domínio URL

alvo. Após receber esta resposta, o navegador estabelece uma conexão com o servidor HTTP

requisitado via TCP/IP. A partir de então cliente e servidor podem trocar informações [2].

No caso do web scraper, estas informações serão requisições HTTP. Como ilustrado na

Figura 2.3, tais mensagens possuem uma estrutura definida tem três partes: linha inicial,

cabeçalho e corpo.

Figura 2.3 - Modelo de uma mensagem HTTP

Fonte: MUNZERT (2015)

No caso de uma requisição a linha inicial se refere ao método utilizado, caminho para o

recurso e a última versão que pode ser entendida pelo cliente. O cabeçalho contém metadados e o

corpo contém os dados carregados pela mensagem.

11

Page 19: Uma Metodologia Orientada a Dados para Precificação de …

Existem diversos métodos de requisições HTTP, mas para um Web Scraper os mais

relevantes são GET e POST. Enquanto GET solicita documentos ao servidor, POST pode ser

utilizado para enviar arquivos [2].

2.2 Aprendizado de Máquina

2.2.1 Introdução

O aprendizado de máquina trata da obtenção de conhecimento a partir de dados. Segundo

Muller (2016, p. 9) “é um campo de pesquisa na interseção da estatística, inteligência artificial e

ciência da computação, também conhecido como analítica preditiva ou aprendizado estatístico”.

Nos últimos anos, a aplicação comercial de métodos de aprendizado de máquina tem se tornado

comum por grandes empresas como Netflix, Amazon, Google e Facebook. As aplicações destes

métodos abrangem problemas diversos, que variam da recomendação de filmes até a análise de

sequências de DNA [3].

Tradicionalmente, aplicações consideradas como inteligentes faziam extensivo uso de

lógica condicional para guiar o processo de tomada de decisão, exigindo que o programador

explicitamente preparasse o algoritmo para lidar com qualquer tipo de entrada inserida pelo

usuário. Embora tal abordagem possa solucionar diversos casos, ela falha ao lidar com dados

mais complexos como, por exemplo, o de problemas que envolvem reconhecimento facial [3].

De maneira geral, os algoritmos de aprendizado de máquina tem a proposta de formular

respostas generalizadas sem serem diretamente programados, com a finalidade de automatizar o

processo de tomada de decisão [3,11]. A resolução de um problema por meio de aprendizado de

máquina pode ser formulada de diferentes maneiras: o problema pode ser interpretado como

aprendizado supervisionado, não-supervisionado ou por reforço.

O aprendizado não-supervisionado se propõe a resolver problemas desprovidos de uma

resposta conhecida, nos quais só estão disponíveis dados de entrada. O objetivo é de encontrar

padrões nos dados a fim de agrupá-los, por meio de técnicas como a Clusterização. Já o

12

Page 20: Uma Metodologia Orientada a Dados para Precificação de …

aprendizado por reforço é melhor aplicado quando a resposta é condicionada a uma série de

ações que devem obedecer a regras impostas pelo ambiente [4].

Como a problemática tema deste trabalho é a precificação de imóveis, nenhum dos casos

do parágrafo anterior são adequados para esta resolução em particular. Por este motivo,

abordaremos apenas o aprendizado supervisionado.

2.2.2 Aprendizado Supervisionado

Problemas de aprendizado supervisionado são ambientados em situações que envolvem

exemplos conhecidos. O algoritmo tem a tarefa de aprender o mapeamento de uma entrada X

para uma saída Y que tem seus valores, considerados as “respostas”, determinados por um

supervisor [4, 22].

Os tais exemplos conhecidos podem ser interpretados como um vetor de valores de

atributos, contendo um atributo alvo. O aprendizado por supervisão faz uso deste grupo de

valores rotulados, chamados valores de treinamento, para realizar o aprendizado. Tal algoritmo

precisa em seguida receber um novo conjunto de dados que não possuam esta resposta, chamado

conjunto de teste. Como descrito no primeiro parágrafo, seu objetivo é de estimar corretamente o

rótulo ou valor do atributo alvo [22, 14].

Um atributo, podendo também ser chamado de variável ou feature, descreve alguma

característica ou aspecto de um exemplo. Os tipo mais comuns de atributos encontrados são

categóricos e contínuos, sendo este último quando a variável ∈ R. Quando o atributo alvo, ou

target feature do algoritmo é nominal, tem-se um problema de classificação. No caso de valores

contínuos o problema é de regressão [14].

2.2.2.1 Classificação

O objetivo de uma tarefa de classificação é prever rótulos associados a um determinado

conjunto de atributos. Um problema conhecido deste tipo de tarefa é o de classificação de spam.

Recebendo como entrada um certo número de emails, o algoritmo tem a missão de classificar

estes emails em spam ou não-spam. Como mencionado anteriormente, também são providos as

13

Page 21: Uma Metodologia Orientada a Dados para Precificação de …

respostas conhecidas para cada email. Após ser treinado com estas informações, o algoritmo irá

então receber um email nunca visto antes para emitir uma previsão, indicando se este novo email

é spam ou não [11].

2.2.2.2 Regressão

Em um problema de regressão, o que desejamos obter é uma função numérica

desconhecida que mapeie os atributos do conjunto a uma variável alvo que pertença ao conjunto

dos números reais [4]. Esta tarefa é então a mais adequada para objetivo deste trabalho, que

envolve a predição de um atributo alvo que descreve o valor de venda do imóvel.

2.2.2.3 Generalizacao, Overfitting e Underfitting

Os modelos construídos por meio de aprendizado supervisionado tem como seu objetivo

final a capacidade de generalização, isto é, realizar predições a partir de dados nunca antes vistos

por este.

No entanto, dependendo da situação do conjunto de dados de treinamento, é possível que

o modelo perca a sua capacidade de generalizar. Como ilustrado na Figura 2.4, quando um

modelo se ajusta perfeitamente aos dados de treinamento, é possível que esteja seguindo uma

curva muito sinuosa com alta variância. O alto número de hipóteses representado por este

modelo pode ser causado por uma proporção ruim entre a quantidade de dados de treinamento e

variáveis, que falhem ao representar uma situação encontrada após o treinamento. Este fenômeno

é chamado de overfitting e resulta em menor precisão do modelo. A mesma situação pode

acontecer para o caso da curva pouco se ajustar ao conjunto de dados, causando underfitting,

podendo ser chamado de high bias [3, 4].

14

Page 22: Uma Metodologia Orientada a Dados para Precificação de …

Figura 2.4 - Overfitting, Good Fit e Underfitting.

Fonte: Grey Atom. Disponível em: <https://medium.com/greyatom/>. Acessado em 21 de novembro de 2018.

2.2.2.4 Relacionamento entre Viés e Variância

Viés, também conhecido como bias, é definido como a diferença entre a predição média

do modelo e o valor alvo correto, já a variância trata das diferenças na predição para um

determinado dado, como pode ser visto na Figura 2.5. Nesse contexto, uma alta variância indica

falta de capacidade de generalização do modelo, enquanto que modelos com alto viés tem uma

tendência à simplificação, levando a um aumento de erro.

Figura 2.5 - Viés e Variância.

Fonte: Scott Fortmann-Roe. Disponível em: <http://scott.fortmann-roe.com>. Acessado em 22 de novembro de

2018.

15

Page 23: Uma Metodologia Orientada a Dados para Precificação de …

Estes dois elementos podem ser relacionados matematicamente pela fórmula do erro

abaixo, na qual x é a variável independente e 𝑓’(x) é o modelo. O termo σ é o erro irredutível, ou

ruído, que não pode ser eliminado por nenhum modelo.

(2.1)

(2.2)

Como ilustrado na Figura 2.6, um modelo com o mínimo de erro deve levar em

consideração o equilíbrio entre o viés e a variância. Idealmente ambos deveriam ser reduzidos a

0, mas os casos encontrados no mundo real são finitos e os modelos não são perfeitos [15].

Figura 2.6 - Relacionamentos do viés e variância com o erro.

Fonte: Scott Fortmann-Roe. Disponível em: <http://scott.fortmann-roe.com>. Acessado em 22 de novembro de

2018.

2.2.3 Modelos de Aprendizado de Máquina

Neste trabalho, foram abordados três algoritmos de aprendizado de máquina, sendo um

destes linear (Regressão Linear) e dois não lineares (Random Forest e Gradient Booster). O

linear foi escolhido pela sua simplicidade, enquanto que os não-lineares pela sua eficiência em

16

Page 24: Uma Metodologia Orientada a Dados para Precificação de …

obter menores erros. Com estes é possível fazer uma comparação entre algoritmos lineares e

não-lineares no que diz respeito à acurácia.

2.2.3.1 - Regressão Linear

Conhecido também por Ordinary Least Squares (OLS), regressão linear é o mais

elementar dos métodos lineares de regressão. O relacionamento entre uma variável de resposta e

uma variável independente pode ser linear, representado pela equação matemática:

(2.3)

Na qual ∝ é o valor de Y quando X é igual a zero e β é o coeficiente de regressão que descreve a

mudança em Y associada a variação em X.

A eficiência deste modelo pode ser medida pela diferença de resultado entre os valores de

treinamento e os valores de predição da equação, conhecido pelos termos desvio, deviance ou

residual ilustrados pela Figura 2.7. A soma de todos os valores de desvio ao quadrado tem a

denominação de RSS (Residual Sum of Squares), sendo um bom padrão de medição para a

precisão do modelo [16].

Figura 2.7 - Exemplo de residuals de um modelo de regressão.

Fonte: HUTCHESON, G.D.; 2011.

17

Page 25: Uma Metodologia Orientada a Dados para Precificação de …

2.2.3.2 - Coeficiente de Multipla Determinação

Uma métrica importante para a avaliação de um modelo é o coeficiente de múltipla

determinação, ou R2, uma ferramenta estatística que aponta a porcentagem de variação em um

determinado atributo alvo que pode ser explicada pelo modelo. Pode ser definido como:

(2.4)

Especificamente este coeficiente expressa a quantidade de variação no alvo que pode ser

descrita pela variação nos atributos do conjunto de dados. No entanto, a análise isolada deste

coeficiente não pode determinar se um modelo é válido ou não, sendo possível que um modelo

ruim possa obter uma alta pontuação de R2. Sua utilidade é a de comparar dois modelos válidos

[16].

2.2.3.3 Considerações a respeito das diferenças de eficiência entre os tipos de modelo

Segundo Kok (2017), para o problema da precificação imobiliária, modelos baseados em

regressão linear simples tem uma desvantagem quando comparados aos modelos baseados em

árvores de decisão, simplesmente porque estes fazem uso de uma fórmula global que pode falhar

em descrever um relacionamento entre as variáveis não-lineares e o valor de previsão. No caso

do artigo em questão, o uso de modelos baseados em árvores mostrou resultados superiores ao

realizar precificação de imóveis [19].

Pela similaridade entre a situação descrita pelo artigo e a proposta por este trabalho, foi

fundamental explorar os modelos baseados em árvores de decisão.

18

Page 26: Uma Metodologia Orientada a Dados para Precificação de …

2.2.3.4 - Árvores de decisão

Árvores de decisão são estruturas de dados hierárquicas, definidas como Classification

and Regression Trees - CART por Breiman [5]. Como o próprio nome sugere, podem ser usadas

tanto para classificação como regressão. Já que a previsão de valores de imóveis se trata de um

problema de regressão, este trabalho só abordará as árvores de regressão.

Esta estrutura utiliza uma hierarquia de lógica condicional “if-else” para diferentes

perguntas, resultando em uma decisão. Este modelo tem o objetivo de realizar splitting, isto é,

dividir o conjunto de dados em regiões locais, por meio de testes com valores dos atributos. O

processo de split consiste em realizar testes em cada um dos nós da árvore, com resultados

discretos (sim ou não) em seus ramos. Este processo começa na raiz da árvore e é repetido de

maneira recursiva até alcançar uma folha. Cada uma dessas folhas define uma região local do

espaço de entradas que possuem os mesmos rótulos, no caso de árvores de classificação, ou

resultados numéricos próximos para árvores de regressão. A Figura 2.8 ilustra um exemplo de

uma árvore de regressão [4].

Figura 2.8 - Exemplo de uma árvore de regressão.

Fonte: ALPAYDIN, E.; 2014.

19

Page 27: Uma Metodologia Orientada a Dados para Precificação de …

2.2.3.5 - Random Forest Regressor

O modelo Random Forest é considerado um ensemble, ou seja, uma combinação de

árvores de decisão que podem ter melhor desempenho. Quando comparadas às árvores de

decisão tradicionais, as Ensemble tem a vantagem de não serem tão propensas a overfitting.

Outros modelos se encaixam nesta categoria, mas o RandomForest, assim como o

Gradient Boosted Decision Tree tem a sua eficácia comprovada em casos de classificação e

regressão [3].

O Random Forest se diferencia da árvore de decisão tradicional no que tange ao split. O

split é definido por uma seleção randômica dos atributos, em contraste com o split de uma árvore

de decisão tradicional, que usa todos os atributos [7].

2.2.3.6 - Gradient Boosted Regression Trees Gradient Boosted Regression Trees, ou BRT, é um modelo que faz uso de árvores de

regressão e boosting, um método que combina outros modelos em troca de uma melhora na

eficiência preditiva. Este modelo computa uma sequência de árvores simplificadas, no qual uma

sucessiva árvore é construída a partir de resultados de predição obtidos por uma árvore anterior

[8].

20

Page 28: Uma Metodologia Orientada a Dados para Precificação de …

Desenvolvimento

A metodologia aplicada neste trabalho, demonstrada pela Figura 3.1, consiste em quatro

etapas: coleta de dados, pré-processamento, processamento e análise. A primeira etapa consiste

em adquirir dados de imóveis da cidade de Natal, através de uma técnica de Web Scraping; nesta

fase foi projetado um código que efetua uma leitura de uma página da Web e armazena todas as

informações relevantes encontradas em um anúncio de venda virtual.

A etapa de pré-processamento precede a execução dos algoritmos de aprendizado de

máquina, consistindo no tratamento de valores nulos, seleção de variáveis relevantes e a

preparação necessária para processar tais dados. A fase de processamento seguinte separou o

conjunto em dados de treinamento e teste, que foram utilizados para gerar um modelo de

aprendizado de máquina.

A última fase consiste na análise dos modelos resultantes, com a finalidade de

compreender melhor o comportamento dos dados para minimizar o erro de suas previsões. Para

isto, foi necessário retornar às etapas de pré-processamento e processamento e fazer ajustes

adicionais.

Figura 3.1 - Etapas da metodologia adotada para a precificação de imóveis.

Fonte: Autor, 2018.

21

Page 29: Uma Metodologia Orientada a Dados para Precificação de …

3.1 Componentes

O projeto foi feito exclusivamente na linguagem Python, usando diversas bibliotecas para

concluir o objetivo final. No caso da extração de dados da internet, foram utilizadas as

bibliotecas BeautifulSoup e Requests. Para processar e padronizar os dados foi usada Pandas; A

representação visual dos dados foi feita com Matplotlib e, por final, Scikit-Learn foi usada para a

criação de modelos de predição, treinamento e avaliação.

3.1.1 Python

Python é uma linguagem interpretada, multi-paradigma e de alto nível [12]. A linguagem

foi escolhida para este trabalho pela sua flexibilidade e constante integração com a ciência de

dados, possuindo um grande número de bibliotecas que continuam a crescer. Também é capaz de

executar os códigos de Web Scraping exigidos, usando as bibliotecas BeautifulSoup e Requests.

Todos os códigos relacionados ao pré-processamento, análise e modelagem dos dados

foram feitos em ambiente Jupyter Notebook, uma aplicação open-source que permite separar a

execução de códigos Python em partes, além de possuir a capacidade de renderizar gráficos [18].

3.1.2 BeautifulSoup

Beautiful Soup é uma biblioteca Python concebida para a extração de dados de arquivos

HTML e XML. Ela possui funções e métodos específicos para navegação e realização de buscas

em um documento aninhado, como é o caso de uma página da Web [13].

A Beautiful Soup foi empregada neste trabalho para realizar o armazenamento de

informações relativas a imóveis em sítios da internet que não possuíam uma ferramenta

formalmente implementada para a obtenção de dados, como por exemplo uma Application

Programming Interface (API).

22

Page 30: Uma Metodologia Orientada a Dados para Precificação de …

3.1.3 Requests

Requests é uma biblioteca que facilita a tarefa de enviar requisições HTTP, reduzindo o

trabalho manual ao mínimo. Suas funções permitem codificar requisições automatizadas de

páginas inteiras da Web, utilizando uma única linha de código [25].

3.1.4 Pandas

Pandas é uma biblioteca open-source da linguagem Python, criada para facilitar o uso de

estruturas de dados e análise de dados. O seu objeto Data Frame facilita a tarefa de implementar

modelos estatísticos, combinar ou manipular grupos de dados, tratar dados nulos e relacionar

diferentes tabelas. Foi concebida para a integração com diversas extensões de arquivo como .xlsx

e .csv [23]. Foi usada neste trabalho para realizar transformações e manipulações na base de

dados, por meio do objeto Data Frame.

3.1.4.1 Data Frame

Data Frame é o principal objeto da biblioteca Pandas. O seu conceito vem dos dados

“tabulares” amplamente difundidos pelo MS Excel: uma estrutura de dados composta por linhas,

que descrevem uma devida informação, assim como colunas que determinam certas

características destes dados. O Data Frame permite a realização de operações diversas, como a

seleção de colunas e linhas, permitindo a rápida manipulação de largas quantias de dados [21].

3.1.5 Matplotlib e Seaborn

Seaborn e Matplotlib são bibliotecas destinadas a criação de gráficos em ambientes

Python. Ambas provêm imagens de qualidade, possuindo integração com Jupyter notebooks e

também aplicações web [10]. Estas ferramentas foram responsáveis pela plotagem de todos os

gráficos de barras, histogramas e visualizações utilizadas para realizar as análises presentes neste

trabalho.

23

Page 31: Uma Metodologia Orientada a Dados para Precificação de …

3.1.6 Scikit-learn

Scikit-learn é um módulo Python que contém várias implementações de algoritmos

supervisionados como Random Forest, Linear Regression e Gradient Boosting Regressor. Ele

busca facilitar o acesso ao aprendizado de máquina utilizando uma sintaxe simplificada, podendo

ser usado tanto para fins acadêmicos quanto para uso comercial [24].

Além de prover os algoritmos usados neste trabalho, esta biblioteca também possui

importantes componentes para o aprendizado de máquina, no que diz respeito ao

pré-processamento e análise.

3.1.6.1 Label Encoder

O componente Label Encoder transforma variáveis categóricas em numéricas. Codificar

os atributos do conjunto de dados utilizado neste trabalho foi crucial, pois algoritmos de

regressão só conseguem fazer uso de dados que contenham valores numéricos [3].

No entanto, o label encoder cria um cenário de ordinalidade nas variáveis

multicategóricas que pode resultar em erros de interpretação pelos modelos lineares se não forem

tratados adequadamente.

No exemplo do conjunto de dados deste trabalho, existem diversos atributos que descrevem um

imóvel. O atributo size, por exemplo, é um valor numérico que representa o tamanho do imóvel

em metros quadrados. No entanto, um outro atributo chamado hasPool contém a informação que

determina se o imóvel possui piscina. No caso desta coluna, o uso de Label Encoder transformou

todas as entradas contendo a string ‘Yes’ no valor ‘1’ e as entradas de ‘No’ em ‘0’.

3.1.6.2 Repeated K-Fold

Repeated K-Fold é o componente do Scikit-learn que implementa Validação Cruzada (ou

Cross Validation). Esta técnica separa o conjunto de dados em dois (treinamento e validação) ao

mesmo tempo que reduz a perda de dados usados na validação.

24

Page 32: Uma Metodologia Orientada a Dados para Precificação de …

Para obter os melhores resultados de treinamento é ideal que estejam disponíveis o

máximo de dados de treinamento possíveis, assim como dados de validação. Como conjuntos de

dados são finitos, é possível perceber a existência de um trade-off : cada dado retirado do

conjunto de treinamento é um dado a menos para o conjunto de validação e vice-versa.

Ilustrado pela Figura 3.2, o Cross Validation consiste na separação do conjunto em K

subconjuntos, para em sequência realizar K iterações de treinamento e validação, nas quais são

selecionados um destes subconjuntos como o conjunto de validação. Ao final do processo é

retirada a média dos resultados obtidos por K experimentos [9].

Figura 3.2 - Validação cruzada.

Fonte: Karl Rosaen. Disponível em: <http://karlrosaen.com/ml/learning-log/2016-06-20/>. Acessado em 19 de

novembro de 2018.

3.1.6.3 Feature Importance

Feature Importance é um método do módulo sklearn.ensemble que pode identificar quais

variáveis tem maior influência no modelo. Instâncias do sklearn possuem um atributo

feature_importances_ que ao ser usado durante a construção do modelo de árvores ensemble,

armazena valores relativos ao peso que uma determinada variável teve no cálculo de um split

[20].

25

Page 33: Uma Metodologia Orientada a Dados para Precificação de …

3.1.6.4 Learning Curve

Na finalidade de construir modelos mais precisos é importante considerar e equilibrar os

fatores de viés e variância. A função learning_curve do módulo sklearn.model_selection tem

como utilidade a criação de curvas de aprendizado que podem identificar estes fatores.

Em prática, esta função realiza testes sucessivos de validação nos elementos do conjunto

de treinamento, partindo da primeira instância dos dados. A seguir adiciona-se uma segunda

instância no teste e o processo se repete até o número máximo de dados disponíveis [26].

Naturalmente o primeiro teste terá um erro de treinamento igual a 0 enquanto que o erro

de validação será enorme. Como visto na Figura 3.3, sucessivos testes levam à criação de duas

curvas de erro, uma para treinamento e outra para validação.

Figura 3.3 - Curvas de aprendizado.

Fonte: Dataquest. Disponível em: <https://www.dataquest.io/blog>. Acessado em 22 de novembro de 2018.

Com estes gráficos é possível extrair diferentes informações. Podemos ter, por exemplo,

um caso que envolve uma convergência entre as duas curvas; isso indica que o aumento do

número de dados de treinamento não ajude a tornar o modelo mais preciso. De maneira análoga,

uma tendência de convergência que não tenha resultado em um encontro entre as curvas indica

que o modelo poderia aprender com um número maior de dados [26].

26

Page 34: Uma Metodologia Orientada a Dados para Precificação de …

3.1.6.5 R2 score e Mean Error

As funções r2_score e mean_error do módulo sklearn.metrics implementam o cálculo do

coeficiente de determinação e o erro médio, respectivamente. Ambas são indispensáveis para a

metodologia de avaliação de modelo implementada neste trabalho.

3.2 Métodos

3.2.1 Extração de dados

As páginas da web exploradas por este trabalho tipicamente exibem seus imóveis em

anúncios estruturados como os ilustrados pela Figura 3.4. Já que as informações exibidas neste

endereço são resumidas e não expõem todos os dados disponíveis, foi necessário adquirir uma

lista com todos os endereços URL dos imóveis presentes no site, para que uma avaliação mais

detalhada fosse realizada posteriormente.

Figura 3.4 - Exibição de anúncios no site Abreu Imóveis.

Fonte: Abreu Imóveis. Disponível em: <https://abreuimoveis.com.br>. Acessado em 10 de dezembro de 2018.

27

Page 35: Uma Metodologia Orientada a Dados para Precificação de …

O fluxograma exibido na Figura 3.5 descreve a rotina a ser seguida pelo código que

obtém as informações relevantes. Após realizar o parsing da página que lista todos os imóveis, a

função find é utilizada para buscar todas as tags href, que contém os endereços URL dos

anúncios completos, armazenando estes em uma lista. Assumindo que todos os anúncios deste

sítio da internet tinham a mesma estrutura HTML, foi construído um laço de repetição que busca

tags contendo características do imóvel e armazena os valores encontrados nestas em um arquivo

do tipo comma-separated values (CSV).

O processo foi repetido para cada um dos imóveis na lista, tendo como resultado um

arquivo CSV relativo ao sítio desejado. Para repetir o mesmo processo em outros websites, foi

necessário adaptar o código para uma tratar uma estrutura HTML diferente, embora que a mesma

lógica descrita no parágrafo acima tenha sido usada.

Figura 3.5 - Fluxograma do Web Scraper projetado.

Fonte: Autor, 2018.

3.2.2 Pré-processamento

A partir do processo de Web Scraping, foram obtidas informações a respeito de um total

de 6163 imóveis, sendo destes 3994 apartamentos e 2169 casas, em 5 diferentes sítios. Foi criado

um critério para a busca de atributos baseado na quantidade de informação mostrada pelo sítio

mais completo, totalizando 19 variáveis relevantes, representadas por meio de colunas. Estes

atributos estão descritos na Tabela 3.1:

28

Page 36: Uma Metodologia Orientada a Dados para Precificação de …

Tabela 3.1 - Atributos da base de dados

Atributo Descrição Tipo

reType Tipo do imóvel Categórico

size Tamanho (m2) Numérico

numBedrooms Número de quartos Numérico

numBathrooms Número de banheiros Numérico

numParking Número de vagas de garagem Numérico

condoFee Taxa de condomínio Numérico

nextToMall Próximo a shopping Categórico

nextToTrans Próximo a transporte público Categórico

nextToSchool Próximo a escolas Categórico

nextToAve Próximo a avenida Categórico

nextToHosp Próximo a hospitais Categórico

hasPool Possui piscina Categórico

hasBBQ Possui churrasqueira Categórico

hasBalcony Possui varanda Categórico

safeSystem Possui sistema de segurança Categórico

safetyStaff Possui vigia Categórico

SprtsLeisure Possui quadra ou playground Categórico

district Bairro Categórico

salePrice Preço de venda Numérico

Todos os dados foram obtidos da internet em formato de texto, o que dificulta o seu uso

em um algoritmo de aprendizado de máquina. Além disto, estes algoritmos não podem funcionar

corretamente com dados nulos ou variáveis categóricas, o que indica a necessidade de um

pré-processamento.

29

Page 37: Uma Metodologia Orientada a Dados para Precificação de …

Após converter colunas de contexto numérico para o tipo float64 ou int32, foi realizado o

tratamento dos dados categóricos. Foi verificada uma ausência de dados para mais de 80% das

entradas nas colunas nextToMall, nextToTrans, nextToSchool, nextToAve e nextToHosp, o que

resultou na exclusão destes atributos da base de dados.

Foi utilizado o critério de que o imóvel precisa de um tipo, valor de venda e bairro.

Qualquer imóvel com ausência de dados em uma destas colunas seria excluído. Nos casos de

ausência para as demais colunas categóricas (hasPool, hasBBQ, hasBalcony, safeSystem,

safetyStaff, SprtsLeisure), foi pressuposto que estes atributos não estão presentes no imóvel, pois

não foram anunciados pelo vendedor. Ao final, foi atribuído o valor zero para a taxa de

condomínio de casas.

Possuindo valores que variam entre ‘Sim’ e ‘Não’, dados relativos a atributos categóricos

foram transformados em valores binários, usando o Label Encoder. O único atributo

multi-categórico (district) foi codificado adquirindo valores que variam de 1 a 35. O uso de

Label Encoder na coluna district seria problemático, pois estabeleceria uma ordinalidade

indesejada (o bairro ‘1’ poderia ser considerado inferior ao bairro ‘2’), mas a coluna district não

é de fato enviada ao modelo.

A limpeza dos dados inválidos ou nulos resultou em uma diminuição do tamanho desta

base de dados, que ao final deste processo passou a ter 14 colunas e 3741 linhas. A Figura 3.6

ilustra o resultado final do encoding, exibindo o cabeçalho do conjunto de dados.

Figura 3.6 - base de dados data após pré-processamento.

Fonte: Autor, 2018

30

Page 38: Uma Metodologia Orientada a Dados para Precificação de …

Na tentativa de adquirir mais atributos que pudessem descrever os bairros de maneira

mais detalhada foram exploradas as propriedades da coluna district, que atribui um bairro ao

imóvel. Esta abordagem buscou a criação de 13 novas colunas contendo valores médios para um

determinado bairro.

Figura 3.7 - Cabeçalho da tabela mean_data, de valores médios dos bairros.

Fonte: Autor, 2018

Como visto na Figura 3.7, foi criada uma nova tabela mean_data. Esta foi relacionada

com a base de dados data por meio da função join, usando a coluna district como chave. O

resultado é um novo conjunto de dados joined_data com 27 colunas e 3741 linhas, que apresenta

uma quantidade maior de informações.

31

Page 39: Uma Metodologia Orientada a Dados para Precificação de …

Resultados

Com a base de dados apta para uso em um modelo de aprendizado de máquina,

finalmente é possível realizar o treinamento e validação usando os modelos escolhidos. A Tabela

4.1 mostra os resultados de precificação da variável salePrice obtidos pelos três modelos usando

validação cruzada, com r2_score e erro médio quadrático (RMSE) como resultados de avaliação.

Tabela 4.1: Resultados de testes com validação cruzada para todos os imóveis. R2 RMSE

Random Forest 0.833102353099 203675.272228

Gradient Booster 0.790804677166 225742.721391

Linear Regression 0.440584969666 385044.322584

O modelo com maior eficácia foi o Random Forest, possuindo um resultado de erro

médio quadrático de R$ 203.675,00. Levando em conta que o resultado obtido ainda não foi

satisfatório, foi necessário realizar outro experimento.

Usando o histograma da Figura 4.1 foi verificada a presença de valores que se

diferenciam drasticamente dos demais dados. Estes podem impactar negativamente na precisão

do modelo, fazendo com que seja necessário realizar um novo experimento excluindo-os.

No âmbito de que um modelo de aprendizado supervisionado busca realizar a

generalização para a maior parte dos dados, foi realizado um segundo experimento

desconsiderando todos os dados considerados outliers acima do quartil 0.9, sendo estes todos os

imóveis com valores de venda acima de R$ 900.000,00. A Figura 4.2 ilustra a distribuição da

coluna salePrice neste cenário.

32

Page 40: Uma Metodologia Orientada a Dados para Precificação de …

Figura 4.1 - Histograma da variável alvo salePrice.

Fonte: Autor, 2018.

Figura 4.2 - Histograma da variável salePrice, para valores menores que 1 milhão.

Fonte: Autor, 2018.

Com estas considerações adicionais, foram obtidos os resultados presentes na Tabela 4.2,

usando os mesmos critérios de avaliação anteriores. Observa-se que embora tenha sido obtido

um RMSE consideravelmente menor nos três modelos, os resultados de R2 permaneceram os

mesmos.

33

Page 41: Uma Metodologia Orientada a Dados para Precificação de …

Tabela 4.2: Resultados de testes com validação cruzada para imóveis do quartil 0.9. R2 RMSE

Random Forest 0.813147937786 81693.4748049

Gradient Booster 0.764441016354 91722.8072486

Linear Regression 0.562578969908 124966.191419

Ainda foi constatado que o conjunto de dados poderia ser separado em dois conjuntos

distintos, um destes contendo somente casas e outro apenas com apartamentos, para a construção

de dois modelos separados. No caso do modelo de predição de apartamentos, como mostrado na

Tabela 4.3, houve uma redução de RMSE nos três casos.

Tabela 4.3: Resultados de testes com validação cruzada para apartamentos. R2 RMSE

Random Forest 0.996783814323 18687.2242698

Gradient Booster 0.924243056587 51715.6546395

Linear Regression 0.792251007029 85717.2580883

Tabela 4.4: Resultados de testes com validação cruzada para casas. R2 RMSE

Random Forest 0.537682154342 114593.48745

Gradient Booster 0.591472948467 124174.99021

Linear Regression 0.477637905915 132316.66534

Experimentos seguintes não foram capazes de reduzir os erros apresentados. Com a

finalidade de buscar respostas, foi feita uma importante observação a respeito da distribuição de

imóveis pelos bairros. Como visto na Figura 4.3, é evidente que os dados pertinentes estão

34

Page 42: Uma Metodologia Orientada a Dados para Precificação de …

concentrados em alguns poucos bairros, o que afeta diretamente no cálculo dos 13 atributos

adicionais criados na etapa de pré-processamento.

Figura 4.3 - Número de imóveis por bairro.

Fonte: Autor, 2018.

4.1 Resultados adicionais para Random Forest e Gradient Booster

Como demonstrado na Figura 4.4, existem atributos que têm maior influência na previsão

correta do valor usando o modelos Random Forest, com o tamanho do imóvel sendo o mais

importante. Também é possível fazer observações a respeito do conjunto de dados de

treinamento, como mostrado pela Figura 4.5 que descreve a curva de aprendizado deste modelo.

35

Page 43: Uma Metodologia Orientada a Dados para Precificação de …

Figura 4.4 - Importância de atributos para o modelo Random Forest Regressor.

Fonte: Autor, 2018.

Figura 4.5 - learning_curve do modelo Random Forest Regressor.

Fonte: Autor, 2018.

De maneira análoga as mesmas visualizações foram criadas para o modelo Gradient

Booster, como visto nas Figuras 4.6 e 4.7. É observado que o seu comportamento foi diferente do

Random Forest, fazendo uso de mais atributos e com suas curvas de aprendizado convergindo

antes do final do treinamento.

36

Page 44: Uma Metodologia Orientada a Dados para Precificação de …

Figura 4.6 -Importância de atributos para o modelo Gradient Boosting Regressor.

Fonte: Autor, 2018

Figura 4.7 - learning_curve do modelo Gradient Boosting Regressor.

Fonte: Autor, 2018.

37

Page 45: Uma Metodologia Orientada a Dados para Precificação de …

Conclusões

Para o desenvolvimento deste trabalho, foi necessário o uso de vários conceitos de

estatística, Inteligência Artificial e desenvolvimento usando a linguagem Python. Foi criado um

processo que envolve a identificação de um problema, extração dos dados seguido por uma

avaliação destes e finalmente a modelagem com aprendizado de máquina.

A respeito da mineração de dados é possível concluir que esta não foi completamente

satisfatória, dado que não foi obtida uma quantidade de imóveis esparsamente distribuída pelos

diferentes bairros da cidade, fazendo com que alguns destes não tenham a sua realidade

imobiliária representada corretamente por conta da ausência de dados. Este problema talvez

pudesse ser contornado com uma mineração de dados ao longo de um período de tempo maior, já

que os anúncios virtuais de imóveis são retirados das páginas da internet após a venda. A

quantidade de dados de um aspecto geral poderia ter sido maior, já que muitas das informações

foram perdidas na etapa de pré-processamento.

Com relação aos modelos de aprendizado de máquina, pode-se afirmar que nesta base de

dados o algoritmo Random Forest obteve melhor desempenho na classificação dos dados. É

importante constatar que as variáveis mais importantes para o processo de predição foram

identificadas, mas no caso deste modelo a maioria dos atributos coletados na internet se

mostraram pouco influentes no resultado final. Outra observação a ser feita leva em consideração

às curvas de aprendizado do modelo, que sinaliza para uma possível falta de atributos relevantes,

indicando que uma maior complexidade dos dados ajudariam a reduzir o erro.

Embora com erro médio quadrático maior, o Gradient Boosting Regressor também se

mostrou adequado a este conjunto de dados específico, apresentando uma maior capacidade de

aproveitamento dos atributos presentes. As suas curvas de aprendizado mostraram convergência,

o que implica que a inclusão de novas entradas de treinamento não necessariamente farão com

que o modelo seja mais preciso.

Em relação ao modelo de regressão linear foi constatado que, nas circunstâncias impostas

por este conjunto de dados, este tem desempenho inferior aos modelos de ensemble, apesar de

38

Page 46: Uma Metodologia Orientada a Dados para Precificação de …

menor custo computacional. Também podemos observar que necessita de maior esforço para

otimizá-lo quando comparado aos modelos não-lineares.

A linguagem Python se mostrou essencial pela facilidade em lidar com os problemas

propostos. Foi possível desenvolver todos os aspectos do ambiente da ciência de dados, sendo

estes a extração e padronização dos dados, visualização gráfica e a criação dos modelos de

aprendizado supervisionado.

O Scikit-learn demonstrou ser crucial para a execução do trabalho por conter todos os

componentes necessários para a implementação e avaliação de um modelo de aprendizado de

máquina, assim como pela sua facilidade de uso, documentação rica em detalhes e

disponibilidade de informação.

Existem diversas possibilidades para o desenvolvimento futuro deste trabalho, tanto no

quesito da mineração de dados quanto para o algoritmo de aprendizado. Algumas sugestões são:

● Melhorar o conjunto de dados realizando Web Scraping adicional buscando

especificamente imóveis de bairros mal representados no dataset atual;

● Criar mais features com o auxílio de ferramentas de localização geoespacial;

● Usar técnicas de mineração de texto para extrair informações de anúncios de imóveis;

● O uso de Redes Neurais para estimar o valor do apartamento;

● Empregar em um sistema web de precificação de imóveis o algoritmo criado neste

trabalho.

Finalmente, posso concluir que este trabalho foi produtivo por reunir diferentes áreas de

conhecimento para identificar um problema, além de cumprir com seus objetivos inicialmente

propostos para a criação de um modelo de precificação de imóveis.

39

Page 47: Uma Metodologia Orientada a Dados para Precificação de …

Referências Bibliográficas

[1] MITCHELL, R. Web Scraping com Python. São Paulo: Novatec Editora Ltda, 2016.

[2] MUNZERT, S. Automated Data Collection with R a Practical Guide to Web Scraping

and Text Mining . John Wiley & Sons Inc., 2015.

[3] MULLER A.C.; GUIDO, S. Introduction to Machine Learning with Python: a Guide for

Data Scientists. O'Reilly, 2017.

[4] ALPAYDIN, E. Introduction to Machine Learning. The MIT Press, 2014.

[5] BREIMAN, L; FRIEDMAN, J. H.; OLSHEN, R. A.; STONE, C. J. Classification and

regression trees. Wadsworth & Brooks/Cole Advanced Books & Software, 1984.

[6] VARGIU, E.; URRU, M. Exploiting web scraping in a collaborative filtering- based

approach to web advertising. Artif. Intell. Research, v. 2, n. 1, p. 44 – 54, 2013.

[7] BREIMAN, L. Random forests. Machine Learning, v. 45, n. 1, p. 5 – 32, 2001.

[8] MOHAN, A.; CHEN, Z.; WEINBERGER, K. Q. Web-Search Ranking with Initialized

Gradient Boosted Regression Trees. In: Yahoo! Learning to Rank Challenge. [s.n.], p. 77 – 89,

2011.

[9] KOHAVI, R. A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model

Selection. In: International joint Conference on artificial intelligence. [S.l.: s.n.], v. 14, p.

1137 – 1145, 1995.

[10] HUNTER, J. D. Matplotlib: A 2D Graphics Environment. Computing in Science and

Engineering , v. 9, n. 3, p. 90 – 95, 2007.

[11] PANTEL; PATRICK; LIN, D. Spamcop: A spam classification & organization program.

Proceedings of AAAI-98 Workshop on Learning for Text Categorization, 1998.

[12] PYTHON SOFTWARE FOUNDATION. Python 3.6.6 documentation. Wilmington,

Delaware, EUA, 2018. Disponível em: <https://www.python.org/doc/>.

40

Page 48: Uma Metodologia Orientada a Dados para Precificação de …

[13] RICHARDSON, L. Beautiful Soup Documentation. 2015. Disponível em:

<https://www.crummy.com/software/BeautifulSoup/bs4/doc/>. Acesso em: 20/11/2018.

[14] MONARD, M. C.; BARANAUSKAS, J. A. Conceitos sobre aprendizado de máquina.

Sistemas Inteligentes-Fundamentos e Aplicações, v. 1, n. 1, 2003.

[15] SINGH, S. Understanding the Bias-Variance Tradeoff. Disponível em:<

https://towardsdatascience.com/understanding-the-bias-variance-tradeoff-165e6942b229 >.

Acessado em 20 de novembro de 2018.

[16] HUTCHESON, G.D. Ordinary Least-Squares Regression. The SAGE Dictionary of

Quantitative Management Research. p. 224-228, 2011.

[17] RUSSELL, S. J.; NORVIG, P. Artificial Intelligence: a modern approach. 3. ed. [S.l.]:

Prentice-Hall, Inc., 1995.

[18] FERNANDO PÉREZ; GRANGER, B. E. IPython: A System for Interactive Scientific

Computing. Computing in Science and Engineering, v. 9, n. 3, p. 21 – 29, 2007.

[19] KOK, N.; KOPONEN, E.; MARTÍNEZ-BARBOSA, C. A. Big Data in Real Estate? From

Manual Appraisal to Automated Valuation. The Journal of Portfolio Management, v. 43, n. 6,

p. 202 – 211, 2017.

[20] GLUCK, C. Running Random Forests? Inspect the feature importance. 2017.

Disponível em: <

https://towardsdatascience.com/running-random-forests-inspect-the-feature-importances-with-thi

s-code-2b00dd72b92e>. Acesso em 20/11/2018.

[21] REYNOLDS, G. What is a Data Frame?. 2014. Disponível em:

<https://github.com/mobileink/data.frame/wiki/What-is-a-Data-Frame%3F >. Acesso em:

20/11/2018.

[22] NG, A. Machine Learning - Lesson 2. Disponível em:

<https://www.coursera.org/learn/machine-learning > Acesso em: 20/11/2018.

[23] MCKINNEY, W. Data structures for statistical computing in python. Proceedings of the

9th Python in Science Conference. Vol. 445, 2010.

41

Page 49: Uma Metodologia Orientada a Dados para Precificação de …

[24] PEDREGOSA, F. et al. Scikit-learn: Machine Learning in Python. JMLR, JMLR, v. 12, n.

1, p. 2825 – 2830, Outubro 2011.

[25] REITZ, K. Requests: HTTP for Humans. Disponível em:

<http://docs.python-requests.org/en/master/>. Acesso em: 20/11/2018.

[26] PERLICH, C. Learning Curves in Machine Learning. In: Encyclopedia of Machine

Learning. [s.n.], 2010. p. 577 – 580.

[27] FAGGELLA, D. Machine Learning in Real Estate–Trends and Applications. Disponível

em:<www.techemergence.com/machine-learning-in-real-estate-trends-and-applications/>.

Acesso em 20/11/2018.

42