• Nenhum resultado encontrado

José Miguel Mota e Cunha

N/A
N/A
Protected

Academic year: 2021

Share "José Miguel Mota e Cunha"

Copied!
157
0
0

Texto

(1)

José Miguel Mota e Cunha

S

ISTEMA

I

NTELIGENTE DE

P

REVISÃO DE

V

ALOR E

F

IABILIDADE DE

A

UTOMÓVEIS

VOLUME 1

Relatório de Estágio no âmbito do Mestrado em Engenharia Informática, especialização

em Sistemas Inteligentes, desenvolvido na empresa Grama, orientado pelo Eng. Rafael

Maia da Grama e pelo Prof. António Dourado do DEI e apresentado à Faculdade de

Ciências e Tecnologia / Departamento de Engenharia Informática.

Outubro de 2020

SI

STE

MA

INTE

LIGEN

TE

DE

PREV

IS

ÃO

DE

V

AL

OR

E

FIAB

IL

IDA

DE

DE

AUT

OMÓ

VEI

S

José

Migu

el

Mota

e

C

u

n

h

a

(2)

Faculdade de Ciências e Tecnologias

Departamento de Engenharia Informática

Sistema Inteligente de Previsão de

Valor e Fiabilidade de Automóveis

Intelligent System for Car Value and Reliability Forecasting

José Miguel Mota e Cunha

motacunha@student.dei.uc

Relatório de Estágio no âmbito do Mestrado em Engenharia Informática, especialização em Sistemas Inteligentes, desenvolvido na empresa Grama, orientado pelo Eng. Rafael Maia da

Grama e pelo Prof. António Dourado do DEI e apresentada à Faculdade de Ciências e Tecnologia / Departamento de Engenharia Informática.

(3)
(4)

Abstract

With the expansion of the Internet and, consequently, the increase in the purchase and sale of cars online, the used car market has become more competitive, leading people to look for ways to make the best possible evaluation of their car to speed up it’s sale. In addition, from the buyer’s point of view, it is important to be able to assess the price of the car you want to buy in order to understand whether you are paying a fair price for it. This document aims to describe the development of a web platform capable of predicting the current value over time for a given car, and provide various statistical data about the automotive world, such as the brands that depreciate the most over time, the average annual devaluation by brand and model, and also the average mileage overage for each car model. It also initiated the development of a car history capable of keeping track of all maintenance, breakdowns, accidents and changes in the ownership of a car.

To this end, the Amazon Web Services (AWS) cloud provider was used to host the ap-plication together with some of its services, such as DynamoDB, S3 Bucket, CloudFront, Cognito, Elastic Container Service (ECS), Lambda Function and Fargate. To create the individual history of a car, a Ledger Database also provided by AWS, called QLDB, was used. Finally, for the development of the algorithms responsible for predicting the value of a given car, machine learning techniques were used.

After the development and testing of several machine learning models were completed, a Gradient Boosting model was implemented on the web platform with an absolute average error of 8.6% in forecasting the current price of a car. For the long-term forecast, the same trained model was used, however, in this regard, it obtained 16% of absolute mean error in the tests performed.

Keywords

Car, Price, Value, Machine Learning, Ledger Database, Serverless, Amazon Web Services (AWS), Web Aplication

(5)
(6)

Resumo

Com o aumento da utilização da Internet e consequentemente o aumento da compra e venda de automóveis online, o mercado de automóveis usados ficou mais competitivo, levando as pessoas a procurarem formas de fazerem a melhor avaliação possível do seu automóvel de modo a agilizar a venda do mesmo. Além disso, do ponto de vista do comprador, é importante poder avaliar o preço do automóvel que deseja comprar de modo a perceber se está a pagar um preço justo pelo mesmo.

Este documento tem como objectivo descrever o desenvolvimento de uma plataforma web capaz de prever o valor atual e ao longo do tempo de um determinado automóvel, e fornecer diversos dados estatísticos sobre o mundo automóvel, como as marcas que mais desvalori-zam ao longo do tempo, a desvalorização média anual por marca e modelo, e também a quilometragem média ao longo da idade para cada modelo automóvel. Foi também dado início ao desenvolvimento de um histórico automóvel capaz de manter o registo de todas as manutenções, avarias, acidentes e trocas de proprietário de um automóvel.

Para tal, foi utilizado o provedor Amazon Web Services (AWS) para a alocação da aplicação juntamente com alguns dos seus serviços como, por exemplo, DynamoDB, S3 Bucket, CloudFront, Cognito, Elastic Container Service (ECS), Lambda Function and Fargate. Para a criação do histórico individual de um automóvel foi utilizado uma Ledger Database providenciada também pela AWS, denominada de QLDB. Por fim, para o desenvolvimento dos algoritmos responsáveis pela previsão do valor de um dado automóvel, foram utilizadas técnicas de aprendizagem computacional.

Finalizado o desenvolvimento e teste de diversos modelos de aprendizagem computacional, foi implementado um modelo Gradient Boosting na plataforma web com um erro absoluto médio de 8.6% na previsão do preço atual de um automóvel. Para a previsão a longo prazo, foi utilizado o mesmo modelo treinado, porém, neste quesito o mesmo obteve 16% de erro absoluto médio nos testes realizados.

Palavras-Chave

Automóvel, Preço, Valor, Aprendizagem Computacional, Ledger Database, Serverless, Amazon Web Services (AWS), Plataforma Web

(7)
(8)

Conteúdo

1 Introdução 1 1.1 Motivação . . . 1 1.2 Objetivos . . . 2 1.3 Estrutura do documento . . . 3 2 Conceitos Prévios 5 2.1 Serverless . . . 5

2.2 Blockchain Aplicada a Cadeias Logísticas . . . 8

2.3 Ledger Database . . . 9

2.4 Algoritmos de Aprendizagem Computacional . . . 9

2.4.1 Gradient Boosting . . . 10

2.4.2 Support Vector Machines . . . 10

2.4.3 Naive Bayes . . . 11 2.4.4 Árvores de Decisão . . . 11 2.4.5 Random Forest . . . 12 2.4.6 k-Nearest Neighbors . . . 13 2.4.7 Redes Neuronais . . . 13 2.4.8 Otimização de Hiperparâmetros . . . 15 3 Estado da Arte 17 3.1 Plataformas Web Existentes . . . 17

3.1.1 Kelley Blue Book . . . 17

3.1.2 Autouncle . . . 18

3.1.3 Vehicle Dependability Study . . . 20

3.1.4 Índice de Fiabilidade . . . 20

3.1.5 AutoDNA e VINCheck . . . 22

3.2 Previsão do Valor de Automóveis com Aprendizagem Computacional . . . . 22

3.3 Conclusões . . . 24 4 Descrição do processo 27 4.1 Planeamento . . . 27 4.1.1 Primeiro Semestre . . . 27 4.1.2 Segundo Semestre . . . 29 4.2 Metodologia . . . 30 4.2.1 Scrum . . . 30 4.2.2 Papéis do Scrum . . . 31 4.2.3 Artefatos do Scrum . . . 31 4.2.4 Alterações ao Scrum . . . 31 5 Especificação do Problema 33 5.1 Requisitos . . . 33 5.1.1 Requisitos Funcionais . . . 34

(9)

Capítulo 0

5.1.2 Requisitos não Funcionais . . . 35

5.2 Diagramas de Casos de Uso . . . 36

5.2.1 Atores . . . 37 5.2.2 Utilizador . . . 37 5.2.3 Administrador . . . 38 5.3 Arquitetura do Sistema . . . 38 5.4 Tecnologias e Ferramentas . . . 42 5.4.1 Back end . . . 42 5.4.2 Front end . . . 44 5.4.3 Aprendizagem Computacional . . . 44 5.4.4 Desenvolvimento . . . 45 5.5 Riscos . . . 46

5.5.1 Risco 1 - Não Cumprimentos de Todos os Objetivos . . . 47

5.5.2 Risco 2 - Não Existência de Dados com Qualidade . . . 47

5.5.3 Risco 3 - Não Obtenção de Modelos com Bom Desempenho . . . 47

5.5.4 Risco 4 - Implementação de Modelos Treinados no Servidor . . . 47

5.5.5 Risco 5 - Armazenamento de Grande Quantidades de Dados. . . 48

5.5.6 Risco 6 - Implementação do Histórico Individual de Automóveis. . . 48

6 Desenvolvimento 49 6.1 Aprendizagem Computacional . . . 49

6.1.1 Algoritmos . . . 49

6.1.2 Métricas . . . 51

6.1.3 Dados . . . 52

6.1.4 Previsão do Preço Atual de um Automóvel . . . 71

6.1.5 Previsão do Preço de um Automóvel ao Longo do Tempo . . . 77

6.2 Plataforma Web . . . 81 6.2.1 Carregar Ficheiros CSV . . . 82 6.2.2 Listar Dados . . . 84 6.2.3 Editar Item . . . 86 6.2.4 Apagar Item . . . 87 6.2.5 Autenticação . . . 87 6.2.6 Estatística . . . 90

6.2.7 Previsão do Valor de um Automóvel . . . 92

7 Testes e Resultados 95 7.1 Aprendizagem Computacional . . . 96

7.1.1 Previsão do Preço Atual de um Automóvel . . . 96

7.1.2 Previsão do Preço de um Automóvel ao Longo do Tempo . . . 107

7.2 Plataforma Web . . . 113 8 Conclusão 115 8.1 Dificuldades Ultrapassadas . . . 116 8.2 Trabalho Futuro . . . 117 Appendices 125 A Requisitos 127 A.1 Requisitos Funcionais . . . 127

B Diagramas de Casos de Uso 139

(10)

Acrónimos

AWS Amazon Web Services. iii, v, xi, 5–7, 27, 36, 43, 44, 82, 83, 88, 116 ECS Elastic Container Service. iii, v

GB Gradient Boosting. 9, 10 KBB Kelley Blue Book. xi, 17–20

KNN k-Nearest Neighbors. xi, 9, 13, 97, 98, 100, 102, 103, 115

LSTM Long Short-Term Memory. xi–xiii, xv, 5, 9, 14, 15, 77, 80, 81, 107, 110–113, 115 NB Naive Bayes. 9, 11

RF Random Forest. xi, 9, 12, 13 RN Redes Neuronais. 9, 13, 14 SVM Support Vector Machines. 9, 10 VDS Vehicle Dependability Study. xi, 20, 21

(11)
(12)

Lista de Figuras

2.1 Hiperplanos possíveis. . . 11

2.2 Hiperplano ótimo. . . 11

2.3 Árvore de decisão para o conceito Play Ténis. . . 12

2.4 Representação de um modelo Random Forest (RF). . . 12

2.5 Representação de um modelo k-Nearest Neighbors (KNN). . . 13

2.6 Diagrama de uma Rede Neuronal. . . 14

2.7 Segmento de um rede Long Short-Term Memory (LSTM) composta por 3 blocos em serie. . . 15

3.1 Formulário para avaliar um automóvel na Kelley Blue Book (KBB). . . 18

3.2 Resultado de uma avaliação na KBB. . . 19

3.3 Formulário para avaliar um automóvel na Autouncle. . . 19

3.4 Resultado de uma avaliação de um automóvel na Autouncle. . . 19

3.5 Ranking da Vehicle Dependability Study (VDS) de 2019. . . 20

3.6 Formulário da plataforma reliabilityindex. . . 21

3.7 Resultado da plataforma reliabilityindex. . . 21

4.1 Diagrama de Gantt com estimativas para o 1o Semestre. . . 28

4.2 Diagrama de Gantt com o tempo real para o 1o Semestre. . . 28

4.3 Diagrama de Gantt com estimativas para 2o Semestre. . . 29

4.4 Diagrama de Gantt com o tempo real para 2o Semestre. . . 30

5.1 Atores do sistema. . . 37

5.2 Diagrama de casos de uso do utilizador: Alto nível. . . 37

5.3 Diagrama de casos de uso do Administrador: Alto nível. . . 38

5.4 Diagrama de contexto. . . 39

5.5 Diagrama de containers. . . 40

5.6 Diagrama de componentes. . . 41

5.7 Ligação entre as diferentes tecnologias Amazon Web Services (AWS). . . 43

6.1 Distribuição das marcas no dataset recolhido no Ebay Alemão. . . 53

6.2 Distribuição do tipo de combustível no dataset recolhido no Ebay Alemão. . 53

6.3 Distribuição do tipo de transmissão no dataset recolhido no Ebay Alemão. . 54

6.4 Distribuição de reparos no dataset recolhido no Ebay Alemão. . . 54

6.5 Distribuição do preço no dataset recolhido no Ebay Alemão. . . 55

6.6 Distribuição dos quilómetros no dataset recolhido no Ebay Alemão. . . 55

6.7 Distribuição da idade no dataset recolhido no Ebay Alemão. . . 56

6.8 Distribuição da potência no dataset recolhido no Ebay Alemão. . . 56

6.9 Relação preço/idade no dataset recolhido no Ebay Alemão. . . 57

6.10 Relação preço/quilometragem no dataset recolhido no Ebay Alemão. . . 57

6.11 Relação preço/marca no dataset recolhido no Ebay Alemão. . . 58

(13)

Capítulo 0

6.13 Relação preço/idade após limpeza no dataset recolhido no Ebay Alemão. . . 59

6.14 Relação preço/km após limpeza no dataset recolhido no Ebay Alemão. . . . 60

6.15 Relação preço/potência após limpeza do dataset recolhido no Ebay Alemão. 60 6.16 Matriz de correlação do dataset recolhido no Ebay Alemão. . . 61

6.17 Distribuição das marcas no dataset recolhido no website TrueCar. . . 64

6.18 Distribuição dos tipos de tração no dataset recolhido no website TrueCar. . 64

6.19 Distribuição do combustível no dataset recolhido no website TrueCar. . . 65

6.20 Distribuição do preço no dataset recolhido no website TrueCar. . . 65

6.21 Distribuição da quilometragem no dataset recolhido no website TrueCar. . . 66

6.22 Distribuição da idade no dataset recolhido no website TrueCar. . . 66

6.23 Relação preço/idade no dataset recolhido no website TrueCar. . . 67

6.24 Relação preço/quilometragem no dataset recolhido no website TrueCar. . . 67

6.25 Relação preço/marca no dataset recolhido no website TrueCar. . . 68

6.26 Relação preço/potência no dataset recolhido no website TrueCar. . . 69

6.27 Correlação das features do dataset recolhido no website TrueCar. . . 69

6.28 Relação entre a marca e o índice de fiabilidade. . . 70

6.29 Relação entre a marca e o custo médio de manutenção. . . 71

6.30 Abordagem com dataset recolhido no Ebay Alemão. . . 72

6.31 Abordagem com dataset recolhido no Ebay Alemão e Min Max. . . 72

6.32 Abordagem com dataset recolhido no Ebay Alemão e tempo de anúncio. . . 73

6.33 Abordagem com dataset recolhido no Ebay Alemão com novas features. . . . 74

6.34 Abordagem com dataset recolhido no website TrueCar. . . 75

6.35 Abordagem com dataset recolhido no website TrueCar e Min Max. . . 75

6.36 Abordagem com dataset recolhido no website TrueCar e novas features. . . . 76

6.37 Abordagem com dataset recolhido no website TrueCar e novas features. . . . 77

6.38 Abordagem de previsão do preço ao longo do tempo com dados estatísticos. 78 6.39 Abordagem de previsão do preço ao longo do tempo com quilometragem anual do automóvel. . . 79

6.40 Abordagem de previsão do preço dos últimos 5 anos, atual e 4 anos seguintes. 79 6.41 Exemplo do novo formato de dados. . . 80

6.42 Abordagem com uso de LSTM e dataset recolhido em website TrueCar. . . 81

6.43 Carregamento de ficheiros para o S3 Bucket. . . 82

6.44 Página para carregar ficheiro com marcas de automóveis. . . 83

6.45 Página para carregar ficheiro com preços de automóveis. . . 84

6.46 Página de listagem de marcas e modelos de automóveis. . . 84

6.47 Página de listagem de históricos de automóveis. . . 85

6.48 Detalhes de peças de origem de um automóvel. . . 85

6.49 Detalhes das intervenções de um automóvel. . . 86

6.50 Listagem de marcas de automóveis com linha editável. . . 86

6.51 Modal para confirmar que o utilizador pretende apagar um item. . . 87

6.52 Página de login. . . 88

6.53 Página para recuperar password-Enviar código. . . 89

6.54 Página para recuperar password-Reset password. . . 89

6.55 Página para alterar password. . . 90

6.56 Página para alterar dados pessoais. . . 90

6.57 Página para inicial de estatística. . . 91

6.58 Página de estatística ao selecionar um automóvel. . . 91

6.59 Página de previsão do valor de um automóvel. . . 92

7.1 Comparação da previsão dos diversos algoritmos. . . 97

7.2 Comparação da previsão dos diversos algoritmos com Min Max. . . 98

7.3 Comparação da previsão dos diversos algoritmos com tempo de anúncio. . . 99 xii

(14)

Lista de Figuras

7.4 Comparação da previsão dos diversos algoritmos com taxa de fiabilidade. . . 100

7.5 Comparação da previsão dos diversos algoritmos com taxa de fiabilidade e custo médio de manutenção. . . 101

7.6 Comparação da previsão dos diversos algoritmos. . . 102

7.7 Comparação da previsão dos diversos algoritmos com Min Max. . . 103

7.8 Comparação da previsão dos diversos algoritmos com Taxa de Fiabilidade. . 104

7.9 Comparação da previsão dos diversos algoritmos com Taxa de Fiabilidade e custo médio de manutenção. . . 105

7.10 Comparação da previsão dos diversos algoritmos com Potência. . . 106

7.11 Comparação da previsão ao longo do tempo com dados estatísticos. . . 108

7.12 Comparação da previsão do preço ao longo do tempo com quilometragem média anual do automóvel. . . 110

7.13 Comparação da previsão ao longo do tempo com LSTM. . . 111

7.14 Comparação da previsão ao longo do tempo com LSTM e Min Max. . . 112

B.1 Diagrama de casos de uso do utilizador. . . 139

(15)
(16)

Lista de Tabelas

2.1 Comparação do suporte de linguagens das diversas plataformas. . . 6

2.2 Comparação das ofertas e preços das diversas plataformas. . . 6

2.3 Comparação do tempo de execução das diversas plataformas. . . 7

2.4 Comparação do Cold Start das diversas plataformas. . . 7

2.5 Comparação do tempo da solicitação à resposta das diversas plataformas. . 7

5.1 Requisitos-Autenticação. . . 34

5.2 Requisitos-Manipulação de dados. . . 34

5.3 Requisitos-Aprendizagem computacional. . . 35

5.4 Requisitos-Visualização de dados. . . 35

5.5 Lista das tecnologias e ferramentas usadas na aplicação web. . . 44

5.6 Lista de ferramentas usadas nos modelos de aprendizagem computacional. . 45

5.7 Lista de ferramentas usadas no desenvolvimento. . . 45

5.8 Lista de Riscos. . . 46

6.1 Descrição dos hiperparâmetros de cada um dos algoritmos utilizados. . . 50

6.2 Algoritmos utilizados e seus respetivos hiperparametros. . . 51

7.1 Resultados com o dataset do ebay Alemão. . . 96

7.2 Resultados com o dataset do ebay Alemão com Min Max. . . 97

7.3 Resultados com o dataset do ebay Alemão com tempo de anúncio. . . 98

7.4 Resultados com o dataset do ebay Alemão com fiabilidade. . . 99

7.5 Resultados com o dataset do ebay Alemão com fiabilidade e custo médio de manutenção. . . 100

7.6 Resultados com dataset recolhido no website TrueCar. . . 102

7.7 Resultados com dataset recolhido no website TrueCar com Min Max. . . 103

7.8 Resultados com dataset do website TrueCar com Taxa de Fiabilidade. . . . 104

7.9 Resultados com dataset do website TrueCar com Taxa de Fiabilidade e custo medido de manutenção. . . 105

7.10 Resultados com dataset do website TrueCar com potência. . . 106

7.11 Resultados da previsão do preço ao longo do tempo com dados estatísticos. 108 7.12 Resultados da previsão do preço ao longo do tempo com quilometragem média anual do automóvel. . . 109

7.13 Resultados da previsão do preço ao longo dos 4 anos seguintes com LSTM. . 110

7.14 Resultados da previsão do preço ao longo do tempo com LSTM e Min Max. 111 A.1 Login. . . 127

A.2 Logout. . . 127

A.3 Recuperar password. . . 128

A.4 Alterar password. . . 128

A.5 Alterar configurações pessoais. . . 129

(17)

Capítulo 0

A.7 Carregar dados históricos. . . 130

A.8 Feedback sobre o processo de carregamento de dados. . . 130

A.9 Limpar dados carregados. . . 130

A.10 Normalizar dados. . . 131

A.11 Tratar dados repetidos. . . 131

A.12 Armazenar dados. . . 131

A.13 Armazenar dados históricos na Ledger Database. . . 132

A.14 Atualizar dados. . . 132

A.15 Apagar dados. . . 133

A.16 Treinar modelos. . . 133

A.17 Selecionar características influentes no preço . . . 133

A.18 Prever preço de um automóvel. . . 134

A.19 Prever preço de um automóvel ao longo do tempo. . . 134

A.20 Selecionar características influentes na fiabilidade. . . 134

A.21 Prever fiabilidade de um automóvel. . . 135

A.22 Visualizar dados. . . 135

A.23 Visualizar detalhes dos dados. . . 135

A.24 Visualizar dados históricos de um automóvel em específico. . . 136

A.25 Visualizar dados estatísticos. . . 136

A.26 Visualizar previsão de preço dada uma configuração. . . 136

A.27 Visualizar previsão de preço de um determinado automóvel. . . 137

A.28 Visualizar previsão de preço ao longo do tempo. . . 137

A.29 Visualizar previsão de fiabilidade dada uma configuração. . . 138

A.30 Visualizar previsão de fiabilidade para um determinado automóvel. . . 138

(18)

Capítulo 1

Introdução

Este documento tem como objetivo descrever todo o trabalho desenvolvido ao longo do estágio na empresa Grama [1]. O estágio é integrado numa unidade curricular de segundo ano de Mestrado em Engenharia Informática na Universidade de Coimbra, com a duração de dois semestres.

Fundada em Janeiro de 2017, a Grama [1] é uma empresa de software com sede em Coimbra. Tem vários anos de experiência na entrega de projetos complexos de TI para algumas das maiores operadoras de telecomunicações da Europa e América do Sul.

Neste capítulo, serão abordados temas como a motivação do trabalho, os objetivo, e por fim, a estrutura do documento.

1.1

Motivação

Entre 2006 e 2015, verificou-se uma aumento do número de automóveis em utilização em todo o mundo [2]. Com isto, é expectável também um aumento do número de carros vendidos diariamente.

Segundo o Centro de Pesquisa Económica e Empresarial (CEBR) da Trustpilot, as vendas de carros online estão em subida e prevêem que até 2027 um em cada cinco carros sejam vendidos online [3].

Devido ao aumento da concorrência no mercado automóvel, existe uma necessidade, tanto para o vendedor como para o comprador, de saber qual o preço mais justo para um deter-minado automóvel, de modo a agilizar as vendas.

Dado que a forma mais utilizada para a previsão do valor de um automóvel é a pesquisa demorada em vários websites de compra e venda de automóveis ou então através de análises estatísticas disponíveis em alguns websites, uma forma de melhorar esse processo pode ser através do uso de aprendizagem computacional.

É também importante para o comprador saber todo o histórico do automóvel que pretende comprar, de modo a detetar possíveis anomalias na quilometragem do automóvel e perceber qual a utilização que o mesmo teve até ao momento, assim como a frequência das suas manutenções, número de acidentes e o número de mudanças de proprietário. A existência deste histórico possibilita também a valorização ou desvalorização de um determinado automóvel dependendo da sua utilização.

(19)

Capítulo 1

Posto isto, o sistema a desenvolver tem como objetivo principal a possibilidade de avaliar um dado automóvel de modo a facilitar a compra e venda de automóveis usados. Tem também o objetivo de armazenar um histórico automóvel com todos os acontecimentos a que o mesmo foi sujeito, como manutenções, acidentes e alteração de dono.

1.2

Objetivos

Os objetivos iniciais deste projeto consistiam na criação de uma plataforma web onde fosse possível a previsão do preço atual e futuro de um automóvel, e a sua fiabilidade através do uso de aprendizagem computacional. Tinha também como objetivo a criação de um histórico individual de automóveis seguro e imutável.

Porém, devido à elevada carga de trabalho que o cumprimento destes objetivos continham, foi necessário fazer uma nova definição do foco do trabalho. Para isso, foram definidas três fases de modo a organizar a prioridade do cumprimento dos objetivos. A primeira fase consiste na implementação dos objetivos de implementação obrigatória (must have). A segunda fase é responsável pelo desenvolvimento dos objetivos extra (should have), ou seja, objetivos que podem ou não ser implementados dependendo do avanço da primeira fase. Por fim, na terceira fase estão presentes os objetivos que só serão implementados numa nova versão da aplicação (will not have).

Posto isso, a primeira fase de desenvolvimento divide-se em quatro grandes objetivos: • Desenho e desenvolvimento do sistema (Back end e Front end).

• Recolha de dados históricos de preços através de anúncios de venda de automóveis. • Treino e teste de modelos de aprendizagem computacional para a previsão de preço

de um automóvel.

• Cálculo de dados estatísticos.

No final desta fase, é esperado uma plataforma web funcional com suporte a dois tipos de utilizador.

O primeiro utilizador consiste no administrador, que será capaz de carregar, visualizar, editar e apagar diversos tipos de dados necessários à aplicação. De modo a garantir que somente utilizadores autorizados têm acesso às funções descritas anteriormente, é expec-tável também a implementação de um sistema de autenticação.

O segundo utilizador não necessita de autenticação e terá acesso às páginas de previsão de preço e visualização de dados estáticos, como média de preço e média de quilómetros anuais por marca e modelo.

Na segunda fase, espera-se a criação de um histórico individual de automóveis. Consiste no desenvolvimento de todo o sistema (Back end e Front end) de modo a permitir ao administrador o carregamento de dados relativos a um determinado automóvel. É espe-rado também que seja possível a visualização do histórico de cada um dos automóveis na aplicação web. Devido ao requisito destes dados serem armazenados de uma forma segura e imutável, é necessário proceder à escolha de uma estrutura de dados que cumpra tais requisitos, como blockchain ou Ledger Database.

Com a finalização da segunda fase, é possível dar início à recolha de dados necessários para a realização da fase três. Esta fase consiste essencialmente no treino de modelos de

(20)

Introdução aprendizagem computacional capazes de prever a fiabilidade de um determinado automóvel. É expectável também a possibilidade de visualização da previsão de fiabilidade de um automóvel na plataforma web.

1.3

Estrutura do documento

Nesta secção, irá ser descrita a estrutura deste documento composto pelos seguintes capí-tulos:

1. Introdução

• É o capítulo inicial do documento e tem como objetivo explicar a motivação e o objetivo do trabalho. Agrega também a estrutura deste documento.

2. Conceitos Prévios

• Este capítulo tem como objetivo a descrição de vários conceitos de forma a ajudar o leitor na compreensão deste documento. Serão abordadas várias tec-nologias de elevada importância para o projeto, como serverless, algoritmos de aprendizagem computacional, Blockchain e Ledger Database.

3. Estado da Arte

• Neste capítulo serão analisadas várias plataforma de previsão de preços de au-tomóveis. Também serão abordados vários artigos relativos à previsão do preço de automóveis com recurso a aprendizagem computacional.

4. Descrição do Processo

• Neste capítulo será descrito o planeamento do projeto ao longo de estágio. Esse planeamento encontra-se dividido em duas fases, o primeiro e o segundo semes-tre. Posteriormente, será descrita a metodologia utilizada no desenvolvimento deste projeto.

5. Especificação do Problema

• Este capítulo é responsável pela enumeração e descrição dos requisitos funcionais e não funcionais, e pela explicação da arquitetura do sistema. Serão também descritas todas as tecnologias e ferramentas a serem utilizadas no desenvolvi-mento do sistema. Por fim, serão enumerados os riscos.

6. Desenvolvimento

• É o capítulo responsável pela enumeração e descrição do trabalho desenvolvido ao longo de todo o projeto.

7. Testes e Resultados

• Neste capítulo serão enumerados todos os testes realizados tanto ao website desenvolvido, como a todos os modelos de aprendizagem computacional. Será também responsável pela comparação entre os diversos algoritmos e análise dos resultados.

(21)

Capítulo 1 8. Conclusão

• É o último capítulo do documento e consiste num resumo das partes cruciais do trabalho feito ao longo do projeto, da sua análise crítica e das perspetivas de trabalho futuras. Serão também descritas as dificuldades obtidas ao longo do projeto.

(22)

Capítulo 2

Conceitos Prévios

Neste capítulo, serão abordados vários conceitos de modo a facilitar a boa compreensão do leitor na análise deste documento.

Inicialmente, serão explicadas as características de Serverless [4], de modo a abordar as suas vantagens e desvantagens e comparar os vários provedores de modo a justificar a escolha da Amazon Web Services (AWS) [5] como provedor responsável pela alocação deste sistema. Posteriormente, será discutido o conceito de blockchain aplicada a cadeias logísticas e de Ledger Database, de forma a entender quais as vantagens do uso de cada tecnologia e quais os problemas que elas permitem resolver.

Por fim, é possível encontrar uma secção dedicada à aprendizagem computacional. Nesta secção serão abordados todos os algoritmos de aprendizagem computacional referidos ao longo do documentos, de forma a descrever o seu funcionamento e as suas característi-cas. Será também descrito o funcionamento de uma rede neuronal e de uma rede Long Short-Term Memory (LSTM). Por fim serão descritos e comparados diversos algoritmos de otimização de hiperparâmetros.

2.1

Serverless

Serverless é um modelo de execução de computação em nuvem que depende significativa-mente de serviços de terceiros, conhecido como Back end como serviço ou "BaaS", em que o cloud provider gere dinamicamente a alocação dos servidores. Consiste na execução de código personalizado em containers que são acionados por eventos totalmente geridos pelo cloud provider [4].

Uma característica do Serverless é o facto de ser baseado na arquitetura de microsserviços [6]. Com isto, a aplicação terá de ser pensada para ser executada em forma de funções, variando assim dos servidores convencionais.

Pelo facto de estas funções serem executadas num container, e este ser descartado no fim de um determinado tempo sem execução, o Serverless é Stateless [6]. Ou seja, não é possível guardar dados através da utilização de variáveis locais na própria função como nos servidores tradicionais e utilizar esses mesmos dados em execuções futuras da função, pois é provável que essa execução seja num container completamente distinto, fazendo com que esses dados sejam perdidos. Uma forma de contornar este problema, é utilizar uma base de dados de modo a armazenar esses dados temporariamente.

(23)

Capítulo 2

Em caso de sobrecarga, vários containers podem ser inicializados, permitindo que tan-tas funções sejam executadas quantan-tas necessárias para atender continuamente a todas as solicitações recebidas. Este facto de serverless ser facilmente escalável é uma vantagem, porém, pode também ser uma desvantagem para programadores mais inexperientes, dado que uma configuração mal feita pode resultar numa factura elevada.

No deploy de uma arquitetura serverless também são encontradas algumas vantagens, tais como a administração do sistema ser praticamente nula e a rápida configuração.

Por outro lado, a principal desvantagens do Serverless é o Cold Start [6]. Pelo facto de o código ser executado em containers, quando é necessário a criação de um novo container para responder a um determinado evento, existe uma latência associada. Posto isto, o container permanece ativo por um período de tempo. No caso de outro evento surgir durante esse período, ele responderá muito mais rápido, conhecido como Warm Start. De forma a perceber qual o melhor provedor Serverless a ser utilizado neste sistema, serão comparados quatro provedores, entre eles a AWS [5], Google Cloud [7], Azure [8] e a IBM Cloud [9].

Nome Linguagens de Programação

AWS Node.js, Python, Go, Java, C++, .NET, PHP, Ruby

Google Node.js, Python

Azure Javascript, C#, F#, Java, Python, PHP, TypeScript, Bater, PowerShell

IBM Node.js, Swift, Java, PHP, Python

Tabela 2.1: Comparação do suporte de linguagens das diversas plataformas [10].

Na tabela 2.1 estão descritas todas as linguagens suportadas por cada um dos provedores Serverless. A Azure é a provedora que suporta uma maior quantidade de linguagens e todas as provedoras dão suporte a Node.js e Python.

Tendo em conta só a linguagem, todas as provedoras seriam uma boa opção dado que a linguagem a ser usada é Python, e todas elas suportam essa linguagem de programação.

Nome Ofertas por mês Preço ($)

AWS 1.000.000 Requests, 400.000 GB/s 0.00001667 por GB/s

Google 2.000.000 Requests, 400.000 GB/s 0.000016 por GB/s

Azure 1.000.000 Requests, 400.000 GB/s 0.0000004 por GB/s

IBM 1.000.000 Requests, 400.000 GB/s 0.000017 por GB/s

Tabela 2.2: Comparação das ofertas e preços das diversas plataformas [10].

Na tabela 2.2 estão descritas as ofertas mensais da cada uma das plataformas e o preço cobrado para cada GB/s.

Relativamente às ofertas, são todas muito semelhantes à exceção a Google, que oferece 2 milhões de pedidos contrariamente às restantes plataformas que oferecem um milhão de pedidos.

Os preços cobrados por GB/s são também muito semelhantes em todas as provedoras, porém, segundo a tabela 2.2, a Azure apresenta um preço bastante mais baixo. Essa diferença de preço resulta na cobrança separada para o uso de CPU e de memória. Pelo facto de ser um sistema com uma grande quantidade de dados, é importante

(24)

Conceitos Prévios lher um provedor que permita a execução de funções durante uma quantidade de tempo relativamente grande de modo a ser possível tratar esses dados corretamente.

Nome Execuções em Simultâneo Tempo de execução máximo

AWS 1000 15 minutos

Google Ilimitado 10 minutos

Azure Ilimitado para HTTP e 1000 para as

restantes

9 minutos

IBM Ilimitado Ilimitado

Tabela 2.3: Comparação do tempo de execução das diversas plataformas [10].

Na figura 2.3, é possível visualizar a quantidade de execuções simultâneas de cada provedor e, também, o tempo máximo que cada uma dessas funções podem permanecer em execução. Posto isto, podemos dizer que a IBM é a melhor neste requisito, dado que não limita o número de execuções em simultânea, nem o tempo de execução de cada função.

Sendo o tempo de Cold Start um dos maiores problemas do Serverless, é crucial escolher uma plataforma que tenha esse processo o mais rápido possível, de modo a reduzir a latência e melhorar a experiência do utilizador.

Nome Média Máximo

AWS 379ms 20283ms

Google 198ms 60919ms

Azure 4625ms 71809ms

IBM 1776ms 16114ms

Tabela 2.4: Comparação do Cold Start das diversas plataformas [11].

Analisando a tabela 2.4, podemos verificar que a AWS e a Google são as plataformas com menor Cold Start. Porém, ao visualizar os gráficos presentes em [11], podemos perceber que a AWS é a provedora mais constante relativamente ao tempo de Cold Start.

Nome AWS Google Azure IBM

Media 78ms 752ms 652ms 164ms

Tabela 2.5: Comparação do tempo da solicitação à resposta das diversas plataformas [11].

Na tabela 2.5 podemos ver o tempo médio que cada plataforma demora a responder a uma determinada solicitação. Este valor não contém o tempo de execução da função [11]. Com estes resultados podemos visualizar que a AWS apresenta o melhor tempo de resposta comparando com as restantes plataformas.

Apresentadas todas estas características, a plataforma escolhida foi a AWS. Esta escolha baseia-se principalmente no facto de ser a plataforma maioritariamente utilizada pela em-presa, o que permite assim um maior suporte ao longo do desenvolvimento do projeto. Foi também escolhida devido facto de permitir uma execução relativamente longa das funções, o seu constante desempenho no Cold Start e, por fim, devido ao seu tempo de resposta baixo.

(25)

Capítulo 2

2.2

Blockchain Aplicada a Cadeias Logísticas

A blockchain [12] consiste numa tecnologia de armazenamento e transmissão de dados transparente e segura, que lista todas as transações entre utilizadores desde a sua cria-ção. As diferentes transações são compartilhadas por esses mesmos utilizadores que se encarregam de verificar e validar todos os dados trocados.

A blockchain é baseado em três princípios:

• Transparência: todos podem consultar todas as transações registadas desde a sua criação;

• Descentralização: é independente de qualquer órgão de controlo central;

• Segurança: as transações são criptografadas e os dados são praticamente invioláveis.

A blockchain pode ser aplicada a muitos desafios das cadeias logísticas, como a manutenção

complexa de registos, contratos, pagamentos e o rastreamento de produtos. Pode ser

vista como a alternativa mais segura e automatizada comparando com as bases de dados centralizadas.

A gestão da cadeia logística inclui o planeamento integrado e a execução de diferentes processos. Isso envolve fluxo de material, fluxo de informações e fluxo de capital financeiro e humano.

Qualquer cadeia logística [13] progride entregando inicialmente as matérias-primas de um fornecedor a um fabricante e, eventualmente, termina entregando o produto final ao con-sumidor. A implementação adequada da gestão de uma cadeia logística pode resultar em benefícios, como aumento de vendas e receitas e a redução de fraudes e custos indiretos. Além disso, isso também levará à aceleração da produção e distribuição.

No setor automóvel, devido à grande variedade de fornecedores de peças, fabricantes e vendedores, faz com que seja um setor complexo e amplo com um grande números de participantes [13].

Posto isto, o rastreamento de componentes individuais de uma cadeia logística do setor automóvel é complexo, propenso a erros e demorado, sendo necessária uma grande coorde-nação entre fornecedores de vários níveis, logística de terceiros e empresas de transporte. Essa dificuldade faz com que os produtos falsificados sejam um problema significativo para o setor automóvel [13].

Devido à fácil degradação e baixo nível de qualidade, as peças falsificadas não são confiáveis, trazendo uma grande insatisfação aos clientes finais e a preocupação das marcas com a perda da confiança dos clientes [13].

A introdução da blockchain para o setor automóvel prova ser significativamente vantajosa, pois permite que as peças de reposição sejam representadas digitalmente e possibilita a identificação de todo o seu percurso, desde a sua origem até ao consumidor final, garantindo a disponibilidade de informações precisas e em tempo real entre diferentes partes, sendo possível verificar o estado, a quantidade e a localização de peças individuais [13].

(26)

Conceitos Prévios

2.3

Ledger Database

A principal diferença de uma Ledger Database para uma base de dados convencional, é o facto desta manter um registo do passado. Isto é, quando um item é atualizado, a nova informação não substitui a informação passada, e sim, é adicionada ao item. Cada atualização é anexada ao registo como uma nova entrada [14].

Uma Ledger Database é baseado em três princípios [14]:

• Imutável: Cada gravação na base de dados é anexada ao passado. É importante garantir que com o tempo essa informação não sofre alterações.

• Transparente: É possível ter acesso ao passado. As informações do log são total-mente consultáveis.

• Verificável: É possível a validação do histórico completo de alterações. Não basta ter acesso aos dados históricos, deve ser possível a verificação da autenticidade desse histórico.

Dadas essas propriedades, uma Ledger Database torna-se um sistema ideal de fonte de dados para registos. Uma possível utilização desta tecnologia, é o desenvolvimento de um registo de proprietário de automóveis, em que a tabela de proprietários é constituído pelo proprietário atual de cada automóvel. Porém, é possível visualizar todos os proprietários de um determinado automóvel através de uma pesquisa no log [14].

Ao estudar o funcionamento de uma Blockchain e de uma Ledger Database, é notável que ambas as estruturas de dados suportam o desenvolvimento de um registo, porém, é importante perceber que vantagem existe na utilização de uma Ledger Database em vez de uma Blockchain neste requisito.

O facto da Ledger Database ser desenvolvida para sistemas de registos e manutenção de histórico, faz com que a sua utilização seja fácil e focada em cumprir tal objetivo. Por outro lado, a Blockchain é uma tecnologia muito poderosa mas que traz uma maior complexidade e limitações desnecessárias, o que para o efeito torna-se prescindível a sua utilização.

2.4

Algoritmos de Aprendizagem Computacional

Nesta secção, irá ser explicado o funcionamento de vários algoritmos de aprendizagem com-putacional, tais como Gradient Boosting (GB), Support Vector Machines (SVM), Naive Bayes (NB), Decision Tree, Random Forest (RF), k-Nearest Neighbors (KNN), Redes Neu-ronais (RN) e LSTM. Por fim, serão explicados diversos algoritmos de otimização de hi-perparâmetros. Esta secção, tem como objetivo descrever todos os algoritmos referidos ao longo do documento, de modo a facilitar a compreensão do leitor.

Aprendizagem Computacional é um sub-campo da Engenharia e da ciência da compu-tação que evoluiu da matemática e estatística. Consiste em fazer com que os computadores adquiram a capacidade de aprender e melhorar automaticamente com a experiência, sem serem explicitamente programados e de forma a conseguirem elaborar uma determinada tarefa [15].

(27)

Capítulo 2

Aprendizagem computacional pode ser essencialmente de dois tipos:

• Supervisionada: Consiste na aprendizagem de um mapeamento entre um conjunto de entradas e um conjuntos de saídas, com base em pares de entrada-saída conhecidos. Para tal, é necessário fornecer dados devidamente etiquetados [16].

• Não supervisionada: Ajuda a encontrar padrões anteriormente desconhecidos num conjunto de dados sem rotulação previamente feita. Isto é, não são necessários dados com os dados de entrada devidamente mapeados com a saída correspondente [16]. • Aprendizagem por reforço: é um método de aprendizagem computacional em

que o agente aprende a executar certas ações que o levam à recompensa máxima, num determinado ambiente. Este conhecimento é adquirido por meio de repetidas tentativas de modo a maximizar a recompensa [17].

Os problemas de aprendizagem supervisionada podem ser agrupados em dois tipos de problemas:

• Classificação: É usado principalmente quando a variável de saída do problema é uma categoria discreta, como ”vermelho” ou ”azul” [18].

• Regressão: É usado principalmente quando a variável de saída do problema é um valor real ou contínuo, como por exemplo, o salário ou peso de uma pessoa [18].

2.4.1 Gradient Boosting

GB é uma técnica de aprendizagem computacional que pode ser usado tanto para problemas de regressão, como para problemas de classificação. A produção do seu modelo de previsão consiste no uso do conjunto de modelos mais fracos, geralmente árvores de decisão [19]. O algoritmo começa por treinar uma árvore de decisão na qual cada observação recebe um peso igual. Depois de avaliar a primeira árvore, os pesos das observações difíceis de classificar são aumentados e os pesos das fáceis de classificar são diminuídos.

A segunda árvore é cultivada nesses dados ponderados, resultando num novo modelo que é baseado na Árvore 1 + Árvore 2. Em seguida, é calculado o erro de classificação desse novo modelo e é feita uma terceira árvore para prever os resíduos revistos. Esse processo é repetido para um número especificado de iterações. As previsões do modelo do conjunto final são a soma ponderada das previsões feitas pelos modelos de árvore anteriores [19].

2.4.2 Support Vector Machines

SVM é um algoritmo supervisionado, que pode ser usado em classificação e regressão. Em modos gerais, consiste em encontrar um hiperplano, numa dimensão k, que tenha a margem máxima, ou seja, a distância máxima entre os pontos de dados das duas classes. A maximização da distância da margem fornece algum reforço para que os pontos de dados futuros possam ser classificados com mais confiança [20].

Na figura 2.1 é possível visualizar alguns dos hiperplanos possíveis para separar as duas classes numa dimensão 2D. Na figura 2.2 está representado o hiperplano ótimo, de forma a maximizar a separação entre as duas classes, isto é, ter as margens máximas entre o hiperplano e as classes.

(28)

Conceitos Prévios

Figura 2.1: Hiperplanos possíveis [20]. Figura 2.2: Hiperplano ótimo [20].

2.4.3 Naive Bayes

NB é uma modelo probabilístico de aprendizagem computacional usado para tarefas de classificação, sendo o seu cerne baseado no teorema de Bayes [21].

P (A | B) = P (B | A) P (A)

P (B) (2.1)

Em termos gerais, usando o teorema de Bayes representado pela equação 2.1, é possível encontrar a probabilidade de A acontecer, dado que B ocorreu, sendo B a evidência e A a hipótese. Posto isto, os recursos que entram no modelo são independentes, ou seja, alterar o valor de um recurso, não influencia diretamente ou altera o valor de qualquer um dos outros recursos usados no algoritmo.

Por ser um modelo probabilístico, o algoritmo pode ser facilmente codificado e as previsões feitas muito rapidamente. Por esse motivo, é facilmente escalável e é um algoritmo bastante usado em aplicações com a necessidade de respostas quase instantâneas às solicitações do utilizador.

2.4.4 Árvores de Decisão

Em geral, as árvores de decisão são construídas por meio de uma abordagem algorítmica que identifica maneiras de dividir um conjunto de dados com base em diferentes condições. É um dos métodos mais amplamente utilizados e práticos de aprendizagem supervisionada. As árvores de decisão são um método de aprendizagem supervisionada não paramétrico usado para tarefas de classificação e regressão. O objetivo é criar um modelo que prediga o valor de uma variável de destino, aprendendo regras simples de decisão inferidas a partir dos dados fornecidos [22].

As regras de decisão geralmente estão na forma de instruções if-then-else. Quanto mais profunda a árvore, mais complexas são as regras que ajustam o modelo.

(29)

Capítulo 2

Figura 2.3: Árvore de decisão para o conceito Play Ténis [22]

Na figura 2.3 está representado uma árvore de decisão capaz de decidir através de umas dadas condições meteorológicas se é possível ou não a realização de um jogo de ténis. Este problema é denominado ”Play Tennis”, originalmente proposto por Tom Mitchell no seu famoso livro ”Machine learning” [23].

Ao analisar a figura 2.3 é possível visualizar que cada nó representa um atributo ou recurso, e que a ramificação de cada nó representa o resultado desse nó. Finalmente, são as folhas da árvore onde a decisão final é tomada.

Se os recursos forem contínuos, os nós internos podem testar o valor do mesmo em relação a um limite. Um exemplo disso é a humidade em que a condição em vez de ser classificada em alta ou baixa, pode ser substituída por maior ou menor do que 75% de humidade [22]. Esta árvore de decisão foi obtida aplicando aos dados os conceitos de entropy and infor-mation gain. Os dados utilizados consistem em 14 jogos consecutivos, em que cada um contém a informação da realização do jogo e as respetivas condições meteorológicas [23].

2.4.5 Random Forest

O algoritmo RF, como o próprio nome indica, consiste num grande número de árvores de decisão individuais que funcionam como um conjunto. Cada árvore individual faz uma previsão de uma classe, e a classe que obtiver mais votos torna-se a previsão final [24].

Figura 2.4: Representação de um modelo RF [24].

(30)

Conceitos Prévios Na figura 2.4 encontra-se um exemplo de RF de forma a melhorar a sua compreensão. Neste exemplo existem 9 árvores, e cada uma delas é responsável por dar uma previsão. Como 6 das nove árvores deram previsão 1 contra as 3 árvores que deram previsão de 0, a previsão final deste modelo é 1.

A baixa correlação entre as árvores é a chave do sucesso deste algoritmo, pois podem produzir previsões em conjunto mais precisas do que as previsões individuais. A razão para esse efeito é que o conjunto das árvores protege-se de erros individuais. Enquanto algumas árvores podem estar erradas, muitas outras estão certas, então, como um grupo, as árvores podem-se mover na direção correta [24].

2.4.6 k-Nearest Neighbors

O algoritmo KNN é um algoritmo supervisionado que pressupõe que objetos semelhantes existem nas proximidades [25].

Figura 2.5: Representação de um modelo KNN [25].

Ao observar a figura 2.5 podemos visualizar que na maioria das vezes, pontos de dados semelhantes estão próximos um do outro. O algoritmo KNN depende da veracidade dessa premissa para que o algoritmo seja útil. Posto isto, o KNN recorre à matemática para calcular a distância entre os pontos de um gráfico [25].

Existem diversas formas de calcular a distância entre pontos, dependendo do problema que se pretende resolver. No entanto, a distância em linha reta (também chamada de distância euclidiana) é uma das escolhas mais populares [25].

2.4.7 Redes Neuronais

Uma RN é uma rede com uma ou múltiplas camadas de neurónios que são usadas para fazer classificações, previsões, entre outros [26].

Na figura 2.6 está representado um diagrama de uma RN simples. Nela é possível ver a representação do conjunto de entradas (Input ) responsável por fazer a ligação entre o input e a camada oculta (Hidden), uma camadas oculta (Hidden) constituída por quatro neurónios, e por fim, uma camada de saída (Output ) com dois neurónios.

(31)

Capítulo 2

Figura 2.6: Diagrama de uma Rede Neuronal [27].

As setas que conectam os pontos mostram como todos os neurónios estão interligados e como os dados transitam da camada de entrada até a camada de saída.

Essas conexões são compostas por pesos, de forma a poder ativar ou não o neurónio a que está ligado, dependendo da sua função de ativação.

Ao longo do treino da RN os pesos das conexões são ajustados de forma a minimizar a função de custo, ou seja, minimizar o erro das previsões da rede.

2.4.7.1 Long Short-Term Memory

Dentro das redes neuronais existem diversos tipos, sendo um desses tipos a LSTM. Este tipo especial de rede neural é recorrente, pois é capaz de aprender conexões de longo prazo. Dessa maneira, ela tem um bom poder de previsão e funciona muito bem em uma variada gama de problemas, sendo amplamente usada atualmente.

Inicialmente, é importante definir os dois tipos de memória existentes nas redes neuronais, sendo elas [28]:

• Memória de curto prazo: atua no momento em que a informação está a ser adquirida, retém essa informação por alguns segundos e, então, pode ser guardada por períodos mais longos, ou ser descartada.

• Memória de longo prazo: retém de forma definitiva a informação, permitindo a sua recuperação ou invocação. Consiste na concatenação (em série) de sucessivos blocos de memoria de curto prazo.

No caso de uma rede neuronal recorrente, a única informação passada de um instante de tempo para o próximo é a saída h, também chamada de hidden state. Essa saída corresponde a uma memória de curto prazo. No caso de uma LSTM, é necessária a adição de uma memória de longo prazo através da concatenação de vários blocos de memória de curto prazo [28].

A parte crucial desta rede consiste em entender como uma memória deve influenciar a outra, ou seja, como a rede decide quais partes da memória de curto prazo devem ser lembradas e como a memória de longo prazo deve afetar a análise dos dados [28].

(32)

Conceitos Prévios De modo a fazer tais decisões são utilizadas 3 gates [28]:

• Forget gate: decide que partes do cell state continuam importantes.

• Remember gate: decide que informações da memória de curto prazo devem ser adicionadas ao cell state.

• Output gate: decide que partes do cell state são importantes no instante atual para gerar o output.

Figura 2.7: Segmento de um rede LSTM composta por 3 blocos em serie [28]. Na figura 2.7 está representado um segmento de uma rede LSTM composta por 3 blocos em série. Cada bloco é responsável por atualizar a informação recebida do anterior e passar a informação atualizada ao seguinte. A cada um desses bloco está associado um instante de tempo t.

Na figura 2.7 é possível observar duas linhas principais. A de cima (C), em laranja, é o estado do bloco responsável por armazenar o cell state (memória de longo prazo). A de baixo (h), correspondente à memória de curto prazo, onde o bloco é atualizado com o processamento da saída h(t-1) (hidden state) e da entrada x(t). Entre essas linhas, estão localizadas as 3 gates que controlam o armazenamento de informação na memória de longo prazo [28].

A forget gate é responsável por determinar que partes do cell state são importantes e quais devem ser esquecidas. Os vetores h e x são passados por uma função sigmóide, dando um vetor f que é multiplicado pelo cell state [28].

Posteriormente, é determinado quais são os novos dados da memória de curto prazo que devem ser armazenadas no cell state, por meio da input gate. Para isso, são realizados o cálculo de um vetor de ativações C+, que contém os novos dados e um vetor i que determina o quão importante cada informação é [28].

O último passo consiste em utilizar o cell state para calcular a saída h da rede. Posto isto, primeiramente, passa-se o estado C por uma função de ativação tanh. Em seguida, a memória de curto prazo é utilizada para determinar que partes dessa saída são realmente relevantes nesse instante (output gate) [28].

2.4.8 Otimização de Hiperparâmetros

Existem diversos algoritmos com o objetivo de facilitar a otimização de parâmetros de um modelos de aprendizagem computacional. Nesta secção serão estudados os seguintes três algoritmos [29]:

(33)

Capítulo 2

• Grid Search • Random Search

• Bayesian Optimization

No Grid Search é escolhido um conjunto de valores para cada parâmetro. Posto isso, o algoritmo testa todas as combinações possíveis [29]. Um dos principais problemas deste algoritmo é o elevado tempo de execução, pelo facto de necessitar de testar todas as com-binações.

Semelhante ao Grid Search, no Random Search também é necessário escolher um con-junto de valores para cada parâmetro porém, neste algoritmo, são testadas somente algumas configurações de hiperparâmetros seleccionados aleatoriamente [29]. A vantagem deste al-goritmo em relação ao Grid Search é o reduzido tempo de execução, dado que não são testadas todas as configurações possíveis. Por outro lado, o facto das configurações serem selecionadas randomicamente, faz com que a solução ótima possa não ser encontrada. Por último, com Bayesian Optimization é definido um intervalo de valores para cada parâmetro e uma função objetivo. O objetivo final é encontrar os valores para cada parâ-metro de forma a minimizar o loss da função objetivo [29]. Quando comparado com os dois últimos algoritmos, o tempo de execução do Bayesian Optimization é bastante menor. Este algoritmo permite também uma melhor otimização pelo facto de ser definido um intervalo e não um conjunto de valores, aumentando assim o espaço de procura.

(34)

Capítulo 3

Estado da Arte

Neste capítulo, serão descritas inúmeras plataformas web existentes capazes de fazer a previsão do valor e fiabilidade de automóveis, de modo a perceber o que já foi feito e o que pode ser melhorado.

Alguns exemplos de plataformas web que utilizam análises estatísticas para prever o valor de um determinado automóvel são a Kelley Blue Book [30], volantesic [31], autouncle [32], entre outros. Estas plataformas também serão descritas com maior detalhe neste capítulo. Em relação ao cálculo da fiabilidade de um automóvel, irão ser abordados dois métodos, o Vehicle Dependability Study [33] e o Reliability index [34].

Posto isso, serão abordadas duas plataformas cuja função consiste em fornecer ao uti-lizador informações de um determinado automóvel através do seu Vehicle Identification Number (VIN). As plataformas a serem abordadas são denominadas por autoDNA [35] e VINCheckInfo [36].

Por fim, serão também abordadas técnicas de aprendizagem computacional na previsão do valor de um automóvel, de modo a entender quais as características dos automóveis mais utilizadas nessa abordagem, e quais os algoritmos mais comuns e que obtêm melhores resultados.

3.1

Plataformas Web Existentes

Neste capítulo, será feita uma análise das duas plataformas web existentes mais conheci-das e completas, capazes de prever o valor de automóveis. Serão também descritas duas plataformas que classificam os automóveis em relação à sua fiabilidade de modo a abordar os dois índices de fiabilidade mais utilizados.

3.1.1 Kelley Blue Book

Desde 1926, o Kelley Blue Book (KBB) [30] é um dos nomes mais confiáveis da indústria automobilística.

Na sua plataforma web é possível consultar o preço de praticamente todos os automóveis existentes novos ou usados, a sua compra e venda, comparar dois deles, e ainda encontrar notícias e listas top 10 para se manter informado sobre o mundo automóvel.

(35)

Capítulo 3

Figura 3.1: Formulário para avaliar um automóvel na KBB [30].

Para obter uma avaliação de um automóvel, é necessário escolher diversas características do mesmo através do formulário da figura 3.1. Posto isso, é apresentado ao utilizador um intervalo de valores referentes ao automóvel avaliado.

Esses valores são determinados por um algoritmo criado pela KBB, que começa com uma análise completa de todos os dados recolhidos no próprio site, juntamente com tendências históricas, condições económicas atuais, desenvolvimentos do setor, sazonalidade e localiza-ção. Posto isto, os valores resultantes refletem a representação mais atual de um mercado em mudança.

A localização pode ser escolhida na última opção do formulário da figura 3.1, sendo uma vantagem da plataforma, dado que os preços dos automóveis variam significativamente com o local onde se encontram.

Na figura 3.2 podemos observar um exemplo da classificação de um automóvel na plata-forma KBB. Com esta classificação é disponibilizado um intervalo de valores que o auto-móvel pode ter e o valor tipicamente listado nos anúncios.

Em Portugal, a Volantesic [31] iniciou uma parceria com o KBB, mantendo praticamente todas as características, mudando apenas o visual.

Uma desvantagem destas plataformas, é o facto de os dados usados para a avaliação serem os anúncios das próprias plataformas, não havendo assim uma diversificação do mercado, podendo induzir o utilizador em erro com uma má avaliação.

3.1.2 Autouncle

A Autouncle [32] consiste numa plataforma web focada na compra e venda de automóveis. Porém, para facilitar os utilizadores na hora de escolher um valor na venda do seu auto-móvel, a Autouncle desenvolveu uma ferramenta para estimar um valor do automóvel a ser vendido.

(36)

Estado da Arte

Figura 3.2: Resultado de uma avaliação na KBB [30] .

Essa ferramenta consiste numa comparação estatística entre o automóvel a ser avaliado e automóveis que são semelhantes em preço, ano, quilometragem e equipamentos, sendo comparados em média em 100 características diferentes em cada carro.

Figura 3.3: Formulário para avaliar um automóvel na Autouncle [32].

Depois de escolher as características do automóvel através do formulário presente na figura 3.3, é possível receber o resultado por email ou ver directamente na página.

(37)

Capítulo 3

Esse resultado consiste num ficheiro com as diferentes características do automóvel, um valor intermédio para o mesmo, e uma tabela com intervalos de valores classificados como super preço, bom preço, preço justo, preço elevado e caro, como podemos ver na figura 3.4 A Autouncle partilha com a KBB a desvantagem de usar somente os dados da própria plataforma.

3.1.3 Vehicle Dependability Study

Vehicle Dependability Study (VDS) [33] consiste num estudo feito pela Global Automotive at J.D. Power de modo a calcular a fiabilidade de um automóvel.

Esse estudo passa por calcular o número de avarias que ocorreram nos últimos 12 meses em 100 automóveis com 3 anos. Ou seja, no estudo de 2019, os automóveis a teste foram modelos de 2016.

Posto isto, uma pontuação mais baixa, reflete um menor número de problemas, logo uma maior fiabilidade do automóvel.

Como os automóveis testados possuem sempre 3 anos, isso faz com que os automóveis com idades diferentes tenham de ser classificados com base nessa idade, fazendo uma classificação errada, pois um automóvel com 10 anos não terá a mesma fiabilidade de um automóvel com 3 anos.

Figura 3.5: Ranking da VDS de 2019 [33].

Na figura 3.5 podemos consultar as primeiras marcas presentes no ranking de 2019 feito pela VDS, onde a Lexus encontra se em primeiro lugar com 106 de pontuação.

3.1.4 Índice de Fiabilidade

O índice de fiabilidade [34] é um estilo comercial da Warranty Direct, uma marca do BNP Paribas Cardif e tem como finalidade classificar a fiabilidade de um automóvel.

O valor do índice de fiabilidade é calculado através do número de vezes que um carro falha, 20

(38)

Estado da Arte do custo de repará-lo, da quantidade média de tempo que passa fora da estrada devido a reparos, da idade e da quilometragem média do automóvel.

De modo a manter a integridade do índice, são usados no mínimo 50 automóveis na reali-zação do cálculo do índice de fiabilidade.

Tal como no VDS, a melhor classificação é a classificação com o menor valor.

Figura 3.6: Formulário da plataforma reliabilityindex [34].

Uma plataforma web que usa o índice de fiabilidade como medida é a reliabilityindex, onde é possível fazer uma pesquisa pela marca e modelo de um automóvel com o preenchimento do formulário presente na figura 3.6.

Figura 3.7: Resultado da plataforma reliabilityindex [34].

Como resultado, a plataforma devolve o índice de fiabilidade e uma média do custo das reparações do automóvel, como se pode ver no exemplo da figura 3.7. É possível também encontrar uma tabela com a probabilidade de uma determinada peça ter um problema. Por outro lado, um problema existente nesta plataforma é a falta da possibilidade de escolha do ano do automóvel, sendo só possível escolher um intervalo de tempo demasiado grande para o mercado automóvel. No exemplo da figura 3.7, podemos verificar que o intervalo mais recente é o de 2003 até 2019.

(39)

Capítulo 3

3.1.5 AutoDNA e VINCheck

A AutoDNA [35] e a VINCheck [36] são plataformas online que permitem ao utilizador ter acesso a um relatório completo de um determinado automóvel através do seu VIN. Em termos gerais, as duas plataformas são semelhantes, sendo possível obter características do automóvel como marca, modelo e ano até informações mais detalhadas como uma lista de equipamentos disponíveis. É também possível obter o histórico de vendas, registo de acidentes e fotografias do automóvel.

Apesar das várias semelhanças referidas anteriormente, a AutoDNA destaca-se por duas razões. A primeira, é a possibilidade de acesso à contagem dos quilómetros do automóvel e a respetiva data em que foi registado esse valor, permitindo verificar se em algum momento esses valores foram adulterados ou não. A segunda, é o acesso a uma base de dados de carros roubados, onde é possível verificar se o automóvel em questão foi dado como roubado, de modo a evitar a compra de um automóvel furtado.

Por outro lado, a VINCkeck tem a vantagem de ser grátis, ao contrário da AutoDNA, em que só é possível obter o relatório depois de efetuar um pagamento com um valor entre os 10 e os 30 euros.

Dados estes factos, é possível concluir que o acesso a este tipo de informações pode ser muito vantajoso, principalmente na hora de comprar um automóvel usado, porém, ainda não é possível obter um histórico completo e detalhado sobre manutenções e avarias de um automóvel em particular, de modo a possibilitar uma melhor análise dos acontecimentos ocorridos durante a vida útil de um determinado automóvel.

3.2

Previsão do Valor de Automóveis com Aprendizagem

Com-putacional

Neste sub-capítulo, irão ser abordadas técnicas de aprendizagem computacional usadas para prever o valor de automóveis usados.

Serão abordados temas como os dados e algoritmos utilizados nas abordagem descritas, analisando os resultados de modo a perceber quais as melhores abordagens, e a entender o que pode ser feito para melhorar os mesmos.

Em [37], o autor utilizou cinco modelos de aprendizagem computacional de forma a ten-tar prever o valor de automóveis usados. Para isso, o autor utilizou um dataset público disponível no website kaggle [38].

Inicialmente, o autor de [37] começou por limpar os dados, com a remoção de automóveis repetidos, com valores inferiores a 100$ e superiores a 100.000$ e por último, descartando automóveis com quilometragem inferior a 10 milhas e superiores a 300.000 milhas. Com este processo, o dataset inicial de 1.500.000 de linhas passou para aproximadamente 400.000 linhas. Posto isto, foi feita uma análise exploratória onde foi descoberto que os compradores têm preferência por automóveis com transmissão automática e que a condição do veículo tem bastante impacto no preço. Através do recurso à estatística, o autor provou a forte correlação da quilometragem com o preço do automóvel. Por fim, foi feito label encoding e aplicado min max para normalizar os valores do dataset numa determinada escala. Com o tratamento dos dados concluído, o autor de [37] procedeu à realização dos testes de modo a perceber qual o modelo com os melhores resultados. Para a realização dos

(40)

Estado da Arte testes, o autor dividiu o dataset em duas partes, 80% para treino e 20% para teste, e fez a comparação dos resultados obtidos com o modelo Random Forest, Ridge Regression, Lasso, Knn e xgboost. Segundo o autor, o melhor resultado foi obtido com o uso de Random Forest, obtendo um erro médio absoluto de 2.123. Esse valor foi melhorado para 2048 através do cálculo da variable importances, seguido da cumulative importance. Posto isso foram escolhidas 7 features que representam 90% de cumulative importance, sendo elas o ano, quilometragem, marca, tipo de tração, combustível, fabricante e cilindros.

Em [39], o autor tem como foco principal a previsão de preços de automóveis através do uso de Random forest. Semelhante ao artigo referido anteriormente, o autor utilizou um dataset público disponível no Kaggle [38], que por sua vez foi gerado a partir de scraping de anúncios de automóveis anunciados no ebay alemão [40]. O dataset é constituído por 370.000 carros usados e foi feito label encoding, remoção de valores nulos e outliers. Depois dos dados tratados, o autor de [39] realizou os testes para validar o modelo. Para encontrar o melhor número de decision trees foi utilizado grid search, chegando ao valor de 500. Para o max number features o utilizador usou o número de features existentes

no dataset (10). Com a utilização de cross validation o autor chegou ao resultado de r2

próximo de 84% com este modelo.

Em [41], o autor tinha como objetivo a criação de um website onde fosse possível ao utilizador prever o valor do seu automóvel. Para cumprir tal objetivo, o autor começou por recolher dados em vários websites de venda de automóveis com o uso de scraping. Depois de normalizar os dados recolhidos dos diversos websites, o dataset ficou constituído por 7 features, ano, marca, modelo, combustível, transmissão, quilometragem e o preço. Posto isto, o autor de [41] dividiu o dataset em duas partes, 70% para treino e 30% para teste, e registou os resultados dos testes com 3 modelos, Gradient Boosting, SVM e Naive Bayes. Segundo o autor, o melhor resultado foi obtido com o modelo Gradient Boosting obtendo um erro médio absoluto de 5%. Apesar de ser um erro bastante baixo, ao longo do artigo não é feita referência à quantidade de dados utilizados, o que pode resultar em overfitting no caso do dataset utilizado ter uma baixa dimensão.

Semelhante ao artigo citado anteriormente, em [42], o autor começou por recolher dados de anúncios de veículos à venda online em diversos websites ao longo de um mês. Com este processo foram recolhidos somente 200 anúncios de carros com 10 features, tais como ano, fabricante, marca, cilindrada, cor, tipo, transmissão, quilometragem e preço.

Apesar do dataset ser bastante pequeno, a abordagem utilizada em [42] distingue-se de todos os artigos referidos anteriormente pelo facto de utilizar uma rede neuronal. A rede desenhada pelo autor é constituída por uma camada de input com 10 neurônios, uma camada escondida com 2 neurônios, e por fim, a camada de output com um neurónio. De modo a testar esta rede neuronal, o autor utilizou cross validation com K Fold de 10. Segundo o mesmo, o erro médio absoluto obtido foi menor que 10% à semelhança do que foi obtido com o uso de Linear Regression e SVM.

Contrariamente às abordagens referidas anteriormente, onde todas utilizaram regressão para prever o valor de um automóvel, em [43], o autor tentou utilizar classificação de modo a prever o intervalo de preço a que um automóvel se encontra.

Inicialmente o autor de [43] recolheu dados de anúncios de automóveis online, que depois de processados, possuíam 800 carros e um total de nove features. Posto isso, foram criadas 13 categorias baseados nos preços dos automóveis.

Referências

Documentos relacionados

No entanto, após 30 dias de armazenagem, o teor de fármaco nas suspensões decaiu para valores próximos a 50 % nas formulações que continham 3 mg/mL de diclofenaco e núcleo

Como irá trabalhar com JavaServer Faces voltado para um container compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse tutorial.. Ao baixar

Isso significa que Lima Barreto propõe a ressignificação do olhar lançado sobre o futebol, deixando transparecer sua crítica às ten- tativas de padronização cultural e

Os caçadores tinham estendido uma grossa corda ligada a uma rede, no caminho por onde o leão costumava passar, de maneira que, quando o leão tropeçou na corda, a rede caiu-- lhe em

Quero ir com o avô Markus buscar a Boneca-Mais-Linda-do-Mundo, quero andar de trenó, comer maçãs assadas e pão escuro com geleia (17) de framboesa (18).... – Porque é tão

Corograpliiu, Col de Estados de Geografia Humana e Regional; Instituto de A lta C ultura; Centro da Estudos Geográficos da Faculdade de Letras de Lisboa.. RODRIGUES,

Otto: Este filósofo e teólogo toma como base para sua definição de religião a experiência religiosa e introduz na discussão um conceito que muito vai influenciar a compreensão

A tabela a seguir resume as frequências em que os pacientes apresentaram pelo menos uma reação adversa não solicitada, foi registrada dentro de 28 dias após a vacinação de