Inference of socioeconomic indicators based on street images using deep learning
Abstract
Undergraduate thesis presented at the University of São Paulo. Abstract: Using street images extracted from Google Street View and demographic data from the 2010 IBGE Census, this study proposes a predictive model based on deep learning to be used as an estimator of socioeconomic indicators. In addition, it presents the intermediate experiments and the adjustments that were made to the methodology of the final experiment. via: pcs.usp.br
Full text
LETICIA MANCUZO DE ALMEIDA WILLIAN WERNER ANGELO DA COSTA INFERˆ ENCIA DE INDICADORES SOCIOECONˆ OMICOS COM BASE EM IMAGENS DE RUA UTILIZANDO DEEP LEARNING
LETICIA MANCUZO DE ALMEIDA WILLIAN WERNER ANGELO DA COSTA INFERˆ ENCIA DE INDICADORES SOCIOECONˆ OMICOS COM BASE EM IMAGENS DE RUA UTILIZANDO DEEP LEARNING Trabalho apresentado `a Escola Polit´ecnica da Universidade de S˜ao Paulo para obten¸c˜ao dos T´ıtulos, respectivamente, de Engenheira de Controle e Engenheiro de Computa¸c˜ao.
LETICIA MANCUZO DE ALMEIDA WILLIAN WERNER ANGELO DA COSTA INFERˆ ENCIA DE INDICADORES SOCIOECONˆ OMICOS COM BASE EM IMAGENS DE RUA UTILIZANDO DEEP LEARNING Trabalho apresentado `a Escola Polit´ecnica da Universidade de S˜ao Paulo para obten¸c˜ao dos T´ıtulos, respectivamente, de Engenheira de Controle e Engenheiro de Computa¸c˜ao. ´ Area de Concentra¸c˜ao: Engenharia de Controle e Engenharia de Computa¸c˜ao Orientador: Pedro Luiz Pizzigatti Corrˆea Co-orientador: Marina Jeaneth Machicao Justo
RESUMO Utilizando imagens de rua extra´ıdas do Google Street View e dados demogr´aficos do Censo IBGE 2010, esse estudo prop˜oe um modelo preditivo baseado em deep learning para ser usado como estimador de indicadores socio-econˆomicos. Al´em disso, apresenta-se os experimentos intermedi´arios e os ajustes que foram feitos `a metodologia do experimento final. Palavras-Chave –deep Learning,Big Data,Data Science.
LISTA DE FIGURAS 1 Sueletal.(2019) ................................ 12 2 Jeanetal.(2016)................................ 13 3 K-Fold...................................... 21 4 MatrizdeConfus˜ao............................... 21 5 Zoom no Google Maps CBK . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6 ArquiteturadaVGG16............................. 27 7 Arquitetura do modelo proposto . . . . . . . . . . . . . . . . . . . . . . . . 28 8 Heatmap dos deciles em Londres . . . . . . . . . . . . . . . . . . . . . . . 30 9 Exemplo de modo de extra¸c˜ao das imagens. Fonte: cria¸c˜ao pr´opria . . . . 33 10 Disponibilidade das Imagens do GSV no Vale do Ribeira. . . . . . . . . . . 34 11 Mapas dos munic´ıpios de Registro e Itara´ı . . . . . . . . . . . . . . . . . . 35 12 Vale do Ribeira - Distribui¸c˜ao dos Decils de Renda . . . . . . . . . . . . . 36 13 Contagem de regi˜oes com imagens por decil de Renda . . . . . . . . . . . . 37 14 Amostra das Imagens de cada decil . . . . . . . . . . . . . . . . . . . . . . 38 15 Mapas do Vale do Ribeira - Decils Reais e Preditos . . . . . . . . . . . . . 40 16 M´edia, desvio Padr˜ao e decil real de cada setor censit´ario . . . . . . . . . . 41 17 MatrizdeConfus˜ao............................... 41 18 M´etricas de Classifica¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 19 Metodologia de um projeto de Big Data ................... 47
LISTA DE TABELAS 1 Compara¸c˜ao de acur´acias entre o estudo original e a replica¸c˜ao feita. . . . . 29 2 Faixa de valores de renda per capita para cada decil. . . . . . . . . . . . . 36 3 Acur´acias experimento Vale do Ribeira. . . . . . . . . . . . . . . . . . . . . 39 4 Compara¸c˜ao de acur´acias. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
SUM´ ARIO Parte I: INTRODUC¸ ˜ AO 8 1 Introdu¸c˜ao 9 1.1 Motiva¸c˜ao.................................... 9 1.2 Objetivogeral.................................. 9 1.3 Objetivosespec´ıficos .............................. 9 2 Revis˜ao da Literatura 11 2.1 Suel et al. (2019). Measuring social, environmental and health inequalities using deep learning and street imagery [1] . . . . . . . . . . . . . . . . . . 11 2.2 Jean et al. (2016). Combining satellite imagery and machine learning to predictpoverty[2] ............................... 12 3 Aspectos Conceituais 14 3.1 MachineLearning................................ 14 3.1.1 Overfitting eUnderfitting ....................... 14 3.1.2 Oversampling eUndersampling .................... 15 3.2 ModelosdeTreinamento............................ 16 3.2.1 Rede Neural Artificial . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.1.1 Parˆametros .......................... 17 3.2.1.2 Hiperparˆametros . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.1.3 Algoritmo Backpropagation ................. 18 3.3 Deep Learning (Aprendizagem Profunda) . . . . . . . . . . . . . . . . . . . 18 3.4 TesteeValida¸c˜ao................................ 20 3.4.1 k-fold .................................. 20
3.4.2 MatrizdeConfus˜ao........................... 21 3.4.3 Acur´acia................................. 21 3.5 Linguagem e Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Parte II: EXPERIMENTOS 24 4 Experimento Inicial - Hello World 25 4.1 Aquisi¸c˜ao dos Dados Socioeconˆomicos . . . . . . . . . . . . . . . . . . . . . 25 4.2 Aquisi¸c˜ao das Imagens do Google Street View ................ 25 4.3 Extra¸c˜ao de Features dasImagens....................... 26 4.3.1 VGG16 eImageNet .......................... 27 4.4 ModeloeTreinamento ............................. 28 4.5 Resultados.................................... 28 4.6 Discuss˜oes.................................... 29 4.7 Principais Problemas na Replica¸c˜ao . . . . . . . . . . . . . . . . . . . . . . 31 5 Experimento Vale do Ribeira 32 5.1 Aquisi¸c˜ao das Imagens do Google Street View ................ 32 5.2 Aquisi¸c˜ao dos Dados Socioeconˆomicos . . . . . . . . . . . . . . . . . . . . . 34 5.3 Balanceamento dos decils de Renda . . . . . . . . . . . . . . . . . . . . . . 37 5.4 Extra¸c˜ao de Features dasImagens....................... 38 5.5 ModeloeTreinamento ............................. 38 5.6 Resultados.................................... 38 5.7 Compara¸c˜oes com o Experimento de Londres . . . . . . . . . . . . . . . . . 39 5.8 Discuss˜oes.................................... 42 5.9 Conclus˜oes.................................... 43 5.9.1 Considera¸c˜oes para um novo ciclo de Experimentos . . . . . . . . . 43 5.9.2 Principais problemas encontrados na execu¸c˜ao do experimento . . . 43
Referˆencias 44 Apˆendice A – Metodologia de um projeto de Big Data 47
14 3 ASPECTOS CONCEITUAIS 3.1 Machine Learning Machine Learning ´e a ciˆencia de programar computadores para que eles possam aprender atrav´es de dados. Tom Mitchell e Aur´elien G´eron, 1997, definiram como “Um programa de computador que tem a responsabilidade de aprender sobre experiˆencia E a respeito de uma tarefa T com uma performance P, se sua performance em T, como medido por P melhorar a experiˆencia E” [4]. 3.1.1 Overfitting eUnderfitting No caso do aprendizado supervisionado, atrav´es dos dados de treinamento a m´aquina realiza o ajuste do modelo, o model fit. Por´em quando esses dados n˜ao s˜ao suficientes, ou est˜ao desbalanceados (uma classe possui bem mais quantidade do que outra) a m´aquina acaba apresentando dificuldades em ajustar o modelo, ocorrendo Overfitting ou Underfitting. OOverfitting ´e quando o modelo consegue prever muito bem os dados de treinamento, por´em para os dados de teste essa performance cai consideravelmente. Ou seja, o modelo n˜ao consegue generalizar muito bem os casos. Esse tipo de erro pode ocorrer tanto pelo algoritmo em si, mas em geral ocorre pela qualidade dos dados ou pela falta deles, isso porque um dataset muito pequeno ou com muito ru´ıdo (dados que n˜ao possuem relevˆancia nenhuma no problema) leva o modelo a encontrar padr˜oes que funcionam bem para os dados de teste, por´em quando s˜ao levados novos exemplos o modelo n˜ao conseguir´a acertar. Para resolver esse problema ´e necess´ario fazer regulariza¸c˜oes, isto ´e, leves ajustes que permitem o modelo ter maior grau de liberdade e se ajustar melhor sobre os dados de treinamento. Essas regulariza¸c˜oes podem ser controladas por hiperparˆametros, que s˜ao parˆametros do algoritmo de aprendizado e n˜ao do modelo em si. O ajuste desses hiperparˆametros ´e um importante passo para a constru¸c˜ao de um modelo de Machine Learning, e identificar um valor adequado para esses parˆametros ´e um grande desafio,
15 visto que uma configura¸c˜ao ruim pode gerar o overfitting ou o underfitting. Caso sejam configurados n´umeros muito pequenos o risco do modelo continuar na situa¸c˜ao de overfitting se eleva. J´a no caso de se colocar valores muito altos para os hiperparˆametros, o modelo ficar´a muito linear e simplificado, o que, por um lado, eliminar´a de vez o risco de overfitting por´em aumentar´a a chance de ocorrer underfitting. OUnderfitting, como ´e poss´ıvel deduzir, ´e o contr´ario do overfitting, ou seja, ocorre quando o modelo final gerado ´e simples demais em compara¸c˜ao com a estrutura dos dados. O desafio, ent˜ao, ´e realizar o ajuste fino dos hiperparˆametros de forma a adequar o modelo dentro da estrutura de dados, evitando tanto o overfitting quanto o underfitting, aumentando a sua performance em dados reais ou de teste. 3.1.2 Oversampling eUndersampling Os modelos de machine learning s˜ao constru´ıdos, entre outros objetivos, para minimizar erros. Por´em em v´arios casos, quando estamos trabalhando com modelos de classifica¸c˜ao, observamos que a probabilidade de uma amostra aleat´oria em nosso dataset pertencer a uma determinada classe ´e bem maior que a outra. E com isso o algoritmo estar´a enviesado para generalizar classifica¸c˜oes posteriores. Assim, quando situa¸c˜oes como essa ocorrem, na etapa de prepara¸c˜ao dos dados precisamos usar certas t´ecnicas, chamadas de oversampling eundersampling. Ooversampling ´e quando replicamos os casos da classe com menos casos, at´e chegarmos ao valor, ou pr´oximo do valor, da classe com mais casos. Essa t´ecnica ´e bastante perigosa, pois pode levar muito r´apido o modelo ao overfitting. Assim recomenda-se usar t´ecnicas mais avan¸cadas de overfitting, como por exemplo: •Smote : O primeiro passo dessa t´ecnica ´e encontrar os vizinhos pr´oximos para as classes em minoria para cada amostra das classifica¸c˜oes. Em seguida, tra¸ca-se uma reta entre o ponto original e o vizinho para definir a localiza¸c˜ao da observa¸c˜ao da observa¸c˜ao gen´erica. •Adasyn : Essa t´ecnica ´e uma vers˜ao melhorada da t´ecnica smote. Ela faz inicialmente tudo o que o smote faz por´em depois de criar a amostra, ele adiciona valores aleat´orios pequenos aos pontos, tornando-os mais realistas. Em outras palavras, ao inv´es de toda a amostra ser linearmente correlacionada a origem, como no smote, com o adasyn os valores possuem um pouco mais de variˆancia entre eles, e com isso s˜ao mais dispersos.
16 Agora o Undersampling ´e quando reduzimos os casos da classe com mais casos at´e chegar no mesmo n´ıvel da classe com menos casos. Essa t´ecnica ´e s´o recomendada quando h´a grande abundˆancia de dados, pois quanto menos dados dispon´ıveis a chance do modelo n˜ao se ajustar corretamente aumenta consideravelmente, podendo ocorrer problemas de overfitting ou underfitting. Assim, como no oversampling o ideal ´e usar t´ecnicas mais avan¸cadas, como por exemplo: •Neighbourhood Cleaning Rule: Nessa t´ecnica aplica-se o algoritmo dos vizinhos pr´oximos (KNN k-nearest neighbors algorithm)e remove as observa¸c˜oes que n˜ao se enquadram. A cada itera¸c˜ao aumenta-se a quantidade de vizinhos pr´oximos no modelo. •AllKNN :Essa t´ecnica ´e bem parecida com a anterior, por´em nessa o foco ´e limpar os dados e n˜ao apenas em condes´alos. 3.2 Modelos de Treinamento 3.2.1 Rede Neural Artificial Redes Neurais Artificiais s˜ao t´ecnicas computacionais que apresentam um modelo matem´atico inspirado na estrutura neural de organismos inteligentes e que adquirem conhecimento atrav´es da experiˆencia. Uma grande rede neural artificial pode ter centenas ou milhares de unidades de processamento, cujo funcionamento ´e bastante simples. Essas unidades, geralmente s˜ao conectadas por canais de comunica¸c˜ao que est˜ao associados a determinado peso e passam por uma determinada fun¸c˜ao de ativa¸c˜ao. As unidades fazem opera¸c˜oes apenas sobre seus dados locais, que s˜ao entradas recebidas pelas suas conex˜oes. O comportamento inteligente de uma Rede Neural Artificial vem das intera¸c˜oes entre as unidades de processamento da rede. As redes neurais podem ser bastante diferentes entre si, por´em a sua estrutura b´asica segue como na Figura 11. O que vai diferenciar as redes neurais entre si e deix´a-las mais complexas s˜ao os parˆametros e hiperparˆametros. Os parˆametros s˜ao coeficientes do modelos, e s˜ao escolhidos pelo pr´oprio modelo. Isso quer dizer que o algoritmo, enquanto est´a aprendendo, otimiza certos coeficientes e escolhe os parˆametros que minimizar˜ao o erro. Assim a parte de escolha de parˆametros depender´a do modelo que est´a sendo utlizado e n˜ao com escolhas do programador de fato. J´a os hiperparˆametros, em contra-ponto, precisam ser escolhidos.
17 3.2.1.1 Parˆametros Como j´a mencionado, quem ir´a determinar os parˆametros finais do algoritmo ´e o pr´oprio modelo, por´em deve-se inicializar esses valores. Para uma inicializa¸c˜ao correta e que n˜ao ir´a atrapalhar posteriormente o algoritmo deve-se utilizar uma inicializa¸c˜ao com distribui¸c˜ao normal ou uniforme. A melhor ir´a depender de qual fun¸c˜ao de ativa¸c˜ao escolhida nos hiperparˆametros. 3.2.1.2 Hiperparˆametros •N´umero de Camadas Escondidas: A melhor abordagem para escolher o total de camadas escondidas em um rede ´e a manual, por tentativa e erro. Quanto menos camadas a rede tiver, mais r´apido ser´a o processamento e mais generalizada ela vai ser. Por´em, ela n˜ao pode ter camadas de menos, j´a que assim vai generalizar demais, acontecendo o underfitting. •Taxa de Aprendizagem:´ E a taxa com a qual o algoritmo ir´a aprender, ou seja, qu˜ao r´apido ele chegar´a no ponto de m´ınimo da fun¸c˜ao custo. O problema de uma taxa pequena ´e que a rede convergir´a bem lentamente e podemos cair no caso do ”Vanishing Gradiente”, isto ´e, quando a rede nunca chega ao ponto de m´ınimo. Por´em ao escolher uma taxa de aprendizagem muito grande, a chance de n˜ao encontrar o ponto de m´ınimo aumenta bastante. Assim, o ideal ´e uma taxa de aprendizagem n˜ao t˜ao baixa e n˜ao t˜ao alta. •Momento:´ E a t´ecnica usada durante a fase do algortimo backpropagation.Como dito em rela¸c˜ao `a taxa de aprendizado, os parˆametros s˜ao atualizados para que possam convergir para o m´ınimo da fun¸c˜ao custo. Por´em esse processo pode acabar ficando muito demorado e afetar a eficiˆencia do algoritmo. Portanto, uma solu¸c˜ao poss´ıvel ´e acompanhar as dire¸c˜oes anteriores (que s˜ao os gradientes da fun¸c˜ao custo em rela¸c˜ao aos pesos) e mantˆe-los como informa¸c˜oes embutidas, o momento. Com ele, aumenta-se a velocidade de convergˆencia n˜ao em termos de taxa de aprendizagem (quanto um peso ´e atualizado a cada vez), mas em termos de mem´oria embutida de recalibra¸c˜ao anterior (o algoritmo sabe que a dire¸c˜ao anterior desse peso estava, digamos, correta , e continuar´a diretamente nessa dire¸c˜ao durante a pr´oxima propaga¸c˜ao). •Fun¸c˜ao de Ativa¸c˜ao:´ E a fun¸c˜ao pela qual passa-se a soma ponderada, a fim de ter uma sa´ıda significativa, ou seja, como um vetor de probabilidade ou uma sa´ıda
18 0-1. As principais fun¸c˜oes de ativa¸c˜ao s˜ao Sigmoid (para classifica¸c˜ao multiclasse, uma variante desta fun¸c˜ao ´e usada, chamada fun¸c˜ao SoftMax: ela retorna como sa´ıda um vetor de probabilidade cuja soma ´e igual a um), Tanh e RELU. •Batch: Quando o dataset utilizado para treinar a rede cont´em muitos dados, pode resultar ineficiente alimentar sua rede com todos eles. Uma boa pr´atica ´e aliment´alo com amostras menores de seus dados, chamadas de batch, pois fazendo isso, toda vez que o algoritmo treinar, ele treinar´a em uma amostra de mesmo tamanho. •´ Epocas:´ E o total de vezes que o algoritmo ir´a treinar com o dataset 3.2.1.3 Algoritmo Backpropagation O algoritmo backpropagation ´e como as redes neurais artificias calculam o gradiente da fun¸c˜ao de custo. Ele ´e o algoritmo-chave que faz o treinamento de modelos profundos algo computacionalmente trat´avel. Para as redes neurais modernas, ele pode tornar o treinamento com gradiente descendente at´e dez milh˜oes de vezes mais r´apido, em rela¸c˜ao a uma implementa¸c˜ao ingˆenua. Essa ´e a diferen¸ca entre um modelo que leva algumas horas ou dias para treinar e e outro que poderia levar anos. Al´em de seu uso em Deep Learning, obackpropagation ´e uma poderosa ferramenta computacional em muitas outras ´areas, desde previs˜ao do tempo at´e a an´alise da estabilidade num´erica. Fundamentalmente, o backpropagation ´e uma t´ecnica para calcular derivadas rapidamente, utilizando o conceito de regra da cadeia. Simplificando, ap´os um ciclo inicial para frente entre as camadas da rede, o backpropagation realiza v´arios ciclos para tr´as (da camada de sa´ıda para a camada de entrada) enquanto ajusta os parˆametros do modelo (pesos e tendˆencias). 3.3 Deep Learning (Aprendizagem Profunda) No artigo de Bengio, Hinton e LeCun [5], ganhadores do prˆemio Alan Turing em 2018, aprofundam e explicam os conceitos mais importantes sobre deep learning. Deep learning ´e um tipo de machine learning que treina computadores para realizar tarefas como seres humanos, o que inclui reconhecimento de fala, identifica¸c˜ao de imagem e previs˜oes. Ao inv´es de organizar os dados para serem executados atrav´es de equa¸c˜oes predefinidas, o deep learning configura parˆametros b´asicos sobre os dados e treina o computador para aprender sozinho atrav´es do reconhecimento padr˜oes em v´arias camadas de processamento.
19 O m´etodo de deep learning permite os modelos computacionais a processarem v´arias camadas para conseguirem representar os dados com v´arios n´ıveis de abstra¸c˜ao. Esses m´etodos j´a ajudaram a melhorar drasticamente o reconhecimento de discursos e de objetos e em ´areas da medicina e da gen´etica. Al´em disso, a t´ecnica de deep learning, aliada a t´ecnica backpropagation que indica como a m´aquina deve mudar seus parˆametros internos para obter uma representa¸c˜ao da camada anterior na camada seguinte, conseguiu descobrir estruturas complexas em largos datasets de dados. As t´ecnicas de aprendizado de m´aquina convencionais eram limitadas na capacidade de extrair informa¸c˜oes da forma bruta dos dados, pois elas exigiam uma engenharia bem cuidadosa e uma consider´avel expertise. Por´em com o surgimento do Aprendizado Representativo, do qual a aprendizagem profunda ´e um exemplo que utiliza diversas camadas inteligentes para concebˆe-lo, surgiu a possibilidade de, atrav´es da alimenta¸c˜ao dos dados ao sistema, obter os parˆametros relevantes para a aplica¸c˜ao sem a necessidade de um especialista por tr´as da sele¸c˜ao. Em geral tais m´etodos partem da combina¸c˜ao de fun¸c˜oes simples e triviais para obter uma sele¸c˜ao complexa, agu¸cada e especializada em certa caracter´ıstica, isto ´e, a cada camada da rede que se percorre, uma pequena caracter´ıstica ´e analisada (bordas, tons de cores) e a cole¸c˜ao dessas an´alises permite conclus˜oes complexas (tipo de objeto, por exemplo). A aprendizagem profunda ´e parte de uma fam´ılia mais abrangente de m´etodos de aprendizado de m´aquina baseados na aprendizagem de representa¸c˜oes de dados. Uma observa¸c˜ao (por exemplo, uma imagem), pode ser representada de v´arias maneiras, tais como um vetor de valores de intensidade por pixel, ou de uma forma mais abstrata como um conjunto de arestas, regi˜oes com um formato particular, etc. Algumas representa¸c˜oes s˜ao melhores do que outras para simplificar a tarefa de aprendizagem (por exemplo, reconhecimento facial ou reconhecimento de express˜oes faciais). Uma das promessas da aprendizagem profunda ´e a substitui¸c˜ao de caracter´ısticas feitas manualmente por algoritmos eficientes para a aprendizagem de caracter´ısticas supervisionada ou semi-supervisionada e extra¸c˜ao hier´arquica de caracter´ısticas. A pesquisa nesta ´area tenta fazer representa¸c˜oes melhores e criar modelos para aprender essas representa¸c˜oes a partir de dados n˜ao rotulados em grande escala. Algumas das representa¸c˜oes s˜ao inspiradas pelos avan¸cos da neurociˆencia e s˜ao vagamente baseadas na interpreta¸c˜ao do processamento de informa¸c˜oes e padr˜oes de comunica¸c˜ao em um sistema nervoso, tais como codifica¸c˜ao neural que tenta definir uma rela¸c˜ao entre v´arios est´ımulos e as respostas neuronais associados no c´erebro.
20 V´arias arquiteturas de aprendizagem profunda, tais como redes neurais profundas, redes neurais profundas convolucionais, redes de cren¸cas profundas e redes neurais recorrentes tˆem sido aplicadas em ´areas como vis˜ao computacional, reconhecimento autom´atico de fala, processamento de linguagem natural, reconhecimento de ´audio e bioinform´atica, onde elas tˆem se mostrado capazes de produzir resultados do estado-da-arte em v´arias tarefas. 3.4 Teste e Valida¸c˜ao Para validar o modelo normalmente divide-se os dados em dois datasets distintos, um de treino e um de teste. Isso ´e importante para saber como o modelo se comporta com uma amostra que nunca havia visto antes. Suponha, por exemplo, que simplesmente usemos todos os dados dispon´ıveis para treinar o modelo, e esses mesmos dados para verificar a taxa de acerto do modelo. Dependendo da complexidade do modelo, ele pode simplesmente armazenar cada um dos exemplos vistos no conjunto de treino, e apresentar uma taxa de acerto de 100% sem que, no entanto, tenha conseguido generalizar qualquer conhecimento. Quando novas amostras surgirem, ele pode errar completamente. Para garantir que isso n˜ao aconte¸ca, separamos sempre uma amostra de dados com os quais o modelo nunca teve contato, o chamado conjunto de teste. Uma vez que o modelo foi treinado, usamos o conjunto de teste para verificar a taxa de acerto do modelo e, se for boa, significa que o modelo conseguiu generalizar o conhecimento obtido no conjunto de treino para novos dados. Uma divis˜ao t´ıpica ´e de 80% dos dados dispon´ıveis para o conjunto de treino e 20% para o conjunto de teste. 3.4.1 k-fold Outra t´ecnica comumente utilizada para valida¸c˜ao ´e a de valida¸c˜ao cruzada com kfold que permite continuar utilizando uma grande quantidade de dados e ao mesmo tempo gera boa quantidade de dados para teste do modelo. O seu funcionamento ´e baseado na cria¸c˜ao de ksubsets, e para cada treinamento do modelo um dos subsets ´e utilizado como conjunto de teste e os outros k−1subsets s˜ao utilizados como conjunto de treino. No final a estimativa de erro do modelo ´e gerada atrav´es da m´edia dos erros de todos esses testes realizados. Esse tipo de valida¸c˜ao ´e muito ´util, pois a permuta¸c˜ao dos dados de teste com os dados de treinamento tende a aumentar a efic´acia do modelo.
21 Figura 3: K-Fold. Fonte: Stats Stackexchange [6] 3.4.2 Matriz de Confus˜ao Como pode ser visto na Figura 4, em uma matriz de confus˜ao as colunas representam as classes verdadeiras a qual os elementos pertencem e as linhas correspondem `as classes previstas pelo modelo. Assim o elemento aij corresponde ao total de predi¸c˜oes que o modelo fez para a classe imas que eram na verdade da classe j. Dessa forma, todos os elementos akk correspondem ao total de predi¸c˜oes corretas para a classe k. Uma propriedade interessante da matriz de confus˜ao Figura 4: Matriz de Confus˜ao. Fonte: LAPiX - UFSC [7]. 3.4.3 Acur´acia Indica uma performance geral do modelo. Dentre todas as classifica¸c˜oes, quantas o modelo classificou corretamente. Utilizando a matriz da Figura 4 como referˆencia temos:
22 Acur´acia = n X k=1 xkk n.(3.1) 3.5 Linguagem e Bibliotecas Para o desenvolvimento de aplica¸c˜oes de ciˆencia de dados a linguagem de programa¸c˜ao Python tem se destacado por sua facilidade de escrita, muito em fun¸c˜ao de ter tipagem forte e dinˆamica. A tipagem forte para uma aplica¸c˜ao em dados ´e uma caracter´ıstica importante, pois n˜ao permite que sejam realizadas opera¸c˜oes com vari´aveis totalmente diferentes, o que muito provavelmente n˜ao faria sentido em uma an´alise estat´ıstica. Ao mesmo tempo, a tipagem dinˆamica permite a concentra¸c˜ao do desenvolvedor no projeto propriamente dito ao inv´es da sintaxe e caracter´ısticas da linguagem. Al´em disso, algumas ferramentas surgiram como o Jupyter Notebook que permite a r´apida visualiza¸c˜ao e itera¸c˜ao com os dados. Dentre os principais projetos e bibliotecas do Python, algumas possuem maior destaque: •Scikit-Learn: Biblioteca que possui uma s´erie de modelos e m´etodos de avalia¸c˜ao de performance j´a implementados e prontos para o uso. ´ E uma das bibliotecas de c´odigo aberto mais importantes na comunidade de desenvolvimento, estando em constante processo de melhoria e com algoritmos com documenta¸c˜oes completas e organizadas, permitindo o r´apido avan¸co em projetos de inteligˆencia artificial. •Jupyter Notebook: Ferramenta interativa que permite um ambiente de desenvolvimento via navegador, sendo importante para explora¸c˜ao anal´ıtica de dados e facilidade para cria¸c˜ao de projetos documentados, com c´odigo, texto e imagens, facilitando sua dissemina¸c˜ao com integrantes de um projeto. •NumPy:´ E um dos principais pacotes para projetos de ciˆencia de dados. Ele cont´em ferramentas de randomiza¸c˜ao de dados, permite trabalhar com vetores multidimensionais, al´em de possuir v´arias fun¸c˜oes matem´aticas. •SciPy:´ E uma cole¸c˜ao de fun¸c˜oes de ciˆencias de dados, permitindo opera¸c˜oes avan¸cadas de ´algebra linear, distribui¸c˜oes estat´ısticas, sendo um dos principais componentes do Scikit-Learn. •Matplotlib:´ E uma das bibliotecas b´asicas que permite a cria¸c˜ao de gr´aficos. Apesar de parecer secund´ario, a an´alise de dados de forma visual ´e uma das mais impor-
23 tantes ferramentas em projetos de Machine Learning, pois permite a identifca¸c˜ao de insights que n˜ao seriam percebidos apenas observando os n´umeros em sua forma bruta. •Pandas:´ E uma biblioteca para an´alise de dados em forma de tabelas, similar ao excel. O pacote permite modificar e trabalhar com os dados de maneira dinˆamica, com queries similares com as de SQL, al´em de permitir a ingest˜ao de dados provenientes de bases SQL, excel e CSV’s. •GeoPandas:´ E uma biblioteca open source para facilitar o trabalho com dados geoespaciais em python. O GeoPandas estende os tipos de dados usados pelos pandas para permitir opera¸c˜oes espaciais em tipos geom´etricos e plotar mapas espaciais. •Bokeh:´ E uma biblioteca de visualiza¸c˜ao interativa para navegadores modernos. Ele fornece uma constru¸c˜ao elegante e concisa de gr´aficos vers´ateis e oferece interatividade de alto desempenho em grandes conjuntos de dados ou streaming. •Seaborn:´ E uma biblioteca de visualiza¸c˜ao de dados Python baseada no matplotlib. Ele fornece uma interface de alto n´ıvel para desenhar gr´aficos estat´ısticos atraentes e informativos.
30 (a) (b) (c) (d) (e) (f) Figura 8: Heatmap com os deciles reais e previstos para cada uma das vari´aveis analisadas a)General Health - real, b)General Health previsto, c)Occupancy rating - real, d)Occupancy rating - previsto, e)Unemployment - real, f)Unemployment - previsto. Fonte: Suel et al. (2019) [1].
31 4.7 Principais Problemas na Replica¸c˜ao •Imagens: como n˜ao foi poss´ıvel obter as imagens diretamente da Google Street View Static API, o m´etodo escolhido acaba distorcendo levemente as imagens. Isso pode ter trazido um certo preju´ızo para o modelo de classifica¸c˜ao; •Batch Size: por uma quest˜ao de recursos computacionais e de tempo, o BATCH SIZE foi aumentado e o n´umero de ´epocas diminu´ıdo, diminuindo a performance do modelo;
32 5 EXPERIMENTO VALE DO RIBEIRA No segundo ciclo de Data Science aplicou-se `a metodologia utilizada na replica¸c˜ao do artigo [1] para dados brasileiros, mais especificamente para regi˜ao do vale do Ribeira nos estados de S˜ao Paulo e Paran´a. 5.1 Aquisi¸c˜ao das Imagens do Google Street View As imagens que utilizou-se s˜ao imagens de ruas obtidas pelo Google Street View. Para aquisi¸c˜ao destas, inicialmente programou-se um crawler para obter uma lista de todas as ruas dos 31 munic´ıpios do Vale do Ribeira. E com isso, conseguiu-se chamar a API do Google Street View que fornecia as coordenadas geoespaciais e as imagens de todas as localiza¸c˜oes encontradas. E com base na malha de setores censit´arios, identificou-se `a qual setor a rua pertencia e, ent˜ao, conseguiu-se associar cada imagem a um setor censit´ario (unidade territorial estabelecida para fins de controle cadastral, formado por ´area cont´ınua, situada em um ´unico quadro urbano ou rural, com dimens˜ao e n´umero de domic´ılios que permitam o levantamento por um recenseador). Por´em, durante o levantamento das imagens surgiram alguns problemas. Ao fazer esse experimento, tivemos uma adapta¸c˜ao importante com rela¸c˜ao a [2]: as localidades eram buscadas por endere¸co e num primeiro momento fizemos exatamente dessa forma. Entretanto, tivemos um problema ao encontrar muito poucas imagens, e com uma regi˜ao de abrangˆencia bem limitada do Vale do Ribeira. Isso se deve a dois motivos principais: •por ser uma regi˜ao pouco urbanizada, h´a relativamente poucas ruas; •em algumas regi˜oes h´a a predominˆancia de estradas e, ao se buscar pela localidade, a API do Google Street View retorna apenas um ponto, sendo que a estrada tem potencial de retornar muitos pontos em regi˜oes diferentes de sua extens˜ao. A solu¸c˜ao para essa quest˜ao foi, em vez de buscar por endere¸cos de rua, passamos a buscar diretamente por latitude e longitude. Para cada setor censit´ario, obteve-se os
33 valores de latitude e longitude m´ınimo e m´aximos desse setor, i.e., o bounding box do setor, e com ele montou-se uma grade de 20x20 pontos. Para cada ponto fez-se uma busca pela latitude e longitude correspondente. Dessa forma, garantiu-se que percorrese toda a regi˜ao do setor censit´ario, na busca por imagens. A quantidade de pontos na grade (20x20) foi determinada a partir da distˆancia m´axima dde identifica¸c˜ao de um ponto na API do Google Street View. Isso significa que se existe um ponto Pcom imagens dispon´ıveis, a API retorna esse ponto se a regi˜ao pesquisada estiver num raio de no m´aximo d. Dividindo o tamanho m´edio dos setores censit´arios por d, obtivemos um valor pr´oximo de 20. A Figura abaixo exemplifica esse modo de extra¸c˜ao de imagens, para o munic´ıpio de Adrian´opolis. Na verdade fez-se esse procedimento para cada setor censit´ario, mas optou-se por mostrar a imagem do munic´ıpio para ilustrar mais nitidamente a grade. Figura 9: Exemplo de modo de extra¸c˜ao das imagens. Fonte: cria¸c˜ao pr´opria Com esse procedimento, conseguiu-se aumentar consideravelmente tanto o n´umero de imagens total quanto a regi˜ao de abrangˆencia, isto ´e, a regi˜ao total com imagens. Mesmo assim, nem todas as regi˜oes do Vale do Ribeira possuem imagens no Google Street View. Isso se deve em parte aos ambientes muito pobres, que possuem pouca infraestrutura e dificultam o acesso do carro de fotografias. Outra quest˜ao importante ´e a existˆencia de algumas reservas ambientais, cujo acesso ´e restrito, o que dificultaria a presen¸ca de imagens. A Figura 27 mostra as regi˜oes com imagens dispon´ıveis no Google Street View. Al´em disso, a quantidade de imagens nos munic´ıpios ´e muito desbalanceada e muito concentrada em certos pontos do munic´ıpio, como podemos ver nas imagens da Figura 11:
34 Figura 10: Disponibilidade das Imagens do GSV no Vale do Ribeira. Fonte: cria¸c˜ao pr´opria 5.2 Aquisi¸c˜ao dos Dados Socioeconˆomicos Para treinar a rede neural precisamos de dados das respostas de cada setor censit´ario. No censo demogr´afico de 2010 disponibilizado pelo IBGE encontram-se v´arios indicadores sociais, por´em esse trabalho focar´a apenas no indicador de renda. Para este indicador usou-se o levantamento “Arquivo B´asico” dos conjuntos de Paran´a e S˜ao Paulo Interior, filtrando posteriormente apenas os munic´ıpios pertencentes ao vale do Ribeira, que s˜ao: ’Apia´ı’, ’Barra do Chap´eu’, ’Barra do Turvo’, ’Cajati’, ’Canan´eia’, ’Eldorado’, ’Iguape’, ’Ilha Comprida’, ’Iporanga’, ’Ita´oca’, ’Itapirapu˜a Paulista’, ’Itariri’, ’Jacupiranga’, ’Juqui´a’, ’Juquitiba’, ’Miracatu’, ’Pariquera-A¸cu’, ’Pedro de Toledo’, ’Registro’, ’Ribeira’, ’S˜ao Louren¸co da Serra’, ’Sete Barras’, ’Tapira´ı’, ’Adrian´opolis’, ’Bocai´uva do Sul’, ’Cerro Azul’, ’Doutor Ulysses’, ’Itaperu¸cu’, ’Rio Branco do Sul’, ’Tunas do Paran´a’. Para constru¸c˜ao de um indicador de renda utilizou-se como referˆencia o IDHM (´ Indice de Desenvolvimento Humano Municipal) Renda fornecido pelo Atlas Brasil, o qual calculava-se como ilustrado abaixo: IDHMR = ln(rendaPerCapita) −ln(valorMinimodeReferencia) ln(valorMaximodeReferencia) −ln(valorMinimodeReferencia) .(5.1) Calculou-se a renda per capita de cada setor censit´ario como ilustrado abaixo, devido `as limita¸c˜oes das informa¸c˜oes dispon´ıveis na granularidade de setor censit´ario:
35 (a) (b) Figura 11: Mapas dos munic´ıpios de Registro e Itara´ı. Fonte: cria¸c˜ao pr´opria Renda per Capita = (rendimentoMensalMedioPorDomic´ılio) ∗(totalDeDomicilios) totalDeMoradoresNosDomicilios . (5.2)
36 A partir da renda per capita, calculou-se decils e classificou-se os setores censit´arios de 1 (10% piores) a 10 (10% melhores). Na tabela abaixo tem-se a referˆencia da faixa dos valores de renda para cada decil: Tabela 2: Faixa de valores de renda per capita para cada decil. Decil Menor Valor Renda Per Capita Maior Valor Renda Per Capita 1 R$0.00 R$116.86 2 R$116.86 R$143.28 3 R$144.19 R$169.23 4 R$169.42 R$187.46 5 R$188.00 R$212.78 6 R$212.91 R$235.34 7 R$235.54 R$266.77 8 R$266.84 R$320.46 9 R$320.70 R$427.10 10 R$427.14 R$2500.00 Devido a essa abordagem n˜ao achou-se necess´ario a normaliza¸c˜ao utilizada pelo IDHMR com logaritmos e os valores de referˆencia. O mapeamento de decils encontra-se ilustrado na Figura 29, no qual quanto mais escura a cor, maior o decil: Figura 12: Vale do Ribeira - Distribui¸c˜ao dos Decils de Renda. Fonte: cria¸c˜ao pr´opria
37 5.3 Balanceamento dos decils de Renda Um fato interessante descoberto foi a rela¸c˜ao crescente que existe para os setores censit´arios entre o seu decil de renda e a quantidade de imagens presentes nesses. Isso significa que os setores censit´arios mais ricos possuem mais imagens, isto ´e, uma cobertura maior do Google Street View, do que os setores mais pobres. Isso se deve aos seguintes fatores: •H´a uma diferen¸ca muito grande entre ambientes urbanos e rurais, de forma que os ambientes urbanos possuem deciles maiores de renda; •Como o Google Street View extrai imagens a partir das ruas, ambientes urbanos possuem mais ruas em que as imagens podem ser extra´ıdas, enquanto ambientes rurais possuem menos ruas, predominantemente estradas. A Figura 30 mostra a distribui¸c˜ao da quantidade de localidades com imagens dispon´ıveis para cada decil de renda. Existe uma rela¸c˜ao quase de proporcionalidade entre o decil de renda e a quantidade de regi˜oes com imagens dispon´ıveis. Figura 13: Contagem de regi˜oes com imagens por decil de Renda. Fonte: cria¸c˜ao pr´opria Isso atrapalharia bastante a valida¸c˜ao do modelo, uma vez que as classes estariam desbalanceadas. Dentre as solu¸c˜oes poss´ıveis para esse problema, optamos pelo undersampling da menor classe, para evitar o overfitting e ao mesmo tempo o desbalanceamento das classes.
38 5.4 Extra¸c˜ao de Features das Imagens Empregou-se a mesma metodologia explicada no item 4.3, por´em utlizando as imagens da regi˜ao do Vale do Ribeira. Ao final, como no experimento anterior, obteve-se o vetor de caracter´ısticas latentes das imagens. 5.5 Modelo e Treinamento Empregou-se a mesma metodologia explicada no item 4.4, com uma arquitetura bastante similar `a apresentada na Figura 7. 5.6 Resultados Devido ao undersmapling utilizado no treinamento, obteve-se como conjunto predizido apenas 156 c´odigos setoriais, 17% dos 914 que totalizam o Vale do Ribeira. Uma amostra das imagens utlizadas no treinamento referentes a cada decil est´a ilustrado na Figura 31: (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) Figura 14: Amostra das Imagens de cada decil, respectivamente do decil 1 ao 10. Fonte: cria¸c˜ao pr´opria A tabela 3 mostra as acur´acias de classifica¸c˜ao em deciles no conjunto de teste. A coluna ±0 representa o percentual de classes corretamente classificadas, a coluna ±1 o percentual de classes corretamente classificadas com uma margem de uma classe acima e
39 uma classe abaixo e a coluna ±2 o percentual de classes corretamente classificadas com uma margem de duas classes acima e duas classe abaixo. Tabela 3: Acur´acias experimento Vale do Ribeira. Caso Vale do Ribeira Margem ±0±1±2 Renda per Capita 0.373 0.516 0.660 A estrategia utilizada no treinamento, como j´a mencionado, foi a de valida¸c˜ao cruzada. E com isso, obteve-se 5 previs˜oes de cada setor censit´ario. Assim, o decil preditos ´e a m´edia dos 5 folds utilizados no treinamento. A Figura 32 compara os decils reais com os decils preditos. As marca¸c˜oes est˜ao exatamente no lugar das imagens utilizadas para prever o respectivo c´odigo setorial. Al´em disso, na Figura 33 tem-se a m´edia com o desvio padr˜ao e o decil real de cada setor censit´ario. A matriz de confus˜ao e as m´etricas de precis˜ao recall eF-score para cada decil est˜ao ilustradas nas figuras 34 e 35, respectivamente: 5.7 Compara¸c˜oes com o Experimento de Londres Como detalhado no item 5.1, a aquisi¸c˜ao de imagens do Vale do Ribeira pelo Google Street View foi bem mais complicada que as imagens de Londres, devido `a escassez de imagens da regi˜ao brasileira escolhida. Al´em disso, como podemos observar na Figura 27, as imagens dispon´ıveis do Vale do Ribeira estavam dispostas de maneira bastante irregular e concentrada em apenas alguns pontos. Diferentemente das imagens londrinas que eram bastante constantes e abundantes em todas as regi˜oes da cidade. Tais fatores influenciaram consideravelmente o resultado final do experimento no Vale do Ribeira, pois enquanto que no primeiro experimento utilizou-se mais de 520 mil imagens, no experimento brasileiro menos de 1.000 imagens foram utilizadas no modelo. Apesar de tudo, os resultados do experimento do Vale do Ribeira foram bastante similares `a replica¸c˜ao do experimento do artigo Suel et al. (2019) [1] e ao do pr´oprio artigo, como podemos ver na tabela 3, a compara¸c˜ao de acur´acias entre os resultados obtidos para renda per capita do Vale do Ribeira e para m´edia dos 3 indicadores utilizados no experimento de Londres. Analisando a tabela 4 podemos notar que o experimento do Vale do Ribeira obteve valores de acur´acia mais altos para a margem 0 do que o experimento de Londres, original
46 [41] Jason Brownlee. Supervised and Unsupervised Machine Learning Algorithms, 2020. [42] Pedro Luiz Pizzigatti Corrˆea. Conceitos de ciˆencia dos dados e big data, 2020. [43] Anukrati Mehta. An Ultimate Guide to Understanding Supervised Learning, 2019. [44] Ironhack. O que ´e machine learning?, 2019. [45] CHI Software. Supervised vs. Unsupervised Machine Learning, 2019. [46] Ironhack. Introduction to Reinforcement Learning : In 2(or a bit more) Minutes, 2019. [47] Haibo He, Sheng Chen, Hong Man, Sachi Desai, and Shafik Quoraishee. Imbalanced learning for pattern recognition: an empirical study. 2010. [48] K. Agustianto and P. Destarianto. Imbalance data handling using neighborhood cleaning rule (ncl) sampling method for precision student modeling. pages 86–89, 2019. [49] Vinicius. REDES NEURAIS ARTIFICIAIS, 2017. [50] Andr´e Pacheco. Introdu¸c˜ao a Redes Neurais Artificiais, 2015. [51] JEREMY JORDAN. Setting the learning rate of your neural network., 2018. [52] Shruti Jadon. Introduction to Different Activation Functions for Deep Learning, 2018. [53] Thomas Wood. What is Backpropagation? , 2015. [54] ED SPERLING. Deep Learning Spreads, 2018. [55] scikit-learn developers. Cross-validation: evaluating estimator performance, 2020.
47 APˆ ENDICE A – METODOLOGIA DE UM PROJETO DE BIG DATA Figura 19: Metodologia de um projeto de Big Data. Fonte: Pedro Pizzigatti [42]