Você está na página 1de 195

Machine learning I –

Classificação e Regressão
Prof. Rodrigo Ramos Nogueira

Indaial – 2020
1a Edição
Copyright © UNIASSELVI 2020

Elaboração:
Prof. Rodrigo Ramos Nogueira

Revisão, Diagramação e Produção:


Centro Universitário Leonardo da Vinci – UNIASSELVI

Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri


UNIASSELVI – Indaial.

N778m

Nogueira, Rodrigo Ramos

Machine learning I - Classificação e regressão. / Rodrigo Ramos


Nogueira. – Indaial: UNIASSELVI, 2020.

186 p.; il.

ISBN 978-65-5663-320-6
ISBN Digital 978-65-5663-316-9

1. Machine learning. - Brasil. II. Centro Universitário Leonardo da


Vinci.

CDD 004

Impresso por:
Apresentação
Caro acadêmico! Seja bem-vindo ao Livro Didático Machine learning
I – Classificação e Regressão. Esta disciplina objetiva proporcionar uma
introdução aos conceitos fundamentais de Machine learning e aprofundar os
estudos sobre as tarefas de classificação e regressão.

Este material conta com recursos didáticos externos, por isso,


recomendamos fortemente que você realize todos os exemplos, explore
as bases de dados e pratique com os exercícios resolvidos, para um
aproveitamento excepcional da disciplina.

Nesse contexto, este livro didático está dividido em: Unidade 1, que
apresenta uma introdução ao aprendizado de máquina; Unidade 2, que
mostra a classificação das Machine learning e Unidade 3, que trata da regressão.

Destacamos também a importância de realizar as autoatividades,


que objetivam a fixação dos conceitos apresentados – lembrando que elas
não são opcionais. Em caso de dúvida durante a realização das atividades,
sugerimos que entre em contato com seu tutor externo ou com a tutoria do
Centro Universitário Leonardo Da Vinci (UNIASSELVI) – não continue as
atividades enquanto todas as dúvidas não tiverem sido sanadas.

Bom estudo! Sucesso na sua trajetória acadêmica e profissional!

Prof. Rodrigo Ramos Nogueira


NOTA

Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi-
dades em nosso material.

Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é


o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um
formato mais prático, que cabe na bolsa e facilita a leitura.

O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra-
mação no texto, aproveitando ao máximo o espaço da página, o que também contribui
para diminuir a extração de árvores para produção de folhas de papel, por exemplo.

Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente,


apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilida-
de de estudá-lo com versatilidade nas telas do celular, tablet ou computador.
 
Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assun-
to em questão.

Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.

Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de


Desempenho de Estudantes – ENADE.
 
Bons estudos!
LEMBRETE

Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela


um novo conhecimento.

Com o objetivo de enriquecer seu conhecimento, construímos, além do livro


que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você
terá contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complemen-
tares, entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento.

Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.

Conte conosco, estaremos juntos nesta caminhada!


Sumário
UNIDADE 1 — MACHINE LEARNING.............................................................................................. 1

TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING............................................................ 3


1 INTRODUÇÃO..................................................................................................................................... 3
2 ASPECTOS HISTÓRICOS DE MACHINE LEARNING................................................................ 5
3 DEFINIÇÃO DE CONCEITOS.......................................................................................................... 7
4 CARACTERÍSTICAS DE MACHINE LEARNING....................................................................... 11
RESUMO DO TÓPICO 1..................................................................................................................... 14
AUTOATIVIDADE............................................................................................................................... 15

TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM


MACHINE LEARNING................................................................................................ 19
1 INTRODUÇÃO................................................................................................................................... 19
2 LINGUAGEM DE PROGRAMAÇÃO ........................................................................................... 19
3 JUPYTER NOTEBOOK E GOOGLE COLAB RESEARCH........................................................ 21
4 GITHUB................................................................................................................................................ 24
5 DATASETS .......................................................................................................................................... 26
5.1 BANCOS DE DADOS E DATA WAREHOUSING................................................................... 27
5.2 ÁUDIO, IMAGEM E VÍDEO........................................................................................................ 27
5.3 ARQUIVOS DE TEXTOS.............................................................................................................. 28
5.4 DOCUMENTOS SEMIESTRUTURADOS.................................................................................. 29
5.5 KAGGLE......................................................................................................................................... 30
5.6 UCI MACHINE LEARNING REPOSITORY............................................................................... 30
RESUMO DO TÓPICO 2..................................................................................................................... 33
AUTOATIVIDADE............................................................................................................................... 34

TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING....................... 37


1 INTRODUÇÃO................................................................................................................................... 37
2 COLETA DE DADOS......................................................................................................................... 38
3 PREPARAÇÃO DOS DADOS.......................................................................................................... 38
4 ESCOLHA DO MODELO................................................................................................................. 39
5 TREINO E TESTE............................................................................................................................... 41
6 AVALIAÇÃO ....................................................................................................................................... 44
7 TUNING DE PARÂMETROS........................................................................................................... 44
8 PREDIÇÃO........................................................................................................................................... 45
LEITURA COMPLEMENTAR............................................................................................................. 46
RESUMO DO TÓPICO 3..................................................................................................................... 51
AUTOATIVIDADE............................................................................................................................... 52

REFERÊNCIAS....................................................................................................................................... 55
UNIDADE 2 — CLASSIFICAÇÃO.................................................................................................... 59

TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO......................................... 61


1 INTRODUÇÃO................................................................................................................................... 61
2 VISÃO GERAL DA CLASSIFICAÇÃO ........................................................................................ 61
3 CENÁRIOS DE CLASSIFICAÇÃO ................................................................................................ 63
4 FERRAMENTAS COMPLEMENTARES........................................................................................ 64
4.1 LISTAS ............................................................................................................................................ 65
4.2 NUMPY........................................................................................................................................... 66
4.3 ANACONDA ................................................................................................................................ 67
4.4 SCIPY............................................................................................................................................... 68
4.5 SCIKIT-LEARN............................................................................................................................... 69
5 MÉTRICAS DE AVALIAÇÃO PARA CLASSIFICAÇÃO........................................................... 69
RESUMO DO TÓPICO 1..................................................................................................................... 73
AUTOATIVIDADE............................................................................................................................... 74

TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA................... 77


1 INTRODUÇÃO................................................................................................................................... 77
2 MÉTODOS BASEADOS EM DISTÂNCIA................................................................................... 78
2.1 KNN................................................................................................................................................. 79
2.1.1 Implementação matemática do método ........................................................................... 80
2.2 IMPLEMENTAÇÃO COM SCIKIT-LEARN............................................................................... 89
2.3 CLASSIFICANDO O IRIS DATASET COM O KNN................................................................ 91
RESUMO DO TÓPICO 2..................................................................................................................... 95
AUTOATIVIDADE............................................................................................................................... 96

TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS


DE CLASSIFICAÇÃO.................................................................................................. 99
1 INTRODUÇÃO................................................................................................................................... 99
2 MÉTODOS PROBABILÍSTICOS.................................................................................................... 99
2.1 NAÏVE BAYES ............................................................................................................................... 99
2.1.1 Implementação matemática do método ......................................................................... 103
2.2 IMPLEMENTAÇÃO COM O SCIKIT-LEARN......................................................................... 107
2.3 CLASSIFICANDO O IRIS DATASET COM O NAÏVE BAYES............................................. 108
3 OUTROS CLASSIFICADORES..................................................................................................... 110
3.1 REGRESSÃO LINEAR ............................................................................................................... 110
3.2 REGRESSÃO LOGÍSTICA . ....................................................................................................... 111
3.3 MÁQUINA DE VETOR DE SUPORTE ................................................................................... 112
3.4 PERCEPTRON.............................................................................................................................. 113
LEITURA COMPLEMENTAR........................................................................................................... 115
RESUMO DO TÓPICO 3................................................................................................................... 121
AUTOATIVIDADE............................................................................................................................. 122

REFERÊNCIAS..................................................................................................................................... 123

UNIDADE 3 — REGRESSÃO........................................................................................................... 127

TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO................................................ 129


1 INTRODUÇÃO................................................................................................................................. 129
2 VISÃO GERAL DA REGRESSÃO................................................................................................ 129
3 MÉTRICAS ........................................................................................................................................ 132
3.1 ERRO QUADRÁTICO MÉDIO ................................................................................................ 132
3.2 ERRO ABSOLUTO MÉDIO........................................................................................................ 134
3.3 OVERFITTING E UNDERFITTING........................................................................................... 134
3.4 VALIDAÇÃO CRUZADA.......................................................................................................... 135
RESUMO DO TÓPICO 1................................................................................................................... 136
AUTOATIVIDADE............................................................................................................................. 137

TÓPICO 2 — REGRESSÃO LINEAR.............................................................................................. 139


1 INTRODUÇÃO................................................................................................................................. 139
2 UTILIZANDO REGRESSÃO ........................................................................................................ 140
3 DERIVADAS...................................................................................................................................... 150
4 GRADIENTE DESCENDENTE .................................................................................................... 152
5 IMPLEMENTAÇÃO DA REGRESSÃO LINEAR....................................................................... 155
RESUMO DO TÓPICO 2................................................................................................................... 161
AUTOATIVIDADE............................................................................................................................. 162

TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO...................................................... 165


1 INTRODUÇÃO................................................................................................................................. 165
2 REGRESSÃO LOGÍSTICA............................................................................................................. 165
3 REDES NEURAIS ARTIFICIAIS................................................................................................... 169
4 IMPLEMENTANDO REGRESSÕES COM BIBLIOTECAS DO PYTHON.......................... 175
LEITURA COMPLEMENTAR........................................................................................................... 177
RESUMO DO TÓPICO 3................................................................................................................... 183
AUTOATIVIDADE............................................................................................................................. 184

REFERÊNCIAS..................................................................................................................................... 185
UNIDADE 1 —

MACHINE LEARNING

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• compreender os conceitos fundamentais e históricos sobre Machine


learning;

• conhecer exemplos de aplicações de Machine learning no mundo real;

• entender as principais características das aplicações de Machine learning;

• saber quais são as principais ferramentas para codificação;

• conhecer exemplos de aplicações e tipos de conjuntos de dados;

• dominar o desenvolvimento de um algoritmo de Machine learning por


meio da apresentação das principais etapas de implementação.

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.

TÓPICO 1 – INTRODUÇÃO AO MACHINE LEARNING

TÓPICO 2 – PREPARANDO O AMBIENTE PARA TRABALHAR COM


MACHINE LEARNING

TÓPICO 3 – ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

1
2
TÓPICO 1 —
UNIDADE 1

INTRODUÇÃO AO MACHINE LEARNING

1 INTRODUÇÃO
A inteligência artificial, por meio das suas mais diversas subáreas, tem
alterado a nossa maneira de interagir com os sistemas computacionais, bem como
a própria forma de interação com outros seres humanos.

Neste livro didático, estudaremos alguns algoritmos de inteligência


artificial. Entretanto, antes de aprofundarmos os conceitos de Machine learning
(em português, “aprendizado de máquina”), é preciso ressaltar que você já é um
usuário de Machine learning.

Por exemplo, quando acessamos as plataformas de streaming de vídeo, é


comum que filmes e vídeos sejam recomendados automaticamente. Para isso são
considerados nossos dados pessoais, os filmes que positivamos (curtimos), bem
como os dados de navegação do usuário (cookies).

Em 2009, apenas a Netflix, uma das pioneiras dessas plataformas,


ofereceu 1 milhão de dólares para quem conseguisse otimizar seu algoritmo de
recomendação de filmes. Até hoje, a plataforma investe pesado para ter maior
nível de assertividade nesse algoritmo, permitindo manter mais usuários em
frente à concorrência.

FIGURA 1 – RECOMENDAÇÕES DE FILMES DA PLATAFORMA NETFLIX

FONTE: O autor

3
UNIDADE 1 — MACHINE LEARNING

Outra situação cotidiana em que nos tornamos usuários de Machine learning


são os anúncios e as propagandas que aparecem após procurarmos um termo
em um site de buscas ou em uma rede social. Durante a elaboração deste livro
didático, pesquisamos as opções para adquirir um novo computador e, adivinha,
todos os sites que tinham acesso aos cookies de pesquisa nos apresentaram
recomendações relacionadas as minhas buscas anteriores, cuja maioria das
propagandas era gerida pelo Google. Segundo Chow (2017), hoje, são poucas as
tecnologias do Google que não usam inteligência artificial e machine learning. A
inteligência artificial está reinventando nossos produtos, desde o Google Maps
até o YouTube, e promovendo novas experiências.

Quando o Google lançou a ferramenta “Ok, Google”, particularmente


não vimos grandes vantagens no início, porém, foi a ferramenta que possibilitou
o aprendizado de uso de smartphone dos nossos pais, até então avessos à
tecnologia. O recurso, agora chamado de “Assistente”, permite reconhecimento
de voz e a realização de ações no dispositivo auxilia em diversos contextos da
acessibilidade a recursos.

FIGURA 2 – CONVERSA COM O GOOGLE ASSISTENTE

FONTE: O autor

Nas mais diversas ciências, as técnicas de Machine learning têm sido


utilizadas para auxiliar os mais diversos processos, como a biologia, a aeronáutica,
a física, a economia, entre muitas outras áreas.

Entre os exemplos está a sua aplicação nas ciências da saúde, tanto na


realização de diagnósticos quanto de prognósticos. A área da saúde permite
trabalhar com cenários interessantes, que vão desde a análise de prontuários e
o reconhecimento de imagens até a análise dos dados históricos (por exemplo,
utilizando relógios medidores).

4
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING

FIGURA 3 – APLICAÇÃO DE MACHINE LEARNING NA DETECÇÃO DO CÂNCER

FONTE: <https://cutt.ly/SgVuOv3>. Acesso em: 2 out. 2020.

É fato que o Machine learning está presente em nosso cotidiano e é parte da


próxima revolução industrial, em conjunto com Big Data e tecnologias 4.0. Nas
próximas seções, compreenderemos melhor seu conceito e seu funcionamento.

2 ASPECTOS HISTÓRICOS DE MACHINE LEARNING


A história do Machine learning teve início em 1959, com o cientista Arthur
Lee Samuel (SAMUEL, 1959), do Instituto de Tecnologia de Massachusetts (MIT),
considerado pioneiro do desenvolvimento de jogos de computador, inteligência
artificial e aprendizado de máquina. Em seu artigo, Samuel (1959) apresenta um
estudo sobre algoritmos de inteligência artificial que consultam dados históricos
para aprender a jogar damas – aprendendo com acertos e erros, a cada partida, a
máquina estava mais aperfeiçoada no jogo.

FIGURA 4 – ARTHUR LEE SAMUEL E A MÁQUINA QUE JOGAVA DAMAS

FONTE: <https://www.appai.org.br/desenrola-machine-learning-aprendizado-de-maquina/>.
Acesso em: 2 out. 2020.

5
UNIDADE 1 — MACHINE LEARNING

As redes neurais são um modelo matemático de inteligência artificial


que simula o comportamento do cérebro humano, tendo um papel importante
na história e na atualidade do desenvolvimento de algoritmos inteligentes. O
primeiro algoritmo de redes neurais é conhecido como Perceptron (ROSENBLATT,
1957), utilizado para a realização de tarefas com reconhecimento de padrões.
Entretanto, alguns anos depois, Minsky e Papert (1969) realizaram a prova do
funcionamento do algoritmo e concluíram que não existia poder computacional
suficiente na época para que ele funcionasse.

Nos anos de 1970, já com a existência dos bancos de dados relacionais


e o início do desenvolvimento de sistemas de apoio à decisão, um marco para
evolução dos sistemas inteligentes foi o algoritmo ID3 (Inductive Decision Tree),
utilizado nas chamadas árvores de decisão, tendo novas versões nas décadas
seguintes (QUINLAN, 1986; 1993).

Em um paralelo com a história dos computadores, nos anos de 1980,


surgiu a segunda geração de computadores, com máquinas menores e poder
computacional maior. Com isso, as redes neurais ressurgiram, afinal as máquinas
ficaram mais potentes. A partir dessa época, despontou também o uso de
metodologias experimentais para validar os experimentos.

A mineração de dados permite a descoberta de conhecimento a partir


dos bancos de dados. Nos anos de 1990, essa tecnologia atraiu uma quantidade
significativa de atenção da pesquisa e das organizações, por explorar o uso de
algoritmos de Machine learning em outras aplicações e ter relação com outras
áreas da inteligência artificial (FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996).

Por fim, foi na década de 2000 que a internet chegou às casas dos usuários
e as redes sociais assumiram seu papel na comunicação virtual, gerando um
grande impacto no cotidiano das pessoas e das organizações. Esse momento, com
o grande volume de dados, gerando cenários de Big Data, contribuiu para que os
algoritmos de Machine learning fossem utilizados pelas empresas.

A Figura 5 sumariza a história do Machine learning, bem como dos demais


métodos de inteligência artificial descritos anteriormente.

6
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING

FIGURA 5 – HISTÓRIA DOS MÉTODOS DE MACHINE LEARNING

FONTE: CAO (2018, p. 3)

3 DEFINIÇÃO DE CONCEITOS
Machine learning, compreendido como o aprendizado de máquina a partir
dos dados previamente conhecido, é definido como um campo preocupado
com a questão de como construir programas de computador que melhorem
automaticamente a experiência do usuário (MITCHELL, 1997).

NOTA

Complementarmente a essa definição, Machine learning também é “Um


programa [que] aprende a partir da experiência E, em relação a uma classe de tarefas T,
com medida de desempenho P, se seu desempenho em T, medido por P, melhora com E”
(Mitchell, 1997).

Para compreendermos melhor essa definição, tomaremos como exemplo o


“game of checkers”, proposto no experimento de Arthur Samuel (1959), que tratava
de um programa de aprendizado de máquina para jogar damas.

7
UNIDADE 1 — MACHINE LEARNING

FIGURA 6 – GAME OF CHECKERS

FONTE: Samuel (1959, p. 4)

Ao aplicarmos a definição de Machine learning proposta por Mitchell


(1997) no exemplo do jogo de damas, têm-se:

• T: tarefa de realizar o jogo de damas.


• E: experiência com histórico de vários jogos de damas.
• P: a medida de desempenho é a probabilidade de ganhar a próxima partida,
com base em jogos anteriores.

NTE
INTERESSA

O jogo de damas, com certeza, não é segredo para você. Confira o artigo que deu
origem ao primeiro trabalho (SAMUEL, 1959), bem como originou o termo Machine learning:
https://hci.iwr.uni-heidelberg.de/system/files/private/downloads/636026949/report_frank_
gabel.pdf.

Um exemplo cotidiano na internet são as tarefas relacionadas aos bots,


algoritmos que enviam mensagens e fazem postagens simulando serem pessoas
na rede. Nesses cenários, algoritmos de Machine learning podem ser utilizados
para a detecção de mensagens feitas por bots.

FIGURA 7 – BOTS NA WEB

FONTE: <https://avengering.com/en/bot-chatbot-internet-bot-heres-everything-you-need-to-know/>.
Acesso em: 2 out. 2020.

8
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING

Ao aplicarmos a definição de Machine learning proposta por Mitchell


(1997) no exemplo da classificação de bots na web, têm-se:

• T: tarefa de categorizar as mensagens enviadas por bots e por humanos.


• E: experiência com histórico de várias mensagens anteriores corretamente
identificadas.
• P: a medida de desempenho é a porcentagem de mensagens de bots
corretamente classificadas.

NTE
INTERESSA

Os bots invadiram a vida dos mais diversos usuários da web, seja para
quem joga, utiliza e-mail, aplicativos de mensagens, bem como as mais diversas redes
sociais. Por isso, é interessante conhecer mais sobre os bots, uma vez que, no decorrer
dos nossos estudos, compreenderemos o seu desenvolvimento e a sua detecção. Leia:
https://www.techtudo.com.br/noticias/2018/07/o-que-e-bot-conheca-os-robos-que-
estao-dominando-a-internet.ghtml.

A área médica provê uma grande quantidade de dados para as mais


diversas aplicações de Machine learning. Um exemplo é a área de diagnósticos,
em que as imagens podem ser analisadas para gerar o diagnóstico com base nos
sintomas apresentados pelo paciente.

FIGURA 8 – DIAGNÓSTICO UTILIZANDO INTELIGÊNCIA ARTIFICIAL

FONTE: <https://cutt.ly/GgVoEwx>. Acesso em: 2 out. 2020.

Ao aplicarmos a definição de Machine learning proposta por Mitchell (1997)


no exemplo da aplicação para diagnósticos médicos automatizados, têm-se:

• T: tarefa de diagnosticar um paciente de acordo com os sintomas que ele


apresentar.
• E: experiência com histórico de pacientes anteriores, que foram diagnosticados
conforme seus respectivos sintomas.
• P: a medida de desempenho é a porcentagem de pacientes que obtiverem o
diagnóstico correto.

9
UNIDADE 1 — MACHINE LEARNING

NTE
INTERESSA

Existem diversas aplicações na área médica, desde a medicina avançada


até o suporte ao usuário. Um exemplo é a Dra. Lara, uma assistente virtual de apoio e
acompanhamento ao pré-natal, desenvolvida no seguinte trabalho sobre o processo de
desenvolvimento de um chatbot para área médica: https://www.researchgate.net/profile/
Rodrigo_Nogueira16/publication/338668367_DRA_LARA_ASSISTENTE_VIRTUAL_DE_
APOIO_E_ACOMPANHAMENTO_AO_PRE-NATAL/links/5e95fd93a6fdcca78915bf24/
DRA-LARA-ASSISTENTE-VIRTUAL-DE-APOIO-E-ACOMPANHAMENTO-AO-PRE-NATAL.pdf.

Até o momento, vimos que um algoritmo de Machine learning funciona por


meio de experiência, tarefa e medidas de desempenho. Ao analisar os exemplos
apresentados, a experiência é sempre adquirida por meio dos dados, ou seja, os
dados são essenciais para a existência do processo de Machine learning.
Machine learning é uma forma de Inteligência Artificial muito utilizada
atualmente, que permite o aprendizado, pelo sistema, a partir de dados
imputados, que servirão como base de treinamento para que o sistema
gere modelos ou saídas que possam servir para análises preditivas ou,
ainda, para futuras tomadas de decisão (MOREIRA, 2020, p. 1).

De modo geral, os algoritmos de Machine learning são de inteligência


artificial, pois aprendem com dados históricos armazenados. Essa tecnologia utiliza
os mais diversos tipos algoritmos, embora, em geral, sejam modelos matemáticos
baseados em distância, probabilísticos, baseados em regras, gradiente descendente,
e muitos outros que iremos estudar ao longo deste livro didático.

Os modelos matemáticos geram a inteligência dos algoritmos, permitindo


a existência do conhecimento a partir dos dados. A Figura 9 mostra uma maneira
simplificada de como os algoritmos de Machine learning funcionam.

FIGURA 9 – FLUXO DE APRENDIZADO DE UM ALGORITMO DE MACHINE LEARNING

FONTE: O autor

10
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING

4 CARACTERÍSTICAS DE MACHINE LEARNING


Os sistemas de aprendizado de máquina apresentam características
peculiares, que possibilitam uma classificação não exclusiva desses sistemas
em função da linguagem de descrição, do modo de aprendizado, do paradigma
de aprendizado, das formas e da tarefa de aprendizado (STANGE, 2011). Para
elucidar a relação dessas características, o quadro a seguir elenca maneira
organizada de acordo com os seus tipos.

QUADRO 1 – CLASSIFICAÇÃO DOS SISTEMAS DE MACHINE LEARNING

Modos de Paradigmas de Formas de Tarefas de


aprendizado aprendizado aprendizado aprendizado

Supervisionado Simbólico Incremental Classificação


Não
Estatístico Não incremental Regressão
supervisionado
Por reforço Conexionista Agrupamento
Genético Associação
FONTE: Adaptado de Stange (2011)

No que se refere à classificação dos métodos de Machine learning, podem


acontecer pela característica denominada modo de aprendizado, isto é, a maneira
com que os resultados da execução dos algoritmos são influenciados por
especialistas externos. Os modos de aprendizado podem ser supervisionados,
semissupervisionados, não supervisionados e aprendizado por reforço.

Segundo Zubelli (2017), no aprendizado supervisionado, são apresentados


exemplos do que é desejado como entrada e saída, de modo que o objetivo é
aprender uma regra que mapeia a entrada na saída. Já no não supervisionado,
nenhuma informação é dada a priori, deixando o algoritmo descobrir sozinho
estruturas e padrões nas entradas fornecidas.

Complementarmente, o aprendizado semissupervisionado envolve um


pequeno grau de supervisão, tal como um conjunto de “sementes”, para começar
o processo de aprendizagem.

O aprendizado por reforço envolve a interação com o ambiente


circundante, abordando a questão de como um agente autônomo que sente e age
em seu ambiente pode aprender a escolher ações ideais para atingir seus objetivos.
O comportamento de um agente é recompensado com base nas ações que ele
realiza no ambiente. Ele considera as consequências de suas ações e adota medidas
ótimas. Um computador jogando xadrez com um ser humano, aprendendo a
reconhecer palavras faladas e a classificar novas estruturas astronômicas é um
exemplo de aprendizado por reforço (SHOBHA; RANGASWAMY, 2018).
11
UNIDADE 1 — MACHINE LEARNING

Os paradigmas de aprendizado de máquina podem ser simbólicos,


estatísticos, conexionistas, baseado em exemplos ou genético. Tais conceitos são
descritos por Monard e Baranauskas (2003) como:

• Simbólico: os sistemas de aprendizado simbólico buscam aprender


construindo representações simbólicas de um conceito, por meio da análise
de exemplos e contraexemplos dele. As representações simbólicas estão
tipicamente na forma de alguma expressão lógica, árvore de decisão, regras
ou rede semântica.
• Estatístico: pesquisadores em estatística têm criado diversos métodos
de classificação, muitos deles semelhantes aos métodos posteriormente
desenvolvidos pela comunidade de aprendizado de máquina. A ideia geral
consiste em modelos estatísticos para encontrar uma boa aproximação do
conceito induzido.
• Baseado em exemplos: uma forma de classificar um exemplo é lembrar de
outro similar, cuja classe é conhecida, e assumir que o novo exemplo tem a
mesma classe. Essa filosofia demonstra os sistemas baseados em exemplos, que
os classificam como nunca vistos por meio de exemplos similares conhecidos.
Esse tipo de sistema de aprendizado é denominado lazy (preguiçoso) e
necessita manter os exemplos na memória para classificar novos exemplos,
em oposição aos sistemas eager (gulosos), que utilizam os exemplos para
induzir o modelo, descartando-os logo após.
• Conexionista: de modo geral, essa abordagem trata das redes neurais, que
são construções matemáticas simplificadas, inspiradas no modelo biológico
do sistema nervoso. A representação de uma rede neural envolve unidades
altamente interconectadas e, por isso, o nome conexionismo é utilizado, para
descrever a área de estudo.
• Genético: paradigma de aprendizado derivado do modelo evolucionário pro-
posto por David Goldberg, em 1989, no livro “Algoritmos genéticos em pesqui-
sa, otimização e Machine learning”. Um classificador genético consiste de uma
população de elementos de classificação que competem para fazer a predição.

As formas de aprendizado estão ligadas à maneira com que o algoritmo


obtém o conhecimento a partir dos dados. Como você aprendeu, os algoritmos
de Machine learning aprendem a partir dos dados armazenados, e as formas de
aprendizado estão relacionadas à atualização desses dados. No cenário real de
implementação de um algoritmo que tem os dados atualizados a todo momento,
a cada novo dado, o algoritmo precisa atualizar o modelo matemático; quando o
algoritmo precisa ler todo o conjunto de dados, ele é chamado de não incremental,
mas se conseguir atualizar o modelo a partir do novo dado é incremental.

As tarefas de aprendizado de máquina são tipicamente divididas


conforme os sinais de entrada e as respostas do aprendizado (ZUBELLI, 2017).
Essas tarefas podem ser de classificação, regressão, agrupamento ou associação –
cada um desses métodos será estudado em seguida.

12
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING

NTE
INTERESSA

FIGURA 10 - A CIÊNCIA DOS DADOS É MULTIDISCIPLINAR

FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big-
-Data-Data-Mining>. Acesso em: 2 out. 2020.

Machine learning, muitas vezes, pode ser confundida com outras áreas do conhecimento,
principalmente em sistemas inteligentes, pois, como são áreas próximas, é comum tal
confusão. Por isso, é interessante compreender a relação entre essas áreas:

• A ciência de dados é o guarda-chuva de técnicas nas quais você está tentando extrair
informações e insights sobre os dados. Isso inclui desde trabalhar com programação
em baixo nível até a entrega de informação em nível mais alto.
• A mineração de dados é a ciência de coletar histórico de dados e, em seguida,
procurar padrões neles. Você procura padrões consistentes e relacionamentos
entre variáveis. Depois de encontrar essas informações, você as válidas aplicando os
padrões detectados a novos subconjuntos de dados.
• Análise de dados é qualquer tentativa de entender os dados.
• Estatística é o estudo da coleta, da análise, da interpretação, da apresentação e da
organização dos dados. A estatística lida com todos os aspectos dos dados, incluindo o
planejamento da coleta de dados, em termos de projeto de pesquisas e experimentos.
• Bancos de dados é uma coleção organizada de dados, com esquemas, tabelas,
consultas, relatórios, visualizações e outros objetos. Os dados são normalmente
organizados para modelar aspectos da realidade, de maneira a suportar processos
que requerem informações.
• Inteligência artificial (IA) é a inteligência exibida por máquinas ou software, isto é,
campo de estudo acadêmico sobre como criar computadores e softwares capazes
de comportamento inteligente.
• A descoberta de conhecimento em bancos de dados (KDD) é o processo que
identifica o conhecimento útil de uma coleção de dados.
• O reconhecimento de padrões se concentra no reconhecimento de padrões e
regularidades nos dados, embora em alguns casos seja considerado quase sinônimo
de aprendizado de máquina.
• A neurocomputação estuda um programa de software que usa uma rede neural,
simulando o cérebro humano, que pode ser treinada para executar tarefas específicas,
como reconhecimento de padrões.

FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big-
Data-Data-Mining>. Acesso em: 2 out. 2020.

13
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• O Machine learning está presente no cotidiano dos usuários da web.

• As grandes corporações utilizam essa tecnologia para otimizar seus negócios.

• A história do Machine learning teve início com um jogo de damas que utilizava
inteligência artificial.

• Os fundamentos históricos acompanham o de outras tecnologias, como a


inteligência artificial e Big Data.

• Um programa aprende a partir da experiência E, em relação a uma classe de


tarefas T, com medida de desempenho P; se seu desempenho em T, medido
por P, melhora com E.

• Os algoritmos são de inteligência artificial, que aprendem com dados


históricos armazenados.

• Os sistemas apresentam diversas características. São elas: modos de


aprendizado – supervisionado, não supervisionado e por reforço; paradigmas
de aprendizado – simbólico, estatístico, conexionista ou genético; formas de
aprendizado – incremental ou não incremental; e tarefas de aprendizado –
classificação, regressão, agrupamento ou associação.

14
AUTOATIVIDADE

1 Leia o texto a seguir:

Os sistemas de Machine learning, em português conhecidos como sistema


de aprendizagem automática ou sistemas de aprendizado de máquina,
podem ajudar a descobrir padrões, realizar determinadas tarefas através da
generalização de casos e na utilização de dados.

FONTE: OLIVEIRA, P. M. M. de. Benchmarking sobre técnicas de otimização para modelos


de apoio à decisão na medicina intensiva. 2015. Tese de Doutorado.

Os algoritmos de aprendizado de máquina têm um modo de aprendizado que


depende de um especialista externo para avalizar seus resultados. Assinale a
alternativa CORRETA que contenha esse modo:

a) ( ) Aprendizado por reforço.


b) ( ) Aprendizado supervisionado.
c) ( ) Aprendizado não supervisionado.
d) ( ) Aprendizado por inteligência.

2 Leia o texto a seguir:

Os algoritmos de Machine learning podem ser aplicados para uma larga gama
de situações problema, desde detecção de fraudes fiscais, até recomendações,
porém isso só pode ser feito devido à grande quantidade de dados fornecidas
pelos datasets.

FONTE: FREITAS, D. W. Recomendação de animes utilizando Machine learning: uma aborda-


gem baseada em avaliações dos usuários. Engenharia da Computação, 2018.

Com relação aos algoritmos de Machine learning, assinale a alternativa


CORRETA que contenha os paradigmas de aprendizado:

a) ( ) Simbólico, estatístico, conexionista e genético.


b) ( ) Supervisionado, estatístico, conexionista e genético.
c) ( ) Simbólico, estático, conexionista e genético.
d) ( ) Simbólico, estatístico, colaborador e georreferenciado.

3 A internet soma mais de 2 bilhões de sites publicados, sendo a principal


fonte de informação deste século. No entanto, cada vez mais opções de sites
implicam diversos veículos que não produzem notícias verdadeiras, as
ditas fakes news. O sistema desenvolvido por Monteiro, Nogueira e Moser
(2019) tem como objetivo implementar um algoritmo de Machine Leaning
para classificar notícias em reais e fake news.

15
FONTE: MONTEIRO, R.; NOGUEIRA, R.; MOSER, G. Desenvolvimento de um sistema para a
classificação de Fakenews acoplado à etapa de ETL de um Data Warehouse de Textos de No-
tícias em língua Portuguesa. In: Anais da XV Escola Regional de Banco de Dados. SBC, 2019.
p. 131-140. Disponível em: https://sol.sbc.org.br/index.php/erbd/article/view/8486/8387.
Acesso em: 2 out. 2020.

Sobre o problema de Machine learning apresentado no enunciado, indique a


experiência, a tarefa e a medida de desempenho.

E:__________________________________________________________________
____________________________________________________________________
T:__________________________________________________________________
____________________________________________________________________
P:__________________________________________________________________
____________________________________________________________________

4 Leia o texto a seguir:

A lucratividade promovida pelo Google em sua nova plataforma de


distribuição de vídeos do YouTube atraiu um número crescente de usuários.
No entanto, esse sucesso também atraiu usuários mal-intencionados, que têm
como objetivo autopromover seus vídeos ou disseminar vírus e malwares. Como
o YouTube oferece ferramentas limitadas para moderação de comentários, o
volume de spam aumenta surpreendentemente, o que leva os proprietários
de canais famosos a desativar a seção de comentários em seus vídeos.

FONTE: ALBERTO, T. C.; LOCHTER, J. V.; ALMEIDA, T. A. TubeSpam: Comment spam filtering
on YouTube. In: 2015 IEEE 14th International Conference on Machine learning and Applica-
tions (ICMLA). IEEE, 2015. p. 138-143. Disponível em: http://www.dt.fee.unicamp.br/~tiago/
papers/TCA_ICMLA15.pdf. Acesso em: 2 out. 2020.

No trabalho descrito pelo texto, foram implementados algoritmos de Machine


learning para a detecção de comentários de publicidade (spam) em vídeos
da internet. Sobre o problema de Machine learning apresentado, indique a
experiência, a tarefa e a medida de desempenho.

16
E:__________________________________________________________________
____________________________________________________________________
T:__________________________________________________________________
____________________________________________________________________
P:__________________________________________________________________
____________________________________________________________________

5 Os algoritmos de Machine learning têm seu aprendizado baseado em dados


históricos e diversas aplicações: agricultura de precisão, reconhecimento
de imagem, classificação de textos, desenvolvimento de chatbots. Torna-se
difícil um setor do novo modelo tecnológico que não utilize suas técnicas.
Sobre Machine learning, assinale a alternativa CORRETA que contenha as
tarefas de aprendizado:

a) ( ) Classificação, revolução, agrupamento e associação.


b) ( ) Classificação, regressão, agrupamento e associação.
c) ( ) Categorização, regressão, análise e dissociação.
d) ( ) Classificação, regressão, agrupamento e dissociação.

17
18
TÓPICO 2 —
UNIDADE 1

PREPARANDO O AMBIENTE PARA TRABALHAR


COM MACHINE LEARNING

1 INTRODUÇÃO
Ao desenvolver sistemas que utilizam Machine learning são diversos os
itens a serem considerados, desde a compreensão do conceito, as características
dos métodos, os tipos de métodos, as tarefas que podem ser realizadas, e as
estratégias para otimizar e avaliar o funcionamento.

Este livro didático tem uma abordagem prática sobre Machine learning e,
para facilitar a compreensão de cada um desses conceitos, primeiramente, vamos
preparar o nosso ambiente, conhecendo e instalando as principais ferramentas.

NOTA

No decorrer dos estudos e da prática sobre programação, a programação


vetorial (ou programação matricial) será muito utilizada. Para isso, recomendamos a
seguinte leitura: GOLUB, G. H.; VAN LOAN, C. F. Matrix Computations. 4. ed. Baltimore: The
Johns Hopkins University Press, 2013.

2 LINGUAGEM DE PROGRAMAÇÃO
O desenvolvimento de sistemas inteligentes, por meio de algoritmos de
Machine learning, pode ser feito pelas diversas linguagens de programação. Entre
elas, podemos destacar as ferramentas MatLab, R, Scala e Python.

Um ponto importante é que praticamente todas as linguagens de


programação da atualidade têm a capacidade de implementar algoritmos
de Machine learning, bem como bibliotecas que já contêm esses algoritmos
implementados.

Um exemplo é a linguagem Java, que teve um papel importante na


implementação do framework de Big Data Apache Hadoop, além de sua
aplicabilidade em sistemas distribuídos. A linguagem conta com o JAVA-ML,
uma biblioteca que apresenta os algoritmos de Machine learning implementados.

19
UNIDADE 1 — MACHINE LEARNING

A Microsoft, por sua vez, tem evoluído muito no mercado de computação em


nuvem, por meio da sua plataforma Microsoft Azure. A linguagem C# e a plataforma
.NET têm recursos de integração com as ferramentas de Machine learning, bem como
sua própria biblioteca dessa tecnologia, denominada de ML.NET.

Diante de um cenário no qual há diversas linguagens com suas respectivas


características, daremos continuidade ao estudo de Machine learning com a
linguagem Python. O Python é uma linguagem de código aberto, com diversas
bibliotecas para auxiliar na preparação de dados e no desenvolvimento de
algoritmos de Machine learning.

NTE
INTERESSA

Existem diversas características que fazem do Python uma poderosa


linguagem de programação. Confira algumas listadas pela ComputerWorld (2019):

1. Python é linguagem de programação popular na ciência e nas empresas.


2. Conhecimentos em Python são exigidos em muitas vagas.
3. Python tem muitas bibliotecas e estruturas.
4. Python tem bibliotecas poderosas para a ciência de dados.
5. Python é muito utilizado em inteligência artificial e Machine learning.
Além de muito usada na ciência de dados, há também muitas bibliotecas eficientes na
programação de inteligência artificial e Machine learning. Theano, Scikit-learn, Tensorflow
estão entre os módulos mais usados para algoritmos de machine learning. Já o Keras é uma
biblioteca de rede neural open source, dedicada para aplicações de inteligência artificial.
6. Python é utilizado no desenvolvimento de aplicações web.
7. Python é funcional em diversos sistemas operacionais.
8. Tem uma comunidade grande de desenvolvedores contribuindo com sua evolução.
9. Python é usado para criar interfaces gráficas de usuário (GUI).
10. Python é usado para automação de diversas tarefas.

Entre suas principais características, o Python pode ser executado na


maioria dos sistemas operacionais, desde os tradicionais, como Windows,
MacOs e Linux, até sistemas operacionais diversos como FreeBSD, utilizado em
servidores, e OpenELEC, uma versão do Linux com poucos recursos utilizada em
dispositivos de IoT (Internet of Things).

Para realizar a instalação do Linux, você pode acessar direto a página de


downloads da plataforma: https://www.python.org/downloads/. No decorrer do
desenvolvimento deste livro didático, foi utilizada a versão 3.8 do Python, porém os
códigos desenvolvidos podem ser executados em qualquer instalação da versão 3.X.

No decorrer desta unidade, você irá utilizar algumas das principais


bibliotecas do Python para realização de tarefas correlatas aos processos Machine
learning, desde coleta de dados, pré-processamento até implementação dos
algoritmos. Para instalar bibliotecas, o Python utiliza o gerenciador de pacotes PIP.
20
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

DICAS

Para realizar a instalação do PIP nos principais sistemas operacionais, confira


alguns links para o auxiliar:
• Windows: https://dicasdepython.com.br/resolvido-pip-nao-e-reconhecido-como-um-
comando-interno/
• Linux: https://python.org.br/instalacao-linux/
• MacOS: https://python.org.br/instalacao-mac/

3 JUPYTER NOTEBOOK E GOOGLE COLAB RESEARCH


O notebook Jupyter é uma interface gráfica que utiliza os navegadores
de internet para executar códigos Python e cria, nele, um rico conjunto de
recursos de exibição dinâmica. Além de executar instruções Python, o Jupyter
Notebook permite que o usuário inclua texto formatado, visualizações estáticas
e dinâmicas, equações matemáticas, widgets JavaScript e muito mais. Ademais,
esses documentos podem ser salvos de maneira a permitir que outras pessoas os
abram e executem o código em seus próprios sistemas (VANDERPLAS, 2016).

Se você seguiu os passos indicados na seção anterior e realizou a instalação


do Python e o gerenciador de pacotes PIP na sua máquina, basta executar o
seguinte comando:

Na sequência, para executar o Jupyter Notebook e receber o link para que


seja aberto, deve ser executado:

A partir de agora, você já terá o Jupyter instalado em seu computador e


estará apto a executar códigos dinâmicos com IPython. A Figura 11 mostra a tela
do Jupyter após a instalação – ao clicar em New Python 3, será inicializada
uma tela em branco, chamada de Notebook.

21
UNIDADE 1 — MACHINE LEARNING

FIGURA 11 – TELA INICIAL DO JUPYTER NOTEBOOK

FONTE: O autor

Atualmente, nosso mundo é dinâmico no que se refere às equipes de


desenvolvimento de sistemas e multidisciplinares. Nesse cenário, pesquisadores
e desenvolvedores atuam em projetos de maneira remota, acessando o mesmo
código e compartilhando soluções.

Com relação à utilização do Notebook e ao compartilhamento de código,


uma solução interessante é o Google Colaboratory, também chamado de Google
Colab. Segundo Rosa (2019), trata-se de um serviço na nuvem gratuito, que
oferece suporte de processamento (nesse caso, uma GPU Tesla K80) e também
pode contar com 12 GB de memória RAM. Por isso, é uma ótima ferramenta para
o treinamento de algoritmos de aprendizado de máquina.

NOTA

O termo GPU (Graphics Processing Unit, em português “Unidade de


Processamento Gráfico”) é a responsável por dar vida aos jogos eletrônicos. De modo
geral, pode-se compreendê-la como as placas de vídeo de aceleração.
O motivo de uma placa de vídeo ter destaque em um tema como o nosso é que, com GPU,
é possível a execução dos algoritmos utilizando CUDA e OpenCL. Em geral, essas duas
tecnologias permitem que os algoritmos sejam executados utilizando a placa de vídeo.

Tendo como objetivo aproximar o aluno do conteúdo prático apresentado


ao longo deste livro didático, iremos utilizar diversos exemplos desenvolvidos na
plataforma Google Colab. Com a utilização dessa ferramenta, os processos de ensino-
aprendizagem podem se beneficiar do uso de recursos on-line, permitindo a melhoria
da produtividade para alunos e professores, por meio da flexibilidade e do trabalho
colaborativo. Particularmente, nos cursos de computação, as ferramentas de código
aberto, como o Jupyter Notebook, fornecem um ambiente de programação para o
desenvolvimento e o compartilhamento de materiais educacionais, combinando
22
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

diferentes tipos de recursos, como texto, imagens e código, em várias linguagens


de programação em um único documento, acessível pela web do navegador. Esse
ambiente também é adequado para fornecer acesso a experimentos on-line e explicar
como usá-los (CARDOSO; LEITÃO; TEIXEIRA, 2018).

No decorrer de nossa disciplina, utilizaremos o Google Colab para que


você tenha acesso aos exemplos completos desenvolvidos no curso. Caso ainda
não tenha experiência com o Google Colab, convido-o a acessar o link do Notebook
e dar início ao uso dessa ferramenta, que será importante para o desenvolvimento
da disciplina.

ATENCAO

O Notebook com o conteúdo deste tópico está disponível no link: https://colab.


research.google.com/drive/1SD5qmxVjTtOpbfcSXN1G9WTqsr06ci0w.

A Figura 12 mostra um exemplo da tela de cabeçalho de um documento


Colab Notebook. Para ter um melhor aproveitamento desse conteúdo, é necessário
conectar-se à plataforma utilizando uma conta Google. Ao abrir o programa, você
perceberá que poderá apenas visualizar os códigos disponibilizados, sem poder
executá-los – clique em Open in playground para poder habilitar essa função e,
a partir desse momento, você irá executar os códigos em seu próprio ambiente,
utilizando os recursos de hardware anteriormente mencionados.

FIGURA 12 – TELA INICIAL DO GOOGLE COLAB NOTEBOOK

FONTE: O Autor

DICAS

Caso esteja curioso sobre o funcionamento do Google Colab, e para conhecer


mais sobre a execução de código utilizando GPU, leia o artigo Google Colab – Guia do Iniciante:
https://medium.com/machina-sapiens/google-colab-guia-do-iniciante-334d70aad531

23
UNIDADE 1 — MACHINE LEARNING

4 GITHUB
No processo de desenvolvimento de software, seja de cunho comercial
ou desenvolvimento de sistemas inteligentes utilizando algoritmos de Machine
learning, o código passa por diversas alterações conforme o projeto evolui. Nesse
contexto, o versionamento de código permite que sejam geradas diversas versões
do código-fonte desenvolvido.

Um sistema de versionamento de código é uma aplicação capaz de


gravar as mudanças em um ou mais arquivos durante determinado período. A
utilização desse tipo de aplicação torna possível retornar a uma versão específica
daquele arquivo em qualquer momento. A principal vantagem do uso desse tipo
de sistema é a organização do projeto, visto que se pode manter um histórico
do desenvolvimento, possibilitando desenvolver funcionalidades paralelamente
a partir do mesmo código. Além disso, viabiliza a criação de uma nova versão do
projeto sem alterar a versão principal (GIORDANI, 2019).

Nos mais diversos tipos de projetos de software são utilizadas estratégias


de versionamento, cada qual abordada de maneira distinta. Existem diversos
softwares de gerenciamento de versões disponíveis no mercado, podendo-se citar
CVS, Subversion, TFS e o Git – o qual iremos conhecer mais a fundo.

O Git é um sistema de controle de versão distribuído, utilizado para


registrar o histórico de alterações em arquivos e comum em equipes de
desenvolvimento de software. Com o uso do Git, é possível reverter um software
para versões anteriores de forma rápida e fácil (SILVERMAN, 2013).

O Git utiliza repositórios que armazenam as versões do código-fonte


e, embora os repositórios possam ser feitos em servidores das empresas,
tradicionalmente, são feitos on-line em serviços próprios, como o GitHub.

O GitHub é um repositório de hospedagem de serviços Git – entre


outras tantas características próprias. As interações entre seus usuários são de
natureza complexa e ocorrem de diferentes formas, principalmente porque
pode ser considerado uma rede social, além de uma plataforma colaborativa.
Usando o GitHub, os programadores podem interagir e colaborar em torno de
repositórios de código aberto, o que permite que eles façam download, cooperem,
compartilhem, entre outras funcionalidades (WEITZEL; SPIES; SANTOS, 2017).

24
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

E
IMPORTANT

Cada sistema operacional tem sua particularidade durante a instalação do Git;


por isso, separamos alguns artigos para auxiliar na instalação de acordo com o seu sistema
operacional:
• Instalação em Windows: https://woliveiras.com.br/posts/instalando-o-git-windows/.
• Instalação no Linux: https://www.digitalocean.com/community/tutorials/como-
instalar-o-git-no-ubuntu-18-04-pt.
• Instalação no MacOS: https://git-scm.com/book/pt-br/v2/Come%C3%A7ando-
Instalando-o-Git.

Para compreender melhor o funcionamento do Git, o ideal é criar um


repositório. Para isso, utilizaremos o GitHub (www.github.com) – entretanto,
você pode optar por uma alternativa de repositório.

DICAS

Mesmo o GitHub tendo destaque no mercado há muito tempo são diversas


alternativas para criar seu repositório de arquivos versionados na nuvem. Veja, a seguir, a
lista criada pelo Imaster (2018) com cinco das principais alternativas:

• GitLab (BSD): certamente, a alternativa mais conhecida. Escrito em Ruby on Rail, é de


longe o mais completo (e complexo) de todos, abrangendo outras funcionalidades que
não estão presentes, por padrão, no Github (por exemplo, Continous Integration). Pode
ser acessado em: https://www.gitlab.com.
• Gogs (MIT): mais simples que o GitLab, mesmo assim consegue oferecer uma boa
gama de recursos, aproximando-se bastante das funções mais importantes do GitHub,
inclusive na interface de usuário web. Pode ser acessado em: https://www.gogs.io.
• Phabricator: a opção que tenta se afastar mais do GitHub, na tentativa de criar algo
melhor e mais completo, que supra a maior parte das necessidades de um projeto de
desenvolvimento de software. Pode ser acessado em: https://phacility.com/phabricator/.
• GitBucket: é uma plataforma web escrita em Scala, que conta com a instalação
simplificada de um arquivo .war em sistemas que podem rodar Java 8. Pode ser
acessada em: https://github.com/gitbucket.
• Kallithea (GPL3): o projeto é membro da Software Freedom Conservancy e suporta
Mercurial, além de Git. Escrito em Python, traz alguns outros recursos interessantes.
Pode ser acessado em: https://kallithea-scm.org/.
• GitPrep (GPL): um recurso mais simples, mas que tem uma interface semelhante à do
GitHub, precisa apenas de Perl 5.10.1+ para rodar e já traz um servidor web integrado.
Além disso, possui issue tracker e suporte a CGI, SSL e autenticação por chave pública.
Pode ser obtido em: http://gitprep.yukikimoto.com/.

25
UNIDADE 1 — MACHINE LEARNING

5 DATASETS
O termo Dataset vem do idioma inglês e tem como significado “conjunto
de dados”. Em disciplinas relacionadas a bancos de dados (Relacionais, NoSQL,
entre outras), o tema pode ser discutido mais a fundo – com conceito de dados,
informação e conhecimento (Figura 13).

FIGURA 13 – DADOS, INFORMAÇÃO E CONHECIMENTO

FONTE: <https://www.gapingvoid.com/blog/2019/03/05/want-to-know-how-to-turn-change-in-
to-a-movement/>. Acesso em: 20 maio 2020.

NTE
INTERESSA

Vamos relembrar os conceitos de dados, informação e conhecimento, uma


vez que, no decorrer desta disciplina, nosso objetivo é extrair conhecimento. Na definição
de Nogueira (2020):

• Dados: são fatos de um mundo real, que estão armazenados em algum lugar, mas não
contêm sentido; pode-se dizer que o dado é a informação em sua forma bruta, ou seja,
ainda não lapidada.
• Informação: é quando o dado tem algum tipo de organização, de tal modo que passa a
ter algum sentido. Pode-se dizer que a informação é composta por dados organizados,
mas de maneira compreensível.
• Conhecimento: vem de discernimento, prática e experiência de vida. O conhecimento
é extraído a partir dos dados e das informações armazenadas, sendo aquilo que não
pode ser visto por uma perspectiva humana, mas, sim, extraído.

Em nosso estudo sobre Machine learning, consideraremos que um Dataset


é literalmente um conjunto de dados, que, quando utilizado, será extraído
conhecimento, ou seja, é um conjunto de dados sob qual será aplicado o algoritmo de
Machine learning.

26
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

Nesse sentido, para essa aplicação, um conjunto de dados pode ter diversas
formas. Na sequência, veremos alguns exemplos de tipos de fontes de dados (datasets)
para algoritmos de Machine learning, bem como exemplos de suas aplicações.

5.1 BANCOS DE DADOS E DATA WAREHOUSING


No ambiente empresarial, os dados são armazenados prioritariamente em
sistemas gerenciadores de bancos de dados (relacionais ou NoSQL). Os dados
organizacionais também podem ser depositados em um ambiente de Business
Intelligence, integrados por intermédio de um Data Warehouse.

FIGURA 14 – MACHINE LEARNING EM AMBIENTES ORGANIZACIONAIS

FONTE: <https://pixabay.com/pt/photos/empreendedor-id%C3%A9ia-compet%C3%AAncia-1340649/>.
Acesso em: 2 out. 2020.

Do ponto de vista dos ambientes organizacionais, são diversas as


aplicações de algoritmos de Machine learning e elas podem variar conforme o
segmento de atuação da empresa:
• Detecção de perfil de clientes.
• Previsão de falhas na linha de produção.
• Predição de lucros e dividendos.
• Sugestão de produtos em loja on-line.
• Previsão de falhas em equipamentos.
• Obtenção de valores que impactam na compra/venda de ações.
• Análise automática de mercado financeiro.

5.2 ÁUDIO, IMAGEM E VÍDEO


Os dados não estruturados apresentam diversos formatos, como imagens,
áudios e vídeos – esses três tipos, em especial, têm como característica comum
a demanda por processamento para que os algoritmos sejam executados.
Uma sequência de passos tem que ser executada para que os dados se tornem
compreensíveis para os algoritmos de Machine learning.
27
UNIDADE 1 — MACHINE LEARNING

FIGURA 15 – RECONHECIMENTO DE FACES COM MACHINE LEARNING

FONTE: <https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-
-and-deep-learning/>. Acesso em: 2 out. 2020.

Apesar da demanda por processamento ser alta, as aplicações com esses


tipos de dados estão entre as mais interessantes, podendo-se citar como exemplos:

• Reconhecimento facial.
• Detecção de objetos em vídeos.
• Reconhecimento por voz.
• Classificação de imagens.
• Identificação de objetos.

5.3 ARQUIVOS DE TEXTOS


Os textos podem ser coletados de sites de notícias, redes sociais, mensagens
SMS, e-mails, além de poderem ser utilizados documentos na forma de texto
(PDF, por exemplo). Os documentos de texto também são do tipo não estruturado
e demandam preprocessamento para que sejam compreendidos pelos algoritmos
de Machine learning.

FIGURA 16 – EXEMPLO DE APLICAÇÃO DE DATASETS DE TEXTO

FONTE: <https://cutt.ly/5gVjQBy>. Acesso em: 2 out. 2020.

28
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

A área que utiliza textos com algoritmos de Machine learning faz parte do
NLP (Natural Language Processing, que significa “Linguagem de Processamento
Natural”). As tarefas de Machine learning são utilizadas na automatização de
diversos tipos de cenários com textos, por exemplo:

• Detecção automática de spams (Ham ou Spam).


• Classificação de notícias (esporte, política, economia etc.).
• Análise de sentimento (positivo, negativo, neutro).
• Agrupamento de textos (juntar textos de acordo com as palavras).
• Sumarização de textos (resumo de textos).
• Detecção automática de notícias falsas (real ou fake news).
• Desenvolvimento de chatbots.

5.4 DOCUMENTOS SEMIESTRUTURADOS



Os documentos semiestruturados são aqueles cuja estrutura pode ser
alterada durante a execução de programas. No caso de algoritmos de Machine
learning, estes recebem tais documentos para análise. São exemplos de documentos
planilhas de Excel, documentos JSON, documentos CSV e arquivos XML.

FIGURA 17 – EXEMPLO DE DOCUMENTO SEMIESTRUTURADO

FONTE: O autor

Os documentos semiestruturados permitem armazenar os mais diversos


tipos de dados, mas, principalmente, valores numéricos e discretos. Com isso,
existem as mais diversas aplicações, bem como inúmeros conjuntos desses dados.
Como são tantas as aplicações que utilizam os dados semiestruturados, desde
análises simples, como tipos de folhas de flores, até datasets mais complexos, com
dados de células que objetivam a classificação em cancerígena ou não.

Para compreender melhor os muitos exemplos que utilizam dados nos


formatos mencionados, vamos estudar, a seguir, alguns sites que disponibilizam
datasets gratuitos.

29
UNIDADE 1 — MACHINE LEARNING

5.5 KAGGLE
Uma das fontes de conjuntos de dados que utilizaremos, no decorrer do
nosso estudo, é o Kaggle. Considerado um dos maiores repositórios de dados para
aplicações de Machine learning, também é uma rede social para cientistas de dados.
O Kaggle é uma plataforma feita para a comunidade de Data Science e Machine
learning, cujos propósitos são compartilhar conjuntos de dados, fomentar a
formação de novos Data-Scientists e engenheiros de Machine learning, e promover
competições entre profissionais da área (JORDÃO, 2018).

FIGURA 18 – EXEMPLO DE UTILIZAÇÃO DO KAGGLE

FONTE: O autor

Em seu ambiente, o Kaggle disponibiliza diversos recursos além dos


conjuntos de dados. Você poderá codificar on-line, utilizar Jupyters e participar
de desafios utilizando os datasets da plataforma.

DICAS

Acesse o Kaggle, crie sua conta e explore os mais diversos datasets que a
plataforma disponibiliza: https://www.kaggle.com/.

5.6 UCI MACHINE LEARNING REPOSITORY


Em ambientes de pesquisa científica, o UCI Machine learning Repository
está entre os sites mais utilizados para obter datasets para realização de pesquisas,
bem como para benchmark para novas bases criadas (MENEZES, 2016).
30
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING

O UCI Machine learning Repository é um site que provê diversos datasets


gerados e utilizados pela comunidade para aplicação de algoritmos de Machine
learning. Foi criado, inicialmente, em 1987, por David Aha e outros alunos da
Universidade da Califórnia.

Esse site tem sido muito utilizado por pesquisadores em todo mundo como
um centralizador com diversos conjuntos de dados. Essa centralização permite
que possam ser comparados diferentes resultados, metodologias e abordagens
que utilizam o mesmo conjunto de dados.

A Figura 19 mostra um trecho do acesso a um Dataset (no caso, Iris Dataset),


na qual: Data Set Information traz um texto descrevendo, de maneira geral, do que
se trata o conjunto de dados; Attribute Information descreve cada campo e seu
respectivo tipo de dados; e Relevant Papers traz a lista de artigos que utilizaram o
Dataset para o seu desenvolvimento.

FIGURA 19 – EXEMPLO DA UTILIZAÇÃO DO UCI MACHINE LEARNING REPOSITORY

FONTE: O autor

DICAS

Link para acesso ao UCI Machine learning Repository: https://archive.ics.uci.


edu/ml/index.php.

31
UNIDADE 1 — MACHINE LEARNING

TUROS
ESTUDOS FU

Existem diversos outros sites que disponibilizam bases de dados, com duas
opções interessantes com dados brasileiros:

• Portal Brasileiro de Dados Abertos: concentra dados do governo brasileiro, distribuindo


dados e informações públicas sobre os mais diversos setores do governo. Disponível
em: http://www.dados.gov.br/.
• O Brasil em Dados Libertos: é um site mantido pela comunidade de desenvolvedores e
cientistas de dados brasileiros, que tem como objetivo aumentar a qualidade dos dados
disponibilizados pelo governo, bem como complementá-lo por meio de outras fontes.
Disponível em: https://brasil.io/.

32
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• Existem diversas linguagens de programação e bibliotecas para desenvolver


algoritmos de Machine learning.

• Por diversas características positivas, o Python é uma das linguagens mais


utilizadas para a aplicação de Machine learning.

• O Python pode ser instalado nos principais sistemas operacionais do mercado.

• É possível codificar algoritmos de Machine learning on-line pelo Google Colab


Research.

• É possível executar algoritmos de Machine learning utilizando GPU.

• Os versionadores de código permitem uma melhor gestão dos algoritmos


desenvolvidos.

• Algoritmos de Machine learning podem consumir dados de diversos tipos de


fontes de dados, bem como serem aplicados em vários cenários.

• Existem diversos conjuntos de dados sob os quais podem ser realizados


experimentos e desenvolvidas aplicações de Machine learning.

33
AUTOATIVIDADE

1 Leia o texto a seguir:

Machine learning pode ser utilizado para vários objetivos, para ofertar
programação de acordo com sua utilização na Netflix, saber o que estão
falando sobre sua marca no Twitter e detecção de fraudes em compras com
cartão de crédito, por exemplo.

FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo-
nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível
em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020

Assinale a alternativa CORRETA que contenha uma linguagem de


programação que pode ser utilizada para desenvolvimento de algoritmos de
Machine learning:

a) ( ) Matlab.
b) ( ) Python.
c) ( ) Java.
d) ( ) Todas as alternativas.

2 No desenvolvimento de programas que aplicam algoritmos de Machine


learning, a linguagem Python tem sido muito utilizada, principalmente pelo
seu grande número de bibliotecas e pela participação da comunidade em
sua evolução. Dentro do Python, o PIP tem uma importante contribuição.
Assinale a alternativa CORRETA sobre o PIP:

a) ( ) O PIP é o gerenciador de pacotes do Python.


b) ( ) O PIP é o gerenciador de arquivos do Python.
c) ( ) O PIP é a linguagem de programação do Python.
d) ( ) O PIP é o sistema operacional do Python.

3 O Jupyter Notebook permite a execução de códigos Python no navegador,


fazendo com que os usuários incluam texto formatado, visualizações
estáticas e dinâmicas, equações matemáticas, entre outros recursos. Assinale
a alternativa CORRETA com o comando para inicializar o Jupyter Notebook:

a) ( ) pip install jupyter.


b) ( ) sudo apt-get jupyter.
c) ( ) jupyter notebook.
d) ( ) notebook jupyter.

34
4 Leia o texto a seguir:

Machine learning é uma técnica utilizada para auxiliar os programas a


aprenderem a partir de informações existentes em bases de dados, cujo
principal objetivo é a previsão de resultados futuros, por exemplo, indicando
um produto do agrado de um consumidor de acordo com o comportamento
de compras dele.

FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo-
nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível
em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020.

Sobre o Google Colab Research, assinale a alternativa CORRETA:

a) ( ) É uma linguagem de programação.


b) ( ) É uma plataforma colaborativa para codificação.
c) ( ) É um navegador de internet.
d) ( ) É um porta-documentos na nuvem.

5 As aplicações de Machine learning estão dominando os mais diversos setores,


mandatoriamente os da tecnologia, mas também envolvendo diversas áreas
multidisciplinares. Com isso, são gerados cada vez mais dados. Vimos alguns
sites de datasets que fornecem dados para pesquisas com Machine learning.
Busque na web e liste ao menos outros cinco sites que forneçam dados.
1. _________________________________________________________________
2. _________________________________________________________________
3. _________________________________________________________________
4. _________________________________________________________________
5. _________________________________________________________________

35
36
TÓPICO 3 —
UNIDADE 1

ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

1 INTRODUÇÃO
Ao atuar no desenvolvimento de software, existe um conjunto de
ferramentas que auxilia a garantir a qualidade do software que chegará ao usuário
final. Há todo o arcabouço fornecido pela engenharia de software, levantamento
de requisitos, diagramas UML (Unified Modeling Language) e também técnicas de
teste de software – tudo para garantir que o software desenvolvido atenderá a
necessidade de um cliente, o usuário final.

No entanto, neste livro didático não tratamos do simples processo de


software que atenderá à necessidade de um usuário. Um algoritmo de Machine
learning automatizará importantes processos nas organizações e, muitas vezes,
até pode substituir o agente humano em tais operações.

FIGURA 20 – ROBÔS QUE UTILIZAM MACHINE LEARNING

FONTE: <https://cutt.ly/tgBisbb>. Acesso em: 2 out. 2020.

Quando falamos que um algoritmo de Machine learning pode substituir


um ser humano, por exemplo, na forma de chatbot, temos que considerar que, se
ele falhar, poderá apresentar erros como saudar um cliente com bom dia em vez
de boa noite ou, até mesmo, responder a alguma informação de maneira errônea
em um FAQ da empresa. E se for um algoritmo que realiza análise e predição de
células cancerígenas? Com certeza, ele terá uma responsabilidade maior, trazendo
preocupação com quem o desenvolveu e para seus usuários.

Para ambos os exemplos citados, existe um fluxo de implementação


(Figura 21) para algoritmos de Machine learning. Trata-se de uma sequência de
passos que objetivam ensinar o algoritmo, a partir de um conjunto de dados, a
realizar a ação, mas, principalmente, garantir que o algoritmo aprendeu.
37
UNIDADE 1 — MACHINE LEARNING

FIGURA 21 – FLUXO DE UM ALGORITMO DE MACHINE LEARNING

FONTE: Adaptado de <https://cutt.ly/igBiTd0>. Acesso em: 2 out. 2020.

2 COLETA DE DADOS
A etapa de coleta de dados é a primeira do processo de Machine learning e
pode ser simples, do ponto de vista de se conectar a um Dataset CSV ou a um banco
de dados relacional. No entanto, quando se trabalha com outros tipos de dados,
torna-se necessário criar scripts específicos para coletar dados desses cenários.

E
IMPORTANT

Ao longo dos próximos conteúdos, desenvolveremos exemplos práticos


de todas as etapas do processo de Machine learning. No que se refere à etapa de
coleta de dados, ela é muito similar ao processo de extração de um Data Warehouse,
por isso recomendamos a leitura do livro “Business intelligence na prática: modelagem
multidimensional e data warehouse”, disponível na Biblioteca Virtual da UNIASSELVI:
https://bibliotecavirtual.uniasselvi.com.br/livros/livro/247328.

3 PREPARAÇÃO DOS DADOS


Cada base de dados tem uma característica em especial, sejam números,
textos, imagens ou vídeos. Não importa o tipo de dados que exista na fonte na
hora da coleta, uma série de procedimentos deve ser realizada, a fim de preparar
os dados para a execução de um algoritmo.

Sabe-se que mais de 80% do tempo necessário para realizar qualquer


projeto de Machine learning com dados reais, geralmente, é gasto na etapa de
preparação dos dados (LOSARWAR; JOSHI, 2012). Essa etapa é responsável por
preparar os dados, tornando-os mais limpos e consistentes para a execução de
um algoritmo de Machine learning.

A preparação de dados é a etapa em que se deve tratá-los, de forma


correta, antes de seu uso ou armazenamento. Pode ser utilizada em conjunto com
a análise exploratória de dados, quando se realiza um estudo das características
dos dados, geralmente por meio de gráficos (ERBS, 2020, p. 13).
38
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

DICAS

Nos exemplos práticos, aplicaremos alguns dos principais métodos de


preparação dos dados, conforme é possível observar no livro Business intelligence na
prática: modelagem multidimensional e data warehouse, disponível na sua Biblioteca
Virtual: https://bibliotecavirtual.uniasselvi.com.br/livros/livro/247328.

Com relação ao processo de preparação de dados e análise exploratória, recomendamos


a leitura do livro Preparação e Análise Exploratória de Dados, disponível em: https://
bibliotecavirtual.uniasselvi.com.br/livros/livro/249088.

4 ESCOLHA DO MODELO
O processo de desenvolvimento com Machine learning pode envolver um
ou vários algoritmos para sua implementação. Esse é o momento de selecionar
os algoritmos que serão avaliados e futuramente aplicados em sua aplicação de
Machine learning.

No decorrer dos nossos estudos, você aprenderá alguns dos principais


algoritmos utilizados em Machine learning. Segundo Mall et al. (2014), existem
diversos métodos de Machine learning no mundo, para as mais diversas aplicações.

Então, como escolher o melhor algoritmo para resolver o seu problema? O


primeiro passo é seguir os estudos deste livro didático – note que você já conhece
os principais tipos de dados e as principais tarefas para os respectivos datasets.
No decorrer dos seus estudos, seu conhecimento sobre tarefa de aprendizado de
máquina, bem como os principais métodos, será aprofundado – e isso servirá de
fundamento para a escolha de um método de Machine learning.

Complementarmente, lembre-se de que você está se tornando um cientista


de dados e esse é o momento de recorrer ao método científico. Especificamente,
para obter os principais métodos, será necessário realizar uma pesquisa
exploratória nas principais bases de dados, tendo como objetivo encontrar artigos
científicos relacionados ao problema que deseja resolver.

NOTA

Pesquisa exploratória: é usada em casos nos quais é necessário definir


o problema com maior precisão e identificar cursos relevantes de ação ou obter dados
adicionais antes que se possa desenvolver uma abordagem. Como o nome sugere, a
pesquisa exploratória procura explorar um problema ou uma situação para prover critérios e
compreensão (VIEIRA, 2002).

39
UNIDADE 1 — MACHINE LEARNING

DICAS

Confira a lista com algumas das principais bases de dados acadêmicos que
podem ajudá-lo a encontrar artigos científicos: https://blog.doity.com.br/sites-de-artigos-
cientificos/.

Aniceto (2016) é um exemplo de pesquisa exploratória com revisão da


literatura para suporte na escolha de um método de Machine learning. Esse estudo
visa a identificar técnicas de Machine learning para estimação de risco de crédito.

No trabalho de Aniceto (2016), foi possível listar mais de 50 algoritmos


diferentes para resolução do problema, os quais foram obtidos na leitura de 80
artigos distribuídos em dez revistas científicas. A Figura 22 mostra um gráfico de
radar que sumariza os principais métodos obtidos e permitiu a continuidade das
etapas do processo de Machine learning.

FIGURA 22 – TÉCNICAS DE APRENDIZADO DE MÁQUINA MAIS UTILIZADAS NA ESTIMAÇÃO DE


RISCO DE CRÉDITO

FONTE: Aniceto (2016, p. 31)

DICAS

Para realizar um estudo mais aprofundado, você pode fazer a leitura do trabalho
de Aniceto (2016), disponível em: https://repositorio.unb.br/bitstream/10482/20522/1/2016_
Ma%c3%adsaCardosoAniceto.pdf.

40
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

5 TREINO E TESTE
Você já sabe que os algoritmos de Machine learning aprendem com
determinado conjunto de dados. O objetivo desses algoritmos é realizar a predição
de um campo (chamado de output) com base em um conjunto de características
(input).

Se o algoritmo utilizar todo o conjunto de dados para aprender, a única


maneira de saber até que ponto um modelo está funcionando corretamente é testá-
lo em novos casos. Uma maneira de fazer isso é colocar seu modelo em produção e
monitorar o seu desempenho, o que, em teoria, não parece ser uma má ideia, mas,
se o modelo for horrivelmente ruim, você pode ter sérios problemas (GÉRON, 2019).

Para compreender melhor, imagine que você esteja desenvolvendo um


algoritmo para a detecção de células cancerígenas (malignas ou benignas). Para
isso, pode considerar o dataset Breast Cancer Wisconsin, que exibe dados extraídos,
a partir de uma imagem digitalizada de massa mamária, e cada atributo descreve
características dos núcleos celulares presentes na imagem (Figura 23).

FIGURA 23 – EXEMPLO DO DATASET BREAST CANCER WISCONSIN

FONTE: <https://miro.medium.com/max/1200/1*ettn8qdhqVnhGGmnSrDg0A.png>.
Acesso em: 2 out. 2020.

DICAS

O dataset Breast Cancer Wisconsin pode ser acessado pelo link: https://archive.
ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic).

41
UNIDADE 1 — MACHINE LEARNING

Se você utilizar todo o conjunto de dados históricos para ensinar seu


algoritmo de Machine learning, só haverá uma maneira de verificar se ele aprendeu
corretamente: testar se o algoritmo está predizendo corretamente com dados reais
dos usuários que venham a utilizar esse sistema. Dada a complexidade desse
cenário, é possível imaginar a quantidade de problemas que isso pode ocasionar.

Diante disso, a melhor opção é dividir os dados do dataset em dois


conjuntos: o conjunto de treinamento (treino) e o conjunto de teste. Como esses
nomes sugerem, você treina seu modelo usando o conjunto de treinamento
(momento em que o algoritmo estará aprendendo) e o testa utilizando o conjunto
de teste (momento em que se verifica se o algoritmo aprendeu com os dados;
GÉRON, 2019).

Para compreender melhor como que funciona essa separação no


aprendizado, imagine-se ensinando determinado caminho a uma criança.
Esse caminho segue um padrão e você guiará a criança até determinado ponto
(cerca de 75% do caminho), no qual ela visualizará todas as curvas e obstáculos,
aprendendo sobre os padrões.

FIGURA 24 – PROCESSO DE TREINAMENTO NO COTIDIANO

FONTE: <https://teachyourkidscode.com/coding-game-for-kids/>. Acesso em: 2 out. 2020.

Em um segundo momento será a hora de avaliar se a criança aprendeu


os padrões do caminho. Lembre-se de que ela não conhece 25% do caminho,
os quais serão utilizados para testar se ela aprendeu. A partir da área testada,
você poderá avaliar se ela seguiu corretamente o caminho, podendo atribuir um
percentual de acerto.

42
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

FIGURA 25 – TESTE NO COTIDIANO: 25% DO CAMINHO DESCONHECIDO

FONTE: <https://teachyourkidscode.com/coding-game-for-kids/>. Acesso em: 2 out. 2020.

O processo de esconder uma parte dos dados permite garantir a


capacidade de generalização (erro de generalização ou taxa de generalização). A
generalização significa algo genérico, ou seja, a capacidade de o método predizer
algo em um cenário desconhecido.

No exemplo do dataset Breast Cancer Wisconsin, o mesmo teste pode ser


realizado, ao fatiarmos o conjunto de dados, com 75% dos registros para realizar
o treino e 25% para realizar os testes. A Figura 26 mostra um exemplo com as
proporções dos dados utilizados – vale ressaltar que, no momento do teste, a
coluna a ser predita.

DICAS

O tamanho da fatia pode variar em diversas abordagens da literatura. Em geral,


as fatias de treino variam entre 70%, 75% e 80% (SU, 2020; AGARAP, 2018; GÉRON, 2016).

43
UNIDADE 1 — MACHINE LEARNING

FIGURA 26 – DIVISÃO DO DATASET EM TREINO/TESTE

FONTE: O autor

TUROS
ESTUDOS FU

Até o momento, dissertamos, de maneira genérica, sobre o processo de


treino e teste, tendo como objetivo fluidez em seus estudos sobre as etapas do processo
de Machine learning. A partir da Unidade 2, retomaremos esse conteúdo com uma visão
prática, aplicada ao desenvolvimento dos métodos de Machine learning.

6 AVALIAÇÃO
Até aqui, aprendemos que é necessário que um conjunto de dados
consistente e limpo seja fatiado em treino e teste, para ser consumido por um
algoritmo de Machine learning.

A avaliação é responsável por utilizar o conjunto de testes e verificar a


capacidade de generalização do algoritmo, ou seja, verificar se o algoritmo aprendeu
com os dados de treino. No exemplo do Dataset Breast Cancer Wisconsin, uma das
métricas de avaliação, que pode ser utilizada, é a acurácia. Trata-se de uma métrica
simples, que retorna a porcentagem de acerto com base no conjunto de teste.

44
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

UNI

Cada tarefa de Machine learning tem métricas específicas. No decorrer dos


estudos sobre os métodos, abordaremos cada métrica especificamente.

7 TUNING DE PARÂMETROS
Ao longo dos seus estudos, você conhecerá diversos métodos de Machine
learning, cada um com características específicas. A etapa de Tuning tem como
objetivo obter os melhores parâmetros, para que os algoritmos obtenham o melhor
desempenho possível.

8 PREDIÇÃO
A etapa de predição está relacionada com o funcionamento do Machine
learning em si, sendo feita quando toda a preparação dos dados foi realizada,
bem como o algoritmo foi selecionado e avaliado. Vale ressaltar que, durante
todo o processo, devem ser selecionados o algoritmo e os parâmetros com melhor
desempenho, de acordo com as medidas de avaliação.

FIGURA 27 – ALGORITMO DE MACHINE LEARNING EM FUNCIONAMENTO

FONTE: <https://cutt.ly/QgBpDm7>. Acesso em: 2 out. 2020.

A etapa da predição em um sistema que utiliza Machine learning é análoga


à etapa de produção de um software de gestão, inclusive podem acontecer em
conjunto. É, nesse momento, que o algoritmo irá para funcionamento. No exemplo
que utilizamos, a predição será o algoritmo que realizará o diagnóstico dos pacientes
com base em imagens.

45
UNIDADE 1 — MACHINE LEARNING

LEITURA COMPLEMENTAR

5 HISTÓRIAS DE SUCESSO DE USO DE MACHINE LEARNING


Clint Boulton

Segundo um levantamento do Gartner, 58% das empresas afirmaram que


já implantaram inteligência artificial (IA) em seus negócios e que têm, em média,
quatro projetos de IA/machine learning (ML) em andamento. Os participantes
também revelaram que esperam adicionar mais seis projetos nos próximos 12
meses e outros 15 nos próximos três anos. Até 2022, a expectativa é de que essas
organizações tenham uma média de 35 iniciativas de IA ou ML.

De acordo com Whit Andrews, analista do Gartner, a melhor experiência do


cliente e a automação de tarefas por meio de assistentes virtuais, para atendimento
e tomada de decisão, estão entre os projetos mais populares nas empresas. Apesar
disso, os investimentos, por si só, não contribuem para um trabalho de IA mais
amplo, já que uma pesquisa com 2.473 organizações, realizada pela IDC, descobriu
que apenas 25% desenvolveram estratégias de IA para toda a companhia.

Segundo o relatório da IDC, cerca de 25% dos entrevistados apresentaram


taxa de falha de 50% na implantação dos sistemas, por conta da falta de talentos e
expectativas irrealistas. Contudo, mesmo com as dificuldades, empresas de todo
o mundo parecem estar dispostas a arriscar na tecnologia. Neste artigo, CEOs
que estão experimentando, construindo e implementando IA e ML compartilham
seus casos e dão alguns conselhos práticos.

Conheça JiLL: assistente de IA para escritório


Muitas pessoas não acreditam que uma empresa de imóveis comerciais
utilizaria IA, mas a Jones Lang LaSalle (JLL) se associou ao Google para
desenvolver a JiLL, uma assistente de voz que permite que os funcionários do
escritório façam reuniões, encontrem colegas, consultem horários ou preencham
solicitações de serviço por voz ou texto.

FIGURA 1 – ASSISTENTE DE IA JILL

FONTE: <https://cutt.ly/wgBp3Cs>. Acesso em: 2 out. 2020.

46
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

“A JiLL pode lidar com solicitações como ‘Hey, JiLL, marcar uma reunião
semanal com minha equipe’ ou ‘Hey, JiLL, encontrar uma mesa desocupada no
terceiro andar esta tarde’”, explica o diretor de produtos digitais da JLL, Vinay Goel.

Goel diz que JiLL leva em consideração os conjuntos de dados da JLL sobre
edifícios, interações de usuários e transações em espaços físicos, que são processados
dentro do GCP, bem como containers do Kubernetes. “Com o tempo, esperamos
que a JiLL se torne uma plataforma essencial para centenas de habilidades que
ajudam os funcionários a melhorarem sua produtividade diária”, acrescenta Goel.

Conselho-chave: para as organizações que procuram mudar os serviços,


os assistentes virtuais podem ser um investimento que vale a pena. A JiLL, da JLL,
faz parte de uma estratégia para alavancar a tecnologia, para fornecer serviços
de valor agregado, idealmente para atrair mais clientes. A JLL planeja adicionar
outras habilidades e abrir a plataforma para recursos de terceiros, parte de uma
estratégia de mercado projetada para impulsionar a adoção da tecnologia. De
forma mais ampla, a iniciativa sugere que assistentes virtuais serão popularizados
para o consumo geral.

Machine learning para análise de crédito

Na gigante de análise de crédito Experian, a transformação digital preparou


o caminho para um novo produto estratégico, que aproveita os recursos da ML:
o Ascend Analytics On Demand, uma plataforma de análise de autoatendimento
que permite às empresas criar modelos preditivos para determinar fatores críticos,
qualificando os consumidores para a avaliação de solicitações de crédito.

FIGURA 2 – PLATAFORMA DE ANÁLISE DE AUTOATENDIMENTO DA EXPERIAN

FONTE: <https://cutt.ly/FgBakWj>. Acesso em: 2 out. 2020.

Os clientes podem fazer análises robustas de dados em questão de


minutos, em comparação com o que atualmente leva várias semanas. Idealmente,
a ferramenta permitirá que os consumidores recebam qualificações para crédito
a partir de sua demanda.

47
UNIDADE 1 — MACHINE LEARNING

“Os clientes querem a capacidade de ver enormes conjuntos de informações


em tempo real”, diz Barry Libenson, CEO da Experian Global, que supervisionou a
construção da plataforma. “Já se foram os dias em que poderíamos prescrever coisas.
Eles os querem em tempo real, quando querem, da maneira que querem”, acrescenta.

Recomendação importante: você não pode criar novas plataformas de


análise em softwares já existentes e esperar que elas tenham um bom desempenho.
Para apoiar a Ascend, a Experian adotou uma abordagem de nuvem híbrida e
investiu em ferramentas de código aberto, incluindo containers, mecanismos de
API e microsserviços. A Experian também padronizou a maneira como constrói e
consome software, com aplicativos e códigos que podem ser reutilizados por seus
funcionários e clientes em todo o mundo.

Machine learning para combater fraudes em cartão de crédito

Como as empresas de monitoramento de crédito, as empresas de cartão


de crédito estão sempre lutando contra as fraudes. Em uma época em que
muitos especialistas criticam o digital, como se a tecnologia fosse a ruína para a
privacidade e a segurança on-line, as ferramentas de ML e IA podem tornar os
serviços mais seguros do que os tradicionais cartões de crédito de plástico.

A Mastercard utiliza diversas camadas de ML e IA para eliminar


consumidores com intenção maliciosa. Na base do sistema, está um banco de
dados que já salvou a companhia de um prejuízo estimado em US$ 1 bilhão em
perdas por fraude desde 2016, afirma Ed McLaughlin, presidente de tecnologia e
operações da Mastercard.

FIGURA 3 – DETECÇÃO DE FRAUDES EM CARTÃO DE CRÉDITO

FONTE: <https://cutt.ly/zgBaUWL>. Acesso em: 2 out. 2020.

Para evitar os crimes, o software usa mais de 200 atributos capazes de


antecipar e evitar as ações fraudulentas. Esse sistema central, combinado com
tokenização, biometria, deep learning e outras abordagens inovadoras, ajudou a
Mastercard a manter sua reputação como empresa segura.

48
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING

Conselho-chave: os seres humanos são o elo mais fraco quando se trata de


segurança cibernética. “O mais importante é tirar o humano do circuito” o máximo
possível, diz McLaughlin, acrescentando que o software de ML, IA e processamento de
linguagem natural são componentes essenciais no kit de ferramentas da Mastercard.

Machine learning para empresa de corridas


A Mercedes-AMG Petronas Motorsport está usando as capacidades de
ML para ajudar a visualizar o desempenho dos carros de corrida. Para isso, a
companhia coleta diversos canais de dados em seus veículos da Fórmula 1, às
vezes até 10.000 pontos por segundo, para tomar decisões importantes, explica
Matt Harris, líder de TI da Mercedes.

A empresa usa o software da Tibco para visualizar as variáveis, como clima,


temperatura dos pneus e quantidade de combustível em seus carros. O software
também permite que os engenheiros analisem detalhes como o desempenho e
o desgaste das engrenagens das máquinas. Em geral, os motoristas trocam de
marcha 100 vezes a cada volta, e cada vez que o piloto faz uma troca, a Tibco
coleta cerca de 1.000 pontos de dados.

FIGURA 4 – USO DE ML PELA MERCEDES NA FÓRMULA 1

FONTE: <https://www.pinterest.at/pin/732890539330718731/>. Acesso em: 2 out. 2020.

“Quando você visualiza esses dados, é realmente possível fazer a caixa de


engrenagens durar mais tempo ou, o que é mais importante, fazer mudanças de
engrenagens mais duras”, diz Harris. “Você pode descobrir que, se você colocar
a caixa de engrenagens em um modo específico, será aproximadamente 50
milissegundos mais rápido por volta. Carros podem ser separados por milésimos
de segundo na qualificação, então 50 milissegundos são importantes”, finaliza.

Harris afirma ainda que a companhia está construindo algoritmos de ML


para ajudar a “fazer coisas que os humanos não podem". O executivo acredita
que essas capacidades acabarão por se tornar um facilitador chave para a equipe,
dando vantagem competitiva frente aos concorrentes.

Recomendação importante: por que criar algo que não é sua competência
principal? Antes de aterrissar na Tibco, a Mercedes-AMG Petronas usou um
software de visualização caseiro que se mostrou ineficiente demais para ser
49
UNIDADE 1 — MACHINE LEARNING

mantido ao longo do tempo. Ao se apoiar na Tibco, a empresa pôde se concentrar


em sua força: construir carros de alto desempenho. “O importante é permitir que
as pessoas sejam criativas e pensem em resolver problemas”, defende Harris.

Machine learning para prever rotatividade nas empresas


Como a maioria das empresas de reparo automotivo, a Caliber Collision há
muito tempo tem um problema de rotatividade, já que mecânicos, pintores e membros
das equipes de suporte ao cliente tendem a entrar e deixar as companhias rapidamente.

Parte do problema, segundo a Caliber, é que suas lojas, muitas vezes, não
tinham carros suficientes para a equipe consertar, resultando em pagamentos
inconsistentes. Isso fez com que o CEO Ashley Denison se perguntasse: e se a Caliber
pudesse prever quando um funcionário poderia querer sair e fazer intervenção?

A partir dessa ideia, a companhia começou a trabalhar com a consultora


de tecnologia Sparkhound, que criou programas para extrair dados do setor de
Recursos Humanos da Caliber, complementando-os com o Microsoft PowerBI
para criar um modelo capaz de prever a saída de um funcionário. Em seguida, a
Caliber entra em contato com a equipe para aplicar sistemas de intervenção.

FIGURA 5 – VISUALIZAÇÃO DO PROGRAMA AXPULSE DA CALIBER

FONTE: <https://cutt.ly/6gBa9SU>. Acesso em: 2 out. 2020.

Se o pagamento de um funcionário demora a cair, por exemplo, os gerentes


regionais da Caliber podem conseguir mais carros para o colaborador trabalhar.
Por outro lado, se um funcionário está sobrecarregado, a empresa pode realocar
alguns carros para outras equipes. O resultado? A Caliber está economizando até
US$ 1 milhão por ano.

Os principais conselhos: eliminar problemas para economizar dinheiro


é uma maneira prática de usar algoritmos. “Torna muito mais fácil reter os
funcionários depois de sua entrada”, completa Denison.

FONTE: Adaptado de BOULTON, C. 5 histórias de sucesso de uso de Machine Learning. CIO.


com. IT MIDIA, 24 jul. 2019. Disponível em: https://cio.com.br/tendencias/5-historias-de-sucesso-
-de-uso-de-machine-learning/. Acesso em: 2 out. 2020.

50
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• Para garantir o processo de aprendizagem, os algoritmos de Machine learning


são compostos por sete etapas principais.

• O processo de coleta de dados é responsável por coletar os dados das fontes.

• A preparação dos dados realiza todas as operações necessárias para que os


dados coletados sejam mais bem compreendidos pelos algoritmos de Machine
learning.

• Durante a escolha do modelo, é necessário um conhecimento prévio sobre os


algoritmos de Machine learning e saber que a ciência pode ser utilizada para se
conhecer problemas já solucionados.

• A etapa de treino e teste é uma das mais importantes, pois é, nesse processo,
que será possível avaliar os métodos de Machine learning.

• Existem diversas métricas de avaliação, cada uma para um tipo de tarefa de


Machine learning e todas servem para avaliar o aprendizado dos métodos.

• O processo de tuning tem como objetivo ajustar os parâmetros dos métodos


para obter melhores resultados.

• A predição é o processo de colocar o algoritmo em produção, realizando


tarefas no mundo real.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

51
AUTOATIVIDADE

1 Considere o texto e a imagem a seguir:

Para que ocorra o armazenamento dos Tweets para posterior uso nas consultas,
é efetuada a coleta dos textos, assim como o pré-processamento, compondo a
etapa de ETL. Finalmente, após os dados pré-processados e limpos, podem ser
realizadas consultas OLAP para explorar o cubo de dados. Com os textos já
limpos, seleciona-se a data do registro e é efetuada sua formatação para que possa
ser inserido na base. A partir disso, os dados do Tweet estão preparados para que
possam ser “quebrados” e se efetue a Bag of Words. Com os dados do Tweet, as
palavras são quebradas pelo script e inseridas na base de dados multidimensional.
Caso a palavra já exista na base, é apenas atualizada sua frequência.

FONTE: SUTER, J. et al. Um Data Warehouse baseado no Twitter para análise de sentimento
em língua portuguesa: estudo de caso das eleições de 2018. In: Anais da XV Escola Regional
de Banco de Dados. Anais [...] SBC, 2019. p. 41-50. Disponível em: https://sol.sbc.org.br/index.
php/erbd/article/view/8477/8378. Acesso em: 2 out. 2020.

Analisando a imagem e associando com as etapas de aprendizado de um


algoritmo de Machine learning, assinale a alternativa CORRETA sobre em qual
etapa o processo de fonte de dados e Crawler estão relacionados:

a) ( ) Coleta de dados.
b) ( ) Preparação de dados.
c) ( ) Escolha do modelo.
d) ( ) Divisão em treino/teste.

2 Considere o texto a seguir:

52
Uma coleção de 243 perguntas em português, curadas por profissionais
médicos, também foi incluída na base de conhecimento do chatbot Dra. Lara,
para ter capacidade de responder às perguntas comuns que as gestantes
normalmente querem saber, como a possibilidade de comer um determinado
elemento ou riscos associados à prática de um determinado exercício.

FONTE: CARVALHO, L. et al. Dra. Lara: assistente virtual de apoio e acompanhamento ao pré-
-natal. In: Conferências IADIS Ibero-Americanas WWW/Internet e Computação Aplicada.
Anais [...] 2019. Disponível em: https://www.researchgate.net/publication/338668367_DRA_
LARA_ASSISTENTE_VIRTUAL_DE_APOIO_E_ACOMPANHAMENTO_AO_PRE-NATAL. Acesso
em: 2 out. 2020.

Considerando que se deseja avaliar a base de dados, assinale a alternativa


CORRETA com o nome de como a base de dados é dividida para tal fim:

a) ( ) Treino/teste.
b) ( ) Coleta de dados.
c) ( ) Preparação de dados.
d) ( ) Seleção.

3 Machine Learning tem como objetivo principal a extração de conhecimentos


a partir dos dados, na qual, entre suas técnicas, se destaca a classificação.
Sobre a classificação de spams, considere a figura a seguir:

FONTE: <https://towardsdatascience.com/spam-or-ham-introduction-to-natural-language-
-processing-part-2-a0093185aebd?gi=c3977479b17d>. Acesso em: 2 out. 2020.

Assinale a alternativa CORRETA sobre o que representa o campo Prediction:

a) ( ) Predição de um campo (output).


b) ( ) Conjunto de características (input).
c) ( ) Conjunto de características (output).
d) ( ) Predição de um campo (input).

4 Os algoritmos de Machine learning geram conhecimento a partir de bases


de dados, permitindo realizar, entre muitas tarefas, a classificação. Sobre a
tarefa de classificação de spams, considere a figura a seguir:

53
FONTE: <https://towardsdatascience.com/spam-or-ham-introduction-to-natural-language-
-processing-part-2-a0093185aebd>. Acesso em: 2 out. 2020.

Assinale a alternativa CORRETA sobre o que representa o campo text:

a) ( ) Conjunto de características (input).


b) ( ) Predição de um campo (output).
c) ( ) Conjunto de características (output).
d) ( ) Predição de um campo (input).

5 Considere o texto a seguir:

Os algoritmos de Machine learning, também conhecidos como aprendizes,


são diferentes: eles descobrem tudo sozinhos, fazendo inferências a partir de
dados. E quanto mais dados têm, melhor ficam seus resultados.

FONTE: DOMINGOS, P. O algoritmo mestre: como a busca pelo algoritmo de Machine lear-
ning definitivo recriará nosso mundo. Novatec Editora, 2017.

Assinale a alternativa CORRETA sobre a etapa do processo de Machine learning


que tem como objetivo obter os melhores parâmetros para os algoritmos:

a) ( ) Tuning de parâmetros.
b) ( ) Predição de parâmetros.
c) ( ) Conjunto de parâmetros.
d) ( ) Aplicação de parâmetros.

54
REFERÊNCIAS
AGARAP, A. F. M. On breast cancer detection: an application of machine learning
algorithms on the wisconsin diagnostic dataset. In: Proceedings of the 2nd In-
ternational Conference on Machine Learning and Soft Computing. Proceedings
[…] 2018. p. 5-9.
ANICETO, M. C. Estudo comparativo entre técnicas de aprendizado de máqui-
na para estimação de risco de crédito. 2016, 106f. Dissertação de Mestrado (Pro-
grama de Pós-Graduação em Administração). Universidade de Brasília, Brasília,
2016. Disponível em: https://repositorio.unb.br/bitstream/10482/20522/1/2016_
Ma%c3%adsaCardosoAniceto.pdf. Acesso em: 2 out. 2020.
CAO, C. et al. Deep learning and its applications in biomedicine. Genomics,
Proteomics & Bioinformatics, v. 16, n. 1, p. 17-32, 2018.
CARDOSO, A.; LEITÃO, J.; TEIXEIRA, C. Using the Jupyter notebook as a
tool to support the teaching and learning processes in engineering courses.
ICL 2018: The Challenges of the Digital Transformation in Education. Springer,
Cham, 2018. p. 227-236.
CHOW, M. Inteligência artificial e machine learning: o caminho para a relevância
em escala. Think with Google, out. 2017. Disponível em: https://www.thinkwithgoo-
gle.com/intl/pt-br/advertising-channels/novas-tecnologias/inteligencia-artificial-e-
-machine-learning-o-caminho-para-relevancia-em-escala/. Acesso em: 20 abr. 2020.
COMPUTERWORLD. Python: 10 motivos para aprender a linguagem em 2019.
COMPUTERWORLD. 15 set. 2019. Disponível em: https://computerworld.com.
br/2019/09/15/python-10-motivos-para-aprender-a-linguagem-em-2019/. Acesso
em: 20 abr. 2020.
ERBS, S. Preparação e Análise Exploratória de Dados. Indaial: UNIASSELVI, 2020.
FAYYAD, U.; PIATETSKY-SHAPIRO, G.; SMYTH, P. From data mining to
knowledge discovery in databases. AI Magazine, v. 17, n. 3, p. 37-37, 1996.
GÉRON, A. Hands-on machine learning with Scikit-Learn, Keras, and Ten-
sorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. 2. ed.
O’Reilly Media, 2019.
GIORDANI, V. A. et al. Automatização do processo de entrega de softwres. 2019,
75f. Monografia. Universidade Federal de Santa Catarina, Florianópolis, 2019.
Disponível em: https://repositorio.ufsc.br/bitstream/handle/123456789/200137/
PFC%20Vito%20Archangelo%20Giordani_2019-1.pdf?sequence=1&isAllowed=y.
Acesso em: 2 out. 2020.

55
JORDÃO, R. F. P. Um estudo em larga-escala de repositórios Open Source no
Github que utilizam containers. 2018, 44f. Monografia. Centro de Informáti-
ca, Universidade Federal de Pernambuco, Recife, 2018. Disponível em: https://
www.cin.ufpe.br/~tg/2018-2/TG_SI/rfpj.pdf. Acesso em: 2 out. 2020.
LOSARWAR, V.; JOSHI, M. Data preprocessing in web usage mining. In:
International Conference on artificial intelligence and embedded systems
(ICAIES’2012). Proceedings […] Singapore, jul. 2012.
MALL, R. et al. Representative subsets for big data learning using k-NN graphs.
In: 2014 IEEE INTERNATIONAL CONFERENCE ON BIG DATA. Proceedings
[…] IEEE, 2014. p. 37-42. Disponível em: https://ieeexplore.ieee.org/stamp/stamp.
jsp?tp=&arnumber=7004210. Acesso em: 2 out. 2020.
MENEZES, S. et al. Mineração em grandes massas de dados utilizando hadoop
mapreduce e algoritmos bio-inspirados: Uma revisão sistemática. Revista de
Informática Teórica e Aplicada, v. 23, n. 1, p. 69-101, 2016.
MINSKY, M.; PAPERT, S. Perceptrons – an introduction to computational geo-
metry. Cambridge: MIT Press, 1969. Cited on, p. 1, 1990.
MITCHELL, T. M. et al. Machine learning. McGraw-Hill, 1997. Disponível em:
http://profsite.um.ac.ir/~monsefi/machine-learning/pdf/Machine-Learning-Tom-
-Mitchell.pdf. Acesso em: 2 out. 2020.
MONARD, M. C.; BARANAUSKAS, J. A. Conceitos sobre aprendizado de má-
quina. Sistemas inteligentes-fundamentos e aplicações, v. 1, n. 1, p. 32, 2003.
MOREIRA, M. P. Algoritmos de Machine Learning Aplicado ao Marketing. In:
XV SEMANA CIENTÍFICA DA UNILASALLE CANOAS – SEFIC. Anais [...]
Unilasalle Canoas, 2019, 2020.
NOGUEIRA, R. R. Business Intelligence na prática: Modelagem Multidimensio-
nal e Data Warehouse. Indaial: UNIASSELVI, 2020.
QUINLAN, J. R. C4.5: Programming for machine learning. São Francisco: Mor-
gan Kaufmann, 1993. p. 48.
QUINLAN, J. R. Induction of decision trees. Machine learning, v. 1, n. 1, p.
81-106, 1986. Disponível em: https://link.springer.com/content/pdf/10.1007/
BF00116251.pdf. Acesso em: 2 out. 2020.
QUORA. What is machine learning and how it is linked to Big Data/Data Mi-
ning? 2015. Disponível em: https://www.quora.com/What-is-machine-learning-
-and-how-it-is-linked-to-Big-Data-Data-Mining. Acesso em: 20 abr. 2020.
ROSA, A. L. da. Classificação de imagens de frutas utilizando aprendizado de
máquina. 2019, 74f. Monografia. Departamento de Engenharia Elétrica e Eletrô-
nica, Universidade Federal de Santa Catarina, Florianópolis, 2019. Disponível
em: https://repositorio.ufsc.br/bitstream/handle/123456789/197598/TCC-Ayrton-
-Lima.pdf?sequence=1&isAllowed=y. Acesso em: 2 out. 2020.

56
ROSENBLATT, F. The perceptron, a perceiving and recognizing automaton.
Project Para. Cornell Aeronautical Laboratory, 1957. Disponível em: https://blogs.
umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf. Acesso em: 2 out. 2020.
SAMUEL, A. L. Some studies in machine learning using the game of checkers.
IBM Journal of Research and Development, v. 3, n. 3, p. 210-229, 1959. Dis-
ponível em: https://hci.iwr.uni-heidelberg.de/system/files/private/downlo-
ads/636026949/report_frank_gabel.pdf. Acesso em: 5 out. 2020.
SHOBHA, G.; RANGASWAMY, S. Machine learning. In: GUDIVADA, V. N.;
RAO, C. R. (Eds.). Handbook of Statistics. Amsterdam: Elsevier, 2018. p. 197-228.
SILVERMAN, R. Git – Guia prático. São Paulo: Novatec, 2013.
STANGE, R. L. Adaptatividade em aprendizagem de máquina: conceitos e
estudo de caso. 2011, 98f. Dissertação (Mestrado em Engenharia Elétrica). Uni-
versidade de São Paulo, São Paulo, 2011. Disponível em: https://www.teses.usp.
br/teses/disponiveis/3/3141/tde-02072012-175054/publico/Dissertacao_RLStan-
ge_2011_Revisada.pdf. Acesso em: 5 out. 2020.
SU, X. et al. Automated machine learning based on radiomics features predicts
H3 K27M mutation in midline gliomas of the brain. Neuro-oncology, v. 22, n. 3,
p. 393-401, 2020. Disponível em: https://academic.oup.com/neuro-oncology/arti-
cle-pdf/22/3/393/32794818/noz184.pdf. Acesso em: 5 out. 2020.
VANDERPLAS, J. Python data science handbook: Essential tools for working
with data. O’Reilly Media, 2016.
VIEIRA, V. A. As tipologias, variações e características da pesquisa de marke-
ting. Revista da FAE, v. 5, n. 1, p. 61-70, 2002. Disponível em: https://revistafae.
fae.edu/revistafae/article/download/449/344. Acesso em: 5 out. 2020.
WEITZEL, L.; SPIES, J. H. L.; SANTOS, M. M. Análise do GitHub como rede
social e rede de colaboração. In: 6ª CONFERÊNCIA IBERO-AMERICANA DE
COMPUTAÇÃO APLICADA (CIACA), 2017. Anais [...] Algarve, Portugal, 2017.
p. 252-260. Disponível em: http://www.iadisportal.org/digital-library/mdownlo-
ad/an%C3%A1lise-do-github-como-rede-social-e-rede-de-colabora%C3%A7%-
C3%A3o. Acesso em: 5 out. 2020.
ZUBELLI, F. S. Métodos de inteligência computacional para clusterização de
consumidores no setor de energia elétrica. 2017, 86f. Monografia. Universidade
Federal do Rio de Janeiro, Rio de Janeiro, 2017. Disponível em: http://monogra-
fias.poli.ufrj.br/monografias/monopoli10022747.pdf. Acesso em: 5 out. 2020.

57
58
UNIDADE 2 —

CLASSIFICAÇÃO

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• introduzir os conceitos fundamentais sobre a classificação;


• apresentar as ferramentas complementares para a aplicação de algoritmos;
• exemplificar onde os métodos de classificação podem ser aplicados;
• explanar conceitos matemáticos da implementação de métodos baseados
em distância;
• implementar métodos baseados em distância, utilizando a biblioteca
scikit-learn;
• explanar conceitos probabilísticos da implementação de métodos
fundamentados em probabilidade;
• implementar métodos probabilísticos utilizando a biblioteca scikit-learn;
• apresentar demais métodos de classificação.

PLANO DE ESTUDOS
Esta unidade está dividida em quatro tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.

TÓPICO 1 – INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

TÓPICO 2 – MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

TÓPICO 3 – MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE


CLASSIFICAÇÃO

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

59
60
TÓPICO 1 —
UNIDADE 2

INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

1 INTRODUÇÃO
Em aprendizado de máquina, a classificação é uma tarefa que tem como
objetivo aprender com os dados e atribuir rótulos (classes). A classificação é
uma tarefa de Machine learning que tem como característica o aprendizado
supervisionado, no qual é atribuído um rótulo (classe) aos objetos com base nos
atributos (HARRISON, 2020).

Em sua definição, um problema de classificação, supervisionado, é um


programa de computador que recebe amostras (entradas) e respostas esperadas
(saídas) para elas, e gera uma hipótese genérica capaz de mapear as entradas para
as saídas corretas (VON LOCHER, 2015).

Os rótulos contidos em tal conjunto correspondem a classes ou


valores obtidos por alguma função desconhecida. Desse modo, um algoritmo
de classificação buscará produzir um classificador capaz de generalizar as
informações contidas no conjunto de treinamento, com a finalidade de classificar,
posteriormente, objetos cujos rótulos sejam desconhecidos.

2 VISÃO GERAL DA CLASSIFICAÇÃO


Compreender a classificação, bem como o significado de método
supervisionado, vai além de compreender seus métodos, mas, primeiramente,
trata-se de compreender os dados sob os quais você irá atuar.

A terminologia “supervisionado” refere-se ao fato de que existe uma


supervisão. Isso significa que há um conjunto de dados previamente rotulado
(classificado) e que, por meio desses dados, será possível verificar se o método
funciona. Essa capacidade de verificar assertividade do método sem a intervenção
humana é a supervisão.

A classificação, também denominada de categorização, é a atividade de


rotular dados com suas respectivas categorias temáticas, a partir de um conjunto de
dados predefinidos. Os métodos de classificação podem ser de aprendizado on-line
ou off-line, de acordo com a capacidade de construir e atualizar do classificador.

61
UNIDADE 2 — CLASSIFICAÇÃO

Os métodos de aprendizado on-line podem atualizar o modelo de


predição (ou classificador) a cada novo documento, de maneira incremental, sem
necessidade de refazer o treinamento com todos os documentos. Já os métodos de
aprendizado off-line, o modelo precisa ser recalculado a cada nova amostra, com
todos os documentos do treinamento, incluindo a nova amostra.

Para compreender a classificação, analisaremos um dos principais


problemas da literatura: a classificação da flor íris ou íris de Fisher (FISHER,
1936). Esse é um conjunto de dados, desenvolvido pelo biólogo britânico Ronald
Fischer, que permite classificar uma flor denominada íris em: versicolor, virginica
ou versicolor, tendo como base a largura e altura da pétala e sépala.

FIGURA 1 – CATEGORIAS DA FLOR ÍRIS

FONTE: <https://cutt.ly/xgBfCWB>. Acesso em: 3 nov. 2020.

Agora, vamos compreender o comportamento dos dados, no que se refere


à tarefa de classificação. Perceba que os primeiros atributos são as entradas (altura
da sépala, largura da sépala, altura da pétala e largura da pétala) e, por último, o
atributo Species, que contém as classes de cada linha.

FIGURA 2 – DATASET DA FLOR IRIS

FONTE: O autor

É possível visualizar o conjunto de dados Iris Dataset em sua máquina,


por meio do comando apresentado no Quadro 1.

62
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

QUADRO 1 – IMPORTANDO O DATASET ÍRIS


1 import numpy as np
2 import pandas as pd
3 from sklearn.datasets import load_iris
4 iris = load_iris()
5 dados = pd.DataFrame(data= np.c_[iris['data'], iris['tar-
get']], columns= iris['feature_names'] + ['target'])
6 dados
FONTE: O autor

3 CENÁRIOS DE CLASSIFICAÇÃO
A classificação é uma tarefa de aprendizado de máquina que gera um
algoritmo preditor com base em dados previamente categorizados. No estudo
dos cenários de sua aplicação, serão descritos os dois tipos de tarefas: classificação
binária e classificação multiclasse.

Entre as tarefas de classificação, existe a tarefa de classificação binária e,


como o nome sugere, é uma tarefa que irá classificar os dados com base em duas
classes. Segundo Oliveira (2016), é o ato de dividir as observações em um conjunto
de dados em dois grupos. Em outras palavras, envolve atribuir uma variável
dependente, consistindo em apenas duas categorias à observação baseada na
covariável. Em um cenário simples, pode ser que os pesquisadores classifiquem
as transações de cartão de crédito como legítimas ou fraudulentas, de acordo com
as seguintes informações: o intervalo de tempo entre os usos do cartão de crédito,
a faixa de valores usada em comparação com o mês anterior, cartões de crédito
muito usados, e assim por diante. Para esse exemplo, a classificação é dada por
“Sim” ou “Não”, com base na existência da característica de interesse em um
conjunto de variáveis explicativas.

A entrada de um algoritmo de classificação é um conjunto de exemplos


rotulados, em que cada rótulo é um número inteiro de 0 ou 1, representando uma
das duas possíveis classes. Segundo Microsoft (2019), a saída de um algoritmo de
classificação binária é um classificador, que pode ser usado para prever a classe
de novas instâncias sem rótulo, na qual cenários de classificação binária incluem:

• reconhecer como “positivo” ou “negativo”;


• diagnosticar se um paciente tem determinada doença;
• tomar a decisão de marcar um e-mail como spam ou não;
• determinar se uma foto contém um item específico ou não (por exemplo, um
cão ou frutas).

Para Almeida (2010), muitos dos problemas de classificação envolvem mais


do que duas classes, o que se designa como classificação multiclasse. Podemos
facilmente pensar no caso do estado de saúde de um paciente, o qual pode ser
definido, por exemplo, com as classes “mau”, “razoável”, “bom”, “muito bom”.
Nesse caso, pretende-se classificar o estado de saúde do paciente em uma das classes.
63
UNIDADE 2 — CLASSIFICAÇÃO

Assim, as classificações binária e multiclasse diferem no número de classes


existentes para a classificação: na binária, são definidas exatamente duas classes,
enquanto, na multiclasse, são definidas n classes (n > 2), ou seja, é um problema
que contém duas ou mais classes (rótulos) (ALMEIDA, 2010).

4 FERRAMENTAS COMPLEMENTARES
Com a ascensão dos métodos de Big Data e da aplicação de Machine
learning nos mais diversos cenários de suporte à decisão, tais recursos começaram
ser explorados cada vez mais em diversas aplicações, e não somente em cenários
de suporte à decisão.

A partir dessa expansão do emprego de técnicas de Machine learning, as


linguagens de programação passaram a utilizar recursos para sua implementação.
A linguagem Java, por exemplo, conta com a biblioteca Java-ML (Java Machine
Learning; ABEEL; VAN DE PEER; SAEYS, 2009), que é uma coleção de algoritmos
de aprendizado de máquina com uma interface comum para cada tipo de
algoritmo. O Java-ML é uma biblioteca destinada a engenheiros de software e
programadores, portanto, sem interface gráfica do utilizador ou usuário (GUI,
do inglês Graphical User Interface), mas com interfaces claras e implementações de
referência para algoritmos descritos na literatura científica, com um código-fonte
bem documentado e exemplos de código e tutoriais.

QUADRO 2 – EXEMPLO DE UTILIZAÇÃO DO JAVA-ML


1 Dataset data = FileHandler.loadDataset(new File("iris.data"),
4, ",");
2 Classifier knn = new KNearestNeighbors(5);
3 CrossValidation cv = new CrossValidation(knn);
4 Map<Object, PerformanceMeasure> p = cv.crossValidation(data);
FONTE: Adaptado de Abeel; Van de Peer; Saeys (2019)

DICAS

O Java-ML contém um conjunto de diversos recursos, biblioteca, entre outros.


Para acessar sua documentação, bem como fazer download, visite o site oficial em: http://
java-ml.sourceforge.net/.

Em ambientes de programação Microsoft, também houve inovação no


desenvolvimento de aplicações de Machine learning. Já em programação DOT.
NET, a biblioteca utilizada é o ML.NET, um conjunto de recursos para coleta, pré-
processamento de dados e, principalmente, aplicação de algoritmos de Machine
learning (AHMED et al., 2019).
64
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

QUADRO 3 – EXEMPLO DE APLICAÇÃO DO ML.NET


1 var ctx = new MLContext();
2 IDataView trainingData = ctx.Data
.LoadFromTextFile<ModelInput>(dataPath, hasHeader: true);
3 var pipeline = ctx.Transforms.Text
.FeaturizeText("Features", nameof(SentimentIssue.Text))
.Append(ctx.BinaryClassification.Trainers
.LbfgsLogisticRegression("Label", "Features"));
4 ITransformer trainedModel = pipeline.Fit(trainingData);
5 var predictionEngine = ctx.Model
.CreatePredictionEngine<ModelInput, ModelOutput>(trainedModel);
6 var sampleStatement = new ModelInput() { Text = "This is a
horrible movie" };
7 var prediction = predictionEngine.Predict(sampleStatement);
FONTE: Adaptado de Ahmed et al. (2019)

DICAS

O ML.NET permite que você reutilize todo o conhecimento, habilidades,


código e bibliotecas que você já possui como um desenvolvedor .NET, para que possa
integrar facilmente o aprendizado de máquina em seus aplicativos da web, móvel, desktop,
jogos e Internet das coisas (IoT, do inglês Internet of Things). Na documentação oficial,
existe um conteúdo completo de como utilizar essa biblioteca. Acesse: https://dotnet.
microsoft.com/apps/machinelearning-ai/ml-dotnet.

São muitas as opções de linguagens de programação, no que se refere ao


desenvolvimento de aplicações integradas a métodos de Machine learning. Entre
elas, o Python tem um destaque especial. Para muitos pesquisadores, Python é
uma ferramenta de primeira classe, principalmente por causa de suas bibliotecas
para armazenar, manipular e obter informações a partir de dados, sendo um
conjunto completo para profissionais de ciência de dados (VANDERPLAS, 2016).
Dessa maneira, vamos conhecer os principais recursos dessa linguagem, a fim de
auxiliar na implementação de algoritmos de Machine learning.

4.1 LISTAS
Na linguagem de programação Python, o objeto lista é a sequência mais
geral fornecida. As listas são coleções ordenadas de objetos de tipo arbitrário e não
têm tamanho fixo (LUTZ, 2013). Também são mutáveis, podem ser modificadas
no local, atribuindo deslocamentos, bem como uma variedade de chamadas de
método de lista.

65
UNIDADE 2 — CLASSIFICAÇÃO

Uma lista é uma estrutura de dados que contém uma coleção ordenada
de itens, ou seja, você pode armazenar uma sequência de itens em uma lista. Para
abrir um dataset no formato CSV (comma separated values) e transformá-lo em uma
lista, confira o Quadro 4.

QUADRO 4 – TRABALHANDO COM LISTAS

1 import csv
2 lista1 = []
3 lista2 = []
4 with open(exemplo.csv') as csvfile:
5 readCSV = csv.reader(csvfile, delimiter=',')
6 dates = []
7 colors = []
8 for linha in readCSV:
9 elemento1 = linha[0]
10 elemento2 = linha[1]
11
12 lista1.append(elemento1)
13 lista2.append(elemento2)
14
15 print(lista2)
16 print(lista2)

FONTE: O autor

DICAS

Para conhecer mais sobre a manipulação de dados, utilizando a estrutura de


dados lista, acesse o código no Google Colab Notebooks: https://colab.research.google.
com/drive/1siWWmsChWjyO6kFaItMj4fxALWY05Erd.

4.2 NUMPY
O NumPy é o pacote fundamental para a computação científica em Python.
É uma biblioteca Python que fornece um objeto de matriz multidimensional,
vários objetos derivados (como matrizes e matrizes mascaradas) e uma variedade
de rotinas para operações rápidas em matrizes (NASCIMENTO, 2019). Segundo
Bressert (2012), tais rotinas incluem manipulação matemática, lógica, de formas,
classificação, seleção, entrada/saída, transformadas discretas de Fourier, álgebra
linear básica, operações estatísticas básicas, simulação aleatória, e muito mais.

66
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

Um exemplo de como acessar um dataset utilizando a biblioteca Numpy


pode ser visto no Quadro 5. Ressalta-se que a utilização de tal biblioteca não se
limita à criação de arrays, mas, sim, ao uso de um conjunto de operações algébricas
que podem auxiliar na preparação de dados.

QUADRO 5 – TRABALHANDO COM NUMPY

1 from numpy import genfromtxt


2 my_data = genfromtxt(exemplo.csv', delimiter=',')

FONTE: O autor

ATENCAO

O NumPy é uma biblioteca completa com os mais diversos recursos e


operações matemáticas para tratamento de dados. Para saber mais, acesse o Google Colab
Notebooks com informações sobre o NumPy em: https://colab.research.google.com/
drive/1lgv-CxAUcDY5hxqw_RMMZYtqkHdcCoUE?usp=sharing.

4.3 ANACONDA
O Anaconda é um gerenciador de pacotes e ambiente para desenvolvimento
de “data science” que utiliza as linguagens Python e R. A plataforma conta com
uma coleção de mais de 1.500 pacotes de código aberto. O Anaconda é gratuito e
fácil de instalar, e oferece suporte gratuito à comunidade (SCHLICHTING, 2020).

No caso do Colab Notebook, é necessário baixar o pacote e instalá-lo via linha


de comando; para isso, utilize o bloco de comandos conforme mostra o Quadro 6.

QUADRO 6 – INSTALANDO O ANACONDA NO COLAB NOTEBOOK


1 !wget -c https://repo.anaconda.com/miniconda/Miniconda3-4.5.
2 4-Linux-x86_64.sh
3 !chmod +x Miniconda3-4.5.4-Linux-x86_64.sh
4 !bash ./Miniconda3-4.5.4-Linux-x86_64.sh -b -f -p /usr/local
5 !conda install -q -y --prefix /usr/local python=3.6 ujson
6 import sys
7 sys.path.append('/usr/local/lib/python3.6/site-packages')
8 # Para testar o funcionamento
9 import ujson
10 print(ujson.dumps({1:2}))
11
FONTE: O autor

67
UNIDADE 2 — CLASSIFICAÇÃO

DICAS

Anaconda é um pacote científico completo para manipulação de dados e


suporte a projetos de Machine learning. Para obter a biblioteca Anaconda nas mais diversas
plataformas e sistemas operacionais, acesse o site: https://www.anaconda.com/. Por meio do
link, é possível realizar a instalação completa, bem como encontrar a documentação oficial.
Confira o Google Colab Notebooks com a instalação e os exemplos de utilização em: https://
colab.research.google.com/drive/1uGzDCzyrN7cPNnQMpKfbq5hRGXJh1PB1?usp=sharing

4.4 SCIPY
Segundo Maldaner (2019), o SciPy é a extensão responsável por adicionar
ferramentas para otimização, funções especiais, processamento de imagens,
integração numérica, resolução de equações diferenciais ordinárias, além de
possibilitar a realização de operações com os arranjos introduzidos pelo NumPy.

Em cenários de Machine learning e na preparação de dados, a combinação


do SciPy com NumPy possibilita potencializar a aplicação do Python, além de
flexibilidade para os desenvolvedores, uma vez que a biblioteca foi desenvolvida
para matemáticos, cientistas e engenheiros.

QUADRO 7 – ÁLGEBRA RELACIONAL COM SCIPY


1 import numpy as np
2 from scipy import linalg
3 A = np.array([[1,2],[3,4]])
4 print(A)
5 linalg.inv(A)
6 b = np.array([[5,6]]) b
7 b.T
8 A*b
9 A.dot(b.T)
10 b = np.array([5,6])
11 b
12 b.T
13 A.dot(b)
FONTE: O autor

ATENCAO

Para saber mais sobre o SciPy, sua integração com Numpy, bem como seu
funcionamento, de modo geral, acesse o Google Colab Notebooks: https://colab.research.
google.com/drive/1leW5OOiXXQ65DEUM81CKsFSfv-dh018c?usp=sharing.

68
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

4.5 SCIKIT-LEARN
Scikit-learn é um módulo Python que integra uma ampla gama de algoritmos
de aprendizado de máquina de última geração para problemas supervisionados e
não supervisionados de média escala. Tal pacote se concentra em levar o aprendizado
de máquina para não especialistas, utilizando uma linguagem de alto nível de uso
geral. A ênfase é colocada na facilidade de uso, desempenho, documentação e
consistência da Interface de Programação de Aplicações (API, do inglês Application
Programming Interface; PEDREGOSA et al., 2011).

Segundo Oliveira, Muniz e Farrapo (2020), a biblioteca para auxílio em


aprendizagem de máquina scikit-learn é um módulo que integra uma vasta
quantidade de algoritmos de Machine learning de última geração para problemas
supervisionados ou não. Em suma, scikit-learn fornece um ambiente rico para
implementação de algoritmos de aprendizagem de máquina, mantendo uma
interface fácil para manipulação. Pode-se dizer que isso é reflexo da necessidade
da análise de dados estatísticos por não especialistas nas indústrias de software,
bem como nos campos externos à informática, como a física e a engenharia.

DICAS

No ambiente do Google Colab Notebooks, o scikit-learn é executado de maneira


nativa, porém pode ser instalado de forma simples, por meio do PIP. A documentação
completa está disponível em: https://scikit-learn.org/stable/.

5 MÉTRICAS DE AVALIAÇÃO PARA CLASSIFICAÇÃO


As métricas de avaliação têm como finalidade avaliar a capacidade de
generalização dos métodos de classificação, ou seja, a partir delas, é possível
verificar a taxa de acerto desses métodos.

Segundo Rodrigues (2019), para entender melhor cada métrica, é


necessário, primeiramente, entender alguns conceitos. Uma matriz de confusão
é uma tabela que indica os erros e os acertos do modelo, comparando com o
resultado esperado (ou etiquetas/labels). A Figura 3 apresenta um exemplo de
uma matriz, bem como o significado de seus elementos na sequência.

69
UNIDADE 2 — CLASSIFICAÇÃO

FIGURA 3 – MATRIZ DE CONFUSÃO

FONTE: <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.
Acesso em: 3 nov. 2020.

A matriz de confusão é a forma de representação da qualidade obtida


de um método de classificação, sendo expressa por meio da correlação de
informações dos dados de referência (compreendidos como verdadeiros) com
os dados classificados. Essa rotina também pode ser expressa pela análise das
amostras de treinamento associada aos dados classificados (PRINA; TRENTIN,
2015). Os elementos da matriz de confusão representam os seguintes:

• verdadeiros positivos: classificação correta da classe positiva;


• falsos-negativos: erro em que o modelo previu a classe negativa quando o
valor real era da classe positiva;
• falsos-positivos: erro em que o modelo previu a classe positiva quando o valor
real era da classe negativa;
• verdadeiros negativos: classificação correta da classe negativa.

Utilizando a matriz de confusão, é possível extrair as principais métricas


de avaliação de modelos de classificação: precisão, revocação, f-medida e acurácia
(Figura 4).

FIGURA 4 – FÓRMULAS DAS MEDIDAS DE AVALIAÇÃO

FONTE: <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.
Acesso em: 3 nov. 2020.

70
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO

Entre as métricas, destaca-se a acurácia, que indica a quantidade de exemplos


que foram, de fato, classificados corretamente, independentemente da classe. Por
exemplo, se temos 100 amostras e 90 delas foram classificadas corretamente, isso
significa que a acurácia foi de 90%. A seguir, é possível observar a fórmula da
acurácia (Figura 5) e como utilizar essa métrica com o scikit-learn (Quadro 8).

FIGURA 5 – FÓRMULA DA ACURÁCIA

FONTE: Adaptado de <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.


Acesso em: 3 nov. 2020.

QUADRO 8 – MÉTRICA ACURÁCIA COM SCIKIT-LEARN

1 from sklearn.metrics import accuracy_score


2 y_classificado = [0, 2, 1, 3]
3 y_original = [0, 1, 2, 3]
4 accuracy_score(y_original, y_classificado)
FONTE: O autor

A precisão é a porcentagem de amostras classificadas como pertencentes


à classe positiva e que realmente fazem parte de tal classe (SILVA, 2017). A seguir,
veremos a fórmula da precisão (Figura 6) e como utilizar essa métrica com o scikit-
learn (Quadro 9).

FIGURA 6 – FÓRMULA DA PRECISÃO

FONTE: Adaptado de <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.


Acesso em: 3 nov. 2020.

QUADRO 9 – MÉTRICA PRECISÃO COM SCIKIT-LEARN

1 from sklearn.metrics import precision_score


2 y_classificado = [0, 2, 1, 3]
3 y_original = [0, 1, 2, 3]
4 precision_score(y_original, y_classificado, average='macro'))
FONTE: O autor

71
UNIDADE 2 — CLASSIFICAÇÃO

A revocação, também chamada de sensibilidade ou recall, é uma métrica


que, entre todas as situações de classe positiva como valor esperado, indica
quantas estão corretas (RODRIGUES, 2019). A seguir, veremos a fórmula da
revocação (Figura 7) e como utilizar essa métrica com o scikit-learn (Quadro 10).

FIGURA 7 – FÓRMULA DA REVOCAÇÃO

FONTE: Adaptada de <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.


Acesso em: 3 nov. 2020.

QUADRO 10 – MÉTRICA REVOCAÇÃO COM SCIKIT-LEARN

1 from sklearn.metrics import precision_score


2 y_classificado = [0, 2, 1, 3]
3 y_original = [0, 1, 2, 3]
4 recall_score(y_original, y_classificado, average='macro'))

FONTE: O autor

72
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• A classificação é a atividade de rotular dados com suas respectivas categorias


temáticas, a partir de um conjunto de dados predefinidos.

• A tarefa de classificação está presente em diversos cenários do cotidiano.

• Os métodos de classificação podem aprender on-line ou off-line.

• O aprendizado on-line pode atualizar o modelo de predição (ou classificador)


a cada novo documento de maneira incremental.

• Nos métodos de aprendizado off-line, o modelo precisa ser recalculado a cada


nova amostra, com todos os documentos do treinamento.

• Problemas de classificação com classes são denominados binários.

• Problemas de classificação com duas ou mais classes são denominados


multiclasse.

• Existe um conjunto de bibliotecas que pode auxiliar no pré-processamento de


dados e implementação de algoritmos de classificação.

• As métricas de avaliação auxiliam na avaliação dos modelos.

73
AUTOATIVIDADE

1 Nas mais diversas áreas do conhecimento, os sistemas de Machine learning


podem ajudar a descobrir padrões, realizar determinadas tarefas, por
meio da generalização de casos e da utilização de dados. Com relação à
classificação, assinale a alternativa CORRETA:

a) ( ) É um método supervisionado.
b) ( ) É um método não supervisionado.
c) ( ) É um método dessupervisionado.
d) ( ) É um método visionado.

2 Os métodos de classificação permitem rotular automaticamente novos


registros com base em histórico de dados. Supondo que exista um conjunto
de dados que possa receber rótulos 0-negativos ou 1-positivos, qual tipo de
tarefa de classificação que será realizada?

a) ( ) Classificação binária.
b) ( ) Classificação unária.
c) ( ) Classificação ternária.
d) ( ) Classificação multiclasse.

3 A categorização de textos de notícias é a tarefa de rotular uma determinada


notícia, com base em um conjunto de textos previamente rotulado.
Considerando que, em uma base de dados, existam 35 categorias de
notícias, qual tipo de tarefa de classificação será realizado?

a) ( ) Classificação multiclasse.
b) ( ) Classificação binária.
c) ( ) Classificação unária.
d) ( ) Classificação ternária.

4 O Python é uma linguagem de alto nível, interpretada, orientada a objetos


com uma semântica dinâmica, amplamente utilizada em projetos de
Machine learning. Sobre a utilização do Python, assinale a biblioteca que
implementa os métodos de Machine learning:

a) ( ) Scikit-learn.
b) ( ) Pandas.
c) ( ) Matlab.
d) ( ) PIP.

74
5 Python é uma linguagem básica, simples, utilizada em diversos cenários
da computação, com destaque para projetos de Machine learning. Sobre o
Python, assinale qual biblioteca é utilizada para a visualização de dados:

a) ( ) MatplotLib.
b) ( ) Scikit-learn.
c) ( ) Pandas.
d) ( ) Numpy.

75
76
TÓPICO 2 —
UNIDADE 2

MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

1 INTRODUÇÃO
Os métodos de classificação baseados em distância consideram
proximidade entre dados em relação ao espaço cartesiano. Esse tipo de método
considera que dados similares tendem a estar em uma mesma região no espaço
de entrada.

Segundo Carvalho (2012), esse tipo de método é considerado do tipo


aprendizado preguiçoso, pois só olha os dados de treinamento quando precisa
classificar um novo objeto. A partir de um novo objeto, de suas características,
dispostas no espaço cartesiano, um novo objeto será classificado. Por exemplo, ao
entrar um novo objeto que anda e late como um cachorro, então provavelmente é
um cachorro (Figura 8).

FIGURA 8 – CLASSIFICAÇÃO POR DISTÂNCIA

FONTE: <https://cutt.ly/bgBzMf2f>. Acesso em: 3 nov. 2020.

Para Soldi (2013), quando objetos são agrupados, a proximidade é


usualmente indicada por uma espécie de distância. Por outro lado, as variáveis
são usualmente agrupadas com base nos coeficientes de correlação ou outras
medidas de associação. Essas medidas podem ser de:

• Similaridade: quanto maior o valor observado, mais parecidos são os objetos.


Por exemplo, o coeficiente de correlação.
• Dissimilaridade: quanto maior o valor observado, menos parecidos (mais
dissimilares) serão os objetos.

77
UNIDADE 2 — CLASSIFICAÇÃO

2 MÉTODOS BASEADOS EM DISTÂNCIA


A distância euclidiana (Figura 9) é uma das medidas de dissimilaridade
entre comunidades mais utilizadas na prática. Quanto menor o valor da distância
euclidiana entre dois objetos, mais próximas elas se apresentam em termos de
parâmetros quantitativos por classe; logo, quanto menor a distância euclidiana,
maior a eficiência do procedimento (BORGES; DA SILVA; CASTRO, 2007).

FIGURA 9 – EQUAÇÃO DA DISTÂNCIA EUCLIDIANA

FONTE: Adaptada de Soldi (2013)

Em que D (x, y) é a distância entre dois objetos (x e y), dada pela equação,
na qual i representa as posições no ponto cartesiano de cada objeto (x e y) e n
é número de ocorrências. A seguir, veremos a implementação da distância
euclidiana utilizando Python (Quadro 11) e NumPy.

QUADRO 11 – CÁLCULO DA DISTÂNCIA EUCLIDIANA EM PYTHON

1 import numpy as np
2
3 x = [1, 2.5, 3.8, 4.5]
4 y = [0.5, 4.5, 9.6, 3.4]
5
6 def dist_euclidiana_np(x, y):
7 x, y = np.array(x), np.array(y)
8 diff = x – y
9 quad_dist = np.dot(diff, diff)
10 return math.sqrt(quad_dist)
11
12 print('%.2f' % dist_euclidiana_np(x, y))
FONTE: O autor

Complementarmente à distância euclidiana, existem distâncias que podem


ser utilizadas na implementação de algoritmos de Machine learning baseados
em distância. A medida de distância euclidiana dada à métrica de distância de
Minkowski, também conhecida como distância de Minkowski, é apresentada na
Figura 10.

78
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

FIGURA 10 – EQUAÇÃO DA DISTÂNCIA MINKOWSKI

FONTE: Adaptada de Tan, Steinbach e Kumar (2016)

Segundo Tan, Steinbach e Kumar (2016), a distância de Minkowski é uma


generalização da distância euclidiana, em que r é um parâmetro, n é o número
de dimensões (atributos) e pk e qk são, respectivamente, os k-ésimos atributos
(componentes) dos objetos de dados p e q.

Na distância de Minkowski, aproveitam-se os recursos do pacote Scipy


para realizar sua implementação; nesse caso, poderia ser implementado do zero,
tal como a distância euclidiana. Nessa implementação, os primeiros atributos são
os vetores x e y, e o último parâmetro é o coeficiente de normalização.

QUADRO 12 – CÁLCULO DA DISTÂNCIA DE MINKOWSKI EM PYTHON E SCIPY

1 from scipy.spatial import distance


2 distance.minkowski([1, 0, 0], [0, 1, 0], 1)
3 distance.minkowski([1, 0, 0], [0, 1, 0], 2)
4 distance.minkowski([1, 0, 0], [0, 1, 0], 3)
FONTE: O autor

Agora que já compreendemos uma visão geral do funcionamento das


distâncias, vamos entender o funcionamento do método KNN (do inglês K-Nearest
Neighbors), baseado em distâncias.

2.1 KNN
O método do vizinho mais próximo (KNN, do inglês K-Nearest Neighbors)
trabalha de acordo com a proximidade, ou seja, rotula um determinado objeto
conforme os objetos mais próximos. O número de objetos a serem agrupados são
os K vizinhos mais próximos.

A ideia básica do KNN é determinar a categoria de um determinado


objeto com base em similaridades entre os documentos no espaço. Para calcular
a similaridade, usa-se uma métrica de distância. O método KNN percorre todo
o conjunto de dados, computando a distância de cada elemento em relação ao
documento que está sendo consultado. Uma vez calculadas as distâncias, a categoria
será determinada pelos K documentos mais próximos ao documento consultado.

79
UNIDADE 2 — CLASSIFICAÇÃO

Segundo Locher (2015), a etapa de classificação envolve calcular a


dissimilaridade de uma nova amostra para todas as amostras conhecidas e
classificá-la com a categoria mais frequente entre as “k” amostras mais próximas
a ela. O método KNN não gera um modelo a partir das amostras, mas consulta
todas para cada nova classificação. Além disso, o algoritmo KNN é bastante
penalizado quando uma das classes do problema apresenta muito mais amostras
que as demais classes.

2.1.1 Implementação matemática do método


Como o método do KNN explora muito o espaço vetorial e o plano
cartesiano, primeiramente, precisamos compreender o funcionamento desses
elementos, utilizando a linguagem de programação.

A visualização dos dados é de grande importância para compreender o


cenário, bem como seu comportamento; afinal, com ela, conseguimos observar os
dados e compreendê-los, uma vez que as pessoas têm muito mais facilidade para
captar e processar comunicações visuais (BIGDATACORP, 2019).

Para isso, os dados são dispostos por meio de gráficos que compõem
o plano cartesiano e os pares ordenados. Um sistema de eixos ortogonais é
constituído por dois eixos perpendiculares, Ox e Oy, que têm a mesma origem.

A partir desses eixos, temos o plano cartesiano, cujos eixos ortogonais o


dividem em quatro quadrantes. Para identificar um par ordenado, indicamos por
um ponto no plano cartesiano, conforme figura gerada a partir do código-fonte,
onde o ponto está sendo indicado por P (1, 1).

QUADRO 13 – PLOTANDO O EIXO CARTESIANO COM MATPLOTLIB

1 import matplotlib.pyplot as plt


2 plt.plot(1,1,'bo',mfc='none',markersize=20)
3 plt.ylabel('Eixo das ordenadas')
4 plt.xlabel('Eixo das abscissas')
5 plt.show()

FONTE: O autor

80
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

FIGURA 11 – PLOTANDO O EIXO CARTESIANO COM MATPLOTLIB

FONTE: O autor

Vamos gerar uma lista com os valores que serão utilizados no decorrer
do exemplo. Como comando range no intervalo indicado, o nosso conjunto de
valores será de -10 até 10 para que possamos ter a percepção de como a função irá
se comportar em um conjunto negativo e positivo.

QUADRO 14 – PLOTANDO UM CONJUNTO DE DADOS COM MATPLOTLIB

1 import numpy as np
2 import matplotlib.pyplot as plt
3 x = np.array(range(-10,11))
4 plt.plot(x)
5 plt.show()

FONTE: O autor

Com o comando import, realizamos a importação da biblioteca Matplotlib,


durante o código, toda vez que for utilizado o objeto plt, será um objeto do tipo
da biblioteca gráfica. Ao utilizar plt.plot (valores), o conjunto de registros será
mostrado no gráfico.

FIGURA 12 – PLOTANDO UM CONJUNTO DE DADOS COM MATPLOTLIB

FONTE: O autor

81
UNIDADE 2 — CLASSIFICAÇÃO

Com o conjunto x, que representa os valores que serão mostrados no eixo x,


codificaremos a função y = f(x). Para definir uma função em Python, utilizaremos
o def(). Em um exemplo simples, criaremos a função f(x) = x + 1. Logo em seguida,
chamando a função e passando parâmetros para ela.

QUADRO 15 – IMPLEMENTANDO E UTILIZANDO UMA FUNÇÃO F(X)


1 ###############################################
2 #### Criando a f(x) = x + 1
3 ###############################################
4 def f(x):
5 return x+1
6 ###############################################
7 #### Gerando f(x) para os dados de x
8 ###############################################
9 y = f(x)
10 print("x = ", x)
11 print("\n \n")
12 print("y = f(x) = ", y)
13
14
15
FONTE: O autor

Agora que já temos em mãos o conjunto de dados x e o conjunto f(x)


representado por y, é possível plotar os valores e y em função de x. Como a parte
matemática já foi realizada por meio da função codificada, basta passar os valores
para a função plot().

FIGURA 13 – PLOTANDO DE VALORES DE X EM F(X)

FONTE: O autor

Definido um padrão, vamos reproduzi-lo algumas vezes para facilitar o


seu entendimento sobre o tema. Para focar na construção matemática, criaremos
uma função no Python para receber x e f(x)/y, exibindo-os em forma de gráfico.

82
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

QUADRO 16 – IMPLEMENTANDO E UTILIZANDO UMA FUNÇÃO F(X)


1 #criando a função para plotar o gráfico
2 def escreve_grafico(x,y):
3 plt.plot(x,y) #escreve a função
4
5 plt.plot(x,f(x),'r+') #escreve os pares ordenados
6
7 plt.ylabel('Valores de Y em função de X')
8 plt.xlabel('Valores de X')
9 plt.show()
10
11 #utilizando a função de plotagem
13 def f(x):
14 return x**2
15
16 escreve_grafico(x,f(x))
FONTE: O autor

Sabe-se que a distância euclidiana é a medida de distância mais


frequentemente empregada quando todas as variáveis são quantitativas; é
utilizada para calcular medidas específicas, além de distância euclidiana simples
e distância euclidiana quadrática ou absoluta, a qual consiste na soma dos
quadrados das diferenças, sem calcular a raiz quadrada (SEIDEL et al., 2008).

Para entender melhor a distância euclidiana e a sua aplicação no conceito


de um algoritmo de Machine learning, primeiramente, vamos compreender o que
ela significa. Considere os pontos 1,2 em vermelho e o ponto 3,6. O objetivo da
aplicação de distâncias é utilizar as coordenadas x e y de cada um desses pontos
e retornar a um limiar que mensura as distâncias.

QUADRO 17 – PLOTANDO DOIS PONTOS NO ESPAÇO

1 import matplotlib.pyplot as plt


2 #inicializa o gráfico com tamanho de 0 até 7
3 plt.plot(0,0,mfc='none')
4 plt.plot(7,7,mfc='none')
5
6 ########################################
7 ####### Inicializa os pontos
8
9 plt.plot(1,2,'r+',mfc='none')
10 plt.plot(3,6,'bo',mfc='none')

FONTE: O autor

83
UNIDADE 2 — CLASSIFICAÇÃO

Nota-se que, no exemplo do Quadro 17, cada ponto é composto por duas
dimensões (x,y). Desse modo, ao transcrever um somatório que se inicializa em
1 e vai até n, n = 2 (duas dimensões). Ao deduzir a fórmula para esses valores,
obtemos a distância apresentada na Figura 14.

FIGURA 14 – DISTÂNCIA EUCLIDIANA ENTRE DOIS PONTOS

FONTE: O autor

Antes de resolver utilizando linguagem de programação, primeiramente,


deve-se calcular passo a passo a distância euclidiana entre os pontos p e q. Para
isso, utilizaremos a fórmula deduzida para duas dimensões e substituiremos os
valores.

FIGURA 15 – APLICANDO VALORES NA DISTÂNCIA EUCLIDIANA

FONTE: O autor

Uma vez compreendido o cálculo da distância, o gráfico gerado pelo


código-fonte (Quadro 18) mostra três elementos. A Figura 16 apresenta os pontos
p (em vermelho) e q (em azul) e a distância entre os dois pontos (traço verde).

QUADRO 18 – MOSTRANDO PONTOS E TRAÇANDO UMA RETA ENTRE ELES

1 import matplotlib.pyplot as plt


2 #inicializa o gráfico com tamanho de 0 até 7
3 plt.plot(0,0,mfc='none')
4 plt.plot(7,7,mfc='none')
5
6
7 plt.plot(1,2,'r+',mfc='none', label="p1")
8 plt.plot(3,6,'bo',mfc='none')
9

84
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

10 plt.plot([1,3],[2,6], '-')
11
12
13
14 plt.show()
FONTE: O autor

FIGURA 16 – MOSTRANDO PONTOS E TRAÇANDO UMA RETA ENTRE ELES

FONTE: O autor

Durante a implementação do KNN, qualquer distância pode ser


utilizada, como a distância Manhattan e Minkowski. No entanto, agora
que já implementamos um algoritmo para calcular a distância euclidiana,
prosseguiremos para o método dos K-vizinhos mais próximos, utilizando essa
distância. O método KNN usará a distância entre objetos para classificar uma
nova entrada sob a qual não se sabe a classe. Para isso, considera os objetos mais
próximos, ou seja, os K-vizinhos mais próximos.

FIGURA 17 – ALGORITMO DO KNN

FONTE: <http://computacaointeligente.com.br/algoritmos/k-vizinhos-mais-proximos/>.
Acesso em: 3 nov. 2020.

85
UNIDADE 2 — CLASSIFICAÇÃO

Quando iniciamos, falamos sobre números e pontos. Para ficar mais clara a
aplicação, vamos criar um conjunto de dados sintético e trabalhar nele. O conjunto
de dados (Quadro 19) representa uma base de dados com pessoas, que, a partir
de sua renda familiar e idade, receberam créditos pessoais. A primeira coluna
representa a idade, a segunda mostra a renda mensal e a terceira, que pode ser
chamada de classe ou rótulo, determina se o crédito foi concedido ou não.

QUADRO 19 – GERANDO UM CONJUNTO DE DADOS

1 credito = np.array([
2 [75,4600, "positivo"],
3 [21,850,"negativo"],
4 [39,840,"negativo"],
5 [45,1500,"negativo"],
6 [47,3200,"positivo"],
7 [51,3400,"positivo"],
8 [47,1200,"negativo"],
9 [25,1500,"negativo"],
10 [30,2800,"negativo"],
12 [69,1500,"positivo"],
13 [69,1800,"positivo"],
14 [50,2500,"positivo"],
15 [39,1700,"negativo"],
16 [42,1900,"negativo"],
17 [42,1900,"negativo"],
18
19 ])
FONTE: O autor

Uma vez criado o conjunto de dados, exploraremos o conceito de pares


ordenados, salário e idade, e utilizando a biblioteca Matplotlib vamos plotar, no
gráfico, cada ponto que representa o crédito negativo ou positivo.

QUADRO 20 – EXIBINDO OS DADOS

1 import matplotlib.pyplot as plt


2 positivos = credito[credito[:,2]=="positivo"]
3 negativos = credito[credito[:,2]=="negativo"]
4
5 fig = plt.figure()
6 ax1 = fig.add_subplot()
7 ax1.set_ylabel('Salário')
8 ax1.set_xlabel('Idade')
9 ax1.set_title('Controle de Crédito')
10

86
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

12 plt.plot(negativos[:,0].astype(int) ,negativos[:,1].as-
13 type(int),'r+',mfc='none')
14 salario = int(input("Informe o salário"))
15 idade = int(input("Informe a idade"))
17
18 plt.plot(idade, salario,'go',mfc='none')
19
20 plt.plot(positivos[:,0].astype(int),positivos[:,1].astype(int),
21 'bo',mfc='none')
22 plt.show()

FONTE: O autor

Dividiremos o dataset de acordo com as classes, atribuindo um tipo de


visualização para cada uma delas. Ao reproduzir os exemplos, fique atento aos
comentários para compreender o que cada trecho do código está executando.

O ponto verde (salário, idade) mostrado na Figura 18 (40,2500) não possui


categoria, ou seja, não se sabe se é positivo ou negativo. Ao utilizar o método dos
vizinhos mais próximos, é possível descobrir a qual classe o ponto deve pertencer,
de acordo com o número de k vizinhos mais próximos.

FIGURA 18 – EXIBINDO UM CONJUNTO DE DADOS

FONTE: O autor

Com os dados em mãos, vamos aplicar o algoritmo em si, começando com o


processo fundamental para o KNN, o cálculo da distância euclidiana (Quadro 21).

87
UNIDADE 2 — CLASSIFICAÇÃO

QUADRO 21 – REALIZANDO O CÁLCULO DA DISTÂNCIA

1 def distancia_euclidiana(x,y):
2 x1 = x[0].astype(float)
3 x2 = x[1].astype(float)
4 y1 = y[0]
5 y2 = y[1]
6 distancia = math.sqrt(pow(x2-y2,2) + pow(x1-y1,2))
7 print("Valor de X =",x[0:2], " valor de Y=",y," D(x,y)=",
distancia )
8
9 return distancia
FONTE: O autor

Uma vez desenvolvida a função que realiza o cálculo da distância, nesse


momento, deve-se calcular a distância para o novo objeto para com os demais.
Outra abordagem que poderia ser realizada seria criar um array de distâncias,
indicando a distância de cada objeto para todos os demais.

QUADRO 22 – REALIZANDO O CÁLCULO DA DISTÂNCIA


1 import math
2 import numpy as np
3 dados = credito
4 distancias = np.zeros((dados.shape[0],1))
5 dados = np.append(dados, distancias, axis=1)
6 print("Calculando as distâncias do novo objeto para todos os
outros \n \n")
7 for i in range(0,dados.shape[0]):
8 dados[i,3] = distancia_euclidiana(dados[i,:],[idade, sala-
rio])
9 dados[:,3]= dados[:,3].astype(float)
10 dados = dados[dados[:,3].astype(float).argsort(kind='merge-
sort')]
11 print("\n \n Conjunto de dados ordenado pela distância \n")
12 print (dados)
13
14
FONTE: O autor

Uma vez que as distâncias já foram calculadas, é o momento de aplicar


o algoritmo que será o responsável por realizar a classificação com base em
K-vizinhos mais próximos.

88
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

QUADRO 23 – IMPLEMENTANDO E EXECUTANDO O KNN


1 def knn(array_ordenado, n_vizinhos,indice_classe):
2 resultado = []
3 for i in range(1,n_vizinhos+1):
4 resultado.append(array_ordenado[i,indice_classe])
5 return max(resultado,key=resultado.count)
6 print("Executando o KNN")
7 print("Ao executar o método KNN para os dados a classificação
8 será:", knn(dados, 3,2))
9
FONTE: O autor

DICAS

Para acessar o código-fonte, bem como o passo a passo das etapas realizadas,
acesse o Google Colab Notebooks: https://colab.research.google.com/drive/1u2_R4Ch-tNC
5j_98W6fRYMjvnqe0N9h_?usp=sharing.

2.2 IMPLEMENTAÇÃO COM SCIKIT-LEARN


Como visto anteriormente, a scikit-learn é uma das mais tradicionais
bibliotecas do Python, sendo referência para implementar sistemas que utilizam
recursos de Machine learning.

Como exemplo prático, vamos reproduzir o que foi realizado


anteriormente, quando codificamos o método KNN do zero, utilizando uma
base de dados sintética, assumindo que a variável “dados” é a mesma aplicada
anteriormente.

Primeiramente, definimos quem serão os nossos atributos de entrada
(input) e o rótulo (a classe, o target). Conforme o exemplo, os dados de entrada
serão o conjunto composto por salário e idade; no rótulo, o atributo que gostaríamos
de classificar é o tipo (positivo ou negativo). Por convenção, o conjunto de dados
de entrada (input) é denominado de X e o rótulo (target output), de y.

89
UNIDADE 2 — CLASSIFICAÇÃO

FIGURA 19 – FUNCIONAMENTO DO ALGORITMO

FONTE: <https://www.kaggle.com/anniepyim/essential-classification-algorithms-explained>.
Acesso em: 3 nov. 2020.

O Quadro 24 mostra a divisão dos dados em entrada e saída.

QUADRO 24 – SEPARANDO OS DADOS EM ENTRADA E SAÍDA

1 X = credito[0:len(credito),0:2]
2 y = credito[0:len(credito),2:3]
FONTE: O autor

Uma vez que os dados estão preparados, basta aplicar o algoritmo.


Percebe-se que não existe o comando train (treinar), mas, sim, o fit, que será o
comando responsável por ensinar o método a partir dos dados. Em uma tradução
aberta, fit significa ajuste, ou seja, ajusta o método aos dados obtidos. Assim, o
método aprenderá com os dados fornecidos.

QUADRO 25 – SEPARANDO OS DADOS EM ENTRADA E SAÍDA

1 from sklearn.neighbors import KNeighborsClassifier


2 classificador = KNeighborsClassifier(n_neighbors=3)
3 classificador.fit(X, y)
FONTE: O autor

Os dados foram divididos em input (X) e output (y), sendo criado o


classificador, variável de mesmo nome. O classificador está apto a predizer,
ou seja, classificar, novas amostras com base nos dados em que aprendeu. Para
predizer o saldo de um indivíduo com 40 anos e uma renda de 5000.

90
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

QUADRO 26 – SEPARANDO OS DADOS EM ENTRADA E SAÍDA

1 novo_campo = (np.array([150,0]).reshape(1,-1))
2 print('Ao realizar a predição o valor será:
'+classificador.predict(novo_campo)[0])
FONTE: O autor

E
IMPORTANT

No desenvolvimento de um algoritmo de Machine learning, várias etapas


podem ser consideradas. Até o momento, vimos o fluxo de como gerar um classificador
utilizando o KNN, no qual podemos perceber alguns pontos até o momento:

• o modelo não foi avaliado, ou seja, não sabemos a sua capacidade de acertar ou errar;
• o K utilizado foi 3, conforme visto no seguinte trecho “n_neighbors=3”; esse valor
pode ser alterado em busca de uma maior efetividade do método;
• o conjunto de dados foi sintético, ou seja, criado apenas para uma simulação.

2.3 CLASSIFICANDO O IRIS DATASET COM O KNN


Como você já aprendeu sobre o iris dataset, bem como o fluxo geral da
implementação do método KNN utilizando scikit-learn, vamos aplicar o método
a esse dataset.

QUADRO 27 – ABRINDO O DATASET E SEPARANDO EM INPUT E OUTPUT

1 import numpy as np
2 from sklearn import datasets
3 iris = datasets.load_iris()
4 X = iris.data[:, [2, 3]]
5 y = iris.target
FONTE: O autor

É válido lembrar que para realizar a validação dos métodos através de


métricas, torna-se necessário dividir os dados em treino e teste. Em nosso exemplo
utilizaremos o próprio scikit-learn para realizar tal divisão, na qual será 70% dos
dados para treino e 30% para teste.

91
UNIDADE 2 — CLASSIFICAÇÃO

QUADRO 28 – ABRINDO O DATASET E SEPARANDO EM INPUT E OUTPUT

1 from sklearn.model_selection import train_test_split


2 X_train, X_test, y_train, y_test = train_test_split(X, y,
3 test_size=0.3, random_state=0)
4 print('Existem {} amostras de treino e {} amostras de teste'.
format(X_train.shape[0], X_test.shape[0]))
FONTE: O autor

E
IMPORTANT

O pré-processamento de dados é a etapa que mais demanda processamento


computacional em tarefas de Machine learning. No que se refere à utilização e à aplicação
de algoritmos de Machine learning, a normalização e a padronização dos dados são
um processo que traz equidade aos dados, proporcionando melhor desempenho dos
algoritmos aplicados.

Segundo Vaz (2019), tais técnicas têm o mesmo objetivo: transformar todas as
variáveis na mesma ordem de grandeza. A diferença básica é que padronizar as variáveis irá
resultar em uma média igual a 0 e um desvio padrão igual a 1. Já normalizar tem como objetivo
colocar as variáveis dentro do intervalo de 0 e 1; caso tenham resultados negativos, -1 e 1.

Para padronizar os dados, normalmente, utiliza-se a fórmula z-score da Figura 20.

FIGURA 20 – FÓRMULA Z-ESCORE

FONTE: O autor

Para normalizar os dados, utiliza-se a fórmula apresentada na Figura 21:

FIGURA 21 – FÓRMULA MIN-MAX

FONTE: O autor

Se a distribuição não é gaussiana ou o desvio padrão é muito pequeno, normalizar


os dados é uma escolha a ser tomada. Cuidado com os outliers, pois alguns artigos afirmam
que normalizar é o melhor método, enquanto outros defendem que padronizar os dados é
uma opção a ser feita. A biblioteca scikit-learn mostra alguns exemplos com outliers – vale
a pena conferir como ficam graficamente (VAZ, 2019).

Com os dados já carregados e divididos em treino e teste, aplicaremos a


normalização utilizando a biblioteca StandardScaler.

92
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA

QUADRO 29 – NORMALIZANDO O DATASET


1 from sklearn.preprocessing import StandardScaler
2 sc = StandardScaler()
3 sc.fit(X_train)
4 X_train_normalizado = sc.transform(X_train)
5 X_test_normalizado = sc.transform(X_test)
6 X_normalizado = np.vstack((X_train_normalizado, X_test_norma-
lizado))
7 y_normalizado = np.hstack((y_train, y_test))
8
FONTE: O autor

Para compreender melhor esses dados, utilizaremos o Matplotlib para


plotá-los no plano cartesiano, com base em suas respectivas classes. Percebe-se
que os dados plotados são apenas do conjunto de teste, pois são os dados que
iremos classificar.

QUADRO 30 – PLOTANDO O IRIS DATASET


1 from matplotlib.colors import ListedColormap
2 import matplotlib.pyplot as plt
3
4 markers = ('s', 'x', 'o')
5 colors = ('red', 'blue', 'lightgreen')
6 cmap = ListedColormap(colors[:len(np.unique(y_test))])
7 for idx, cl in enumerate(np.unique(y)):
8 plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1],
9 c=cmap(idx), marker=markers[idx], label=cl)
FONTE: O autor

FIGURA 22 – VISUALIZAÇÃO DO DATASET

FONTE: O autor

Até o momento, os dados já foram carregados e preparados, e foi criada


uma rotina para a visualização dos dados. A partir agora, partimos para a etapa
final da aplicação do método: treinar e avaliar.

93
UNIDADE 2 — CLASSIFICAÇÃO

QUADRO 31 – TREINANDO E AVALIANDO O MÉTODO

1 from sklearn.neighbors import KNeighborsClassifier


2 knn = KNeighborsClassifier(n_neighbors=5, p=2, metri-
c='minkowski')
3 knn.fit(X_train_normalizado, y_train)
4 print('A acurácoa do KNN na base de treino é: {:.2f} '.forma-
t(knn.score(X_train_normalizado, y_train)))
5 prrint('A acurácoa do KNN na base de teste é: {:.2f} '.forma-
t(knn.score(X_test_normalizado, y_test)))
FONTE: O autor

Para fixar todos esses conceitos, é muito importante manipular o código


desenvolvido, alterando, principalmente, o número de K-vizinhos próximos e a
quantidade de dados utilizados em treino e teste. 

94
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• Os métodos de classificação baseados em distância consideram proximidade


entre dados em relação ao espaço cartesiano.
• As medidas de distância podem ser por similaridade ou dissimilaridade.
• A distância euclidiana é uma das medidas de dissimilaridade, entre
comunidades, mais utilizadas na prática.
• A distância de Minkowski é uma generalização da distância euclidiana.
• O KNN, isto é, o método do vizinho mais próximo, trabalha de acordo com a
proximidade.
• A etapa de classificação do KNN envolve calcular a dissimilaridade de uma
nova amostra para todas as amostras conhecidas e classificá-la com a categoria
mais frequente entre as “k” amostras mais próximas.
• A normalização apresenta os dados para uma mesma escala, proporcionando
melhor eficiência dos métodos que serão executados sobre ela.
• O scikit-learn implementa o KNN e sua utilização pode ser feita de maneira
simples quando comparada com a implementação do zero.

95
AUTOATIVIDADE

1 A distância euclidiana é uma das medidas de dissimilaridade entre


comunidades mais utilizadas na prática. Assim, quanto menor o valor da
distância euclidiana entre dois objetos, mais próximas elas se apresentam
em termos de parâmetros quantitativos. Considere a fórmula da distância
euclidiana, apresentada a seguir, e assinale a alternativa CORRETA no que
se refere ao n:

FONTE: O autor

a) ( ) O número de objetos.
b) ( ) Um ponto no espaço
c) ( ) O somatório do espaço.
d) ( ) O erro de desvio.

2 A distância euclidiana é uma das medidas de dissimilaridade entre


comunidades mais utilizadas na prática. Quanto menor o valor da distância
euclidiana entre dois objetos, mais próximas elas se apresentam em termos
de parâmetros quantitativos. Sobre a fórmula da distância euclidiana,
assinale a alternativa CORRETA sobre x e y:

a) ( ) Dois pontos no espaço.


b) ( ) Erro.
c) ( ) O número de objetos.
d) ( ) Inicio do vetor.

3 Considere a figura a seguir, na qual o ponto vermelho representa uma nova


amostra a ser classificada pelo algoritmo KNN, e responda:

FONTE: O autor

96
a) Considerando que K = 6, qual é a classe da amostra vermelha?
b) Considerando que K = 3, qual é a classe da amostra vermelha?
c) Considerando que K = 1, qual é a classe da amostra vermelha?

97
98
TÓPICO 3 —
UNIDADE 2

MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS


DE CLASSIFICAÇÃO

1 INTRODUÇÃO
A probabilidade está presente em nosso cotidiano em diversas maneiras,
seja em situações corriqueiras, como a probabilidade da chuva ou de se pegar
trânsito, seja em cenários mais complexos, como apostas e investimento em
mercado de valores.

Em Machine learning, isso não é diferente, pois a probabilidade está


presente desde a análise dos dados, podendo ser utilizada como um método de
predição. É possível afirmar que probabilidade e estatística são uma das áreas
correlatas do estudo de machine learning, com um destaque especial ao software R,
um software estatístico, que cada vez mais é utilizado por profissionais de ciência
de dados.

2 MÉTODOS PROBABILÍSTICOS

2.1 NAÏVE BAYES


O Naïve Bayes é um método probabilístico que calcula a probabilidade
de um documento pertencer a uma categoria, de acordo com a ocorrência das
colunas desse documento estarem nas categorias existentes.

Estudos comparativos entre algoritmos de classificação consideram que o


classificador Naïve Bayes é um classificador simples e com um bom desempenho,
quando comparado com árvore de decisão, redes neurais, entre outros
(MCCALLUM; NIGAM, 1998). Isso acontece porque, ao contrário de métodos
que precisam conhecer toda a base de dados, o Naïve Bayes executa um único
modelo probabilístico, tornando-o mais rápido.

Além disso, o classificador exibe alta precisão e velocidade quando


aplicado a grandes bases de dados. O método tem diversas variações, das quais o
Naïve Bayes Multinomial e o Naïve Bayes Bernoulli se destacam na realização de
tarefas de categorização de textos (DUDA; HART, 1973).

99
UNIDADE 2 — CLASSIFICAÇÃO

Nesse tipo de método, cada exemplo de treinamento pode decrementar ou


incrementar a probabilidade de uma hipótese ser correta. O conhecimento a priori
pode ser combinado com os dados observados, para determinar a probabilidade
de uma hipótese. Métodos bayesianos podem acomodar hipóteses que fazem
predições probabilísticas (por exemplo, um paciente tem uma chance de 93%
de possuir determinada doença). As novas instâncias podem ser classificadas
combinando a probabilidade de múltiplas hipóteses ponderadas pelas suas
probabilidades (KOERICH, 2012).

O método Naïve Bayes é considerado de aprendizado on-line, uma vez


que suas probabilidades podem ser atualizadas a cada novo documento de
maneira incremental, sem necessidade de refazer o treinamento com todos os
documentos.

Koerich (2012) cita os benefícios da utilização do Naïve Bayes e suas


derivações:

• São um conjunto de diversos algoritmos práticos de aprendizagem:


o Naïve Bayes.
o Redes Bayesianas.
o Combinam conhecimento a priori com os dados observados.
o Requerem probabilidades a priori.

• Fornecem uma estrutura conceitual útil:


o “Norma de ouro” para avaliar outros algoritmos de aprendizagem.
o Norma de ouro menor erro possível.

O algoritmo Naïve Bayes pode ser usado de forma incremental, conforme


a necessidade de sua revisão probabilística. Existem várias abordagens sobre
os modelos de entrada, sendo os principais o modelo binário e o modelo
multidimensional. No modelo binário, cada documento é representado por
um vetor binário, cuja presença ou ausência de um termo é representada,
respectivamente, por 1 e 0. No modelo multidimensional, a representação ocorre
por vetores de números inteiros por documento, em que cada índice do vetor
representa a quantidade de vezes que um termo acontece no documento (TELES;
WEBBER, 2019).

De modo geral, o teorema de Bayes, utilizado na implementação do


algoritmo, fornece uma forma de calcular a probabilidade posterior P (c | x) a
partir de P (C), P (x) e P (x | c).

100
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

FIGURA 23 – VISUALIZAÇÃO DO DATASET

FONTE: <https://cutt.ly/wgBJVBR>. Acesso em: 3 nov. 2020.

Segundo Zó (2019), cada elemento pertencente à fórmula da Figura 23


representa:

• P (c | x) é a probabilidade posterior da classe (c, alvo) dado preditor (x, atributos).


• P (C) é a probabilidade original da classe.
• P (x | c) representa a probabilidade de preditor dada a classe.
• P (x) é a probabilidade original do preditor.

Segundo Lochter (2015), esse método assume que os atributos são


independentes. Essa premissa permite que o cálculo de probabilidade de um
evento, para uma classe, seja simplificado conforme mostra a Figura 24.

FIGURA 24 – SIMPLIFICAÇÃO DO MÉTODO PARA CONJUNTOS DE DADOS

FONTE: Lochter (2015, p. 50)

Complementarmente, esse grupo de métodos, baseado no teorema de


Bayes, consegue generalizar hipóteses em torno de problemas multiclasses,
trabalha bem com atributos categóricos, além de obter bons resultados com base
de dados pequenas. Além disso, leva a um classificador probabilístico que oferece
uma classe ŷ, conhecendo-se as probabilidades de ocorrência de cada valor e cada
atributo para cada classe (LOCHER, 2015).

FIGURA 25 – SELEÇÃO DAS PROBABILIDADES DO NAÏVE BAYES

FONTE: Lochter (2015, p. 50)

101
UNIDADE 2 — CLASSIFICAÇÃO

Para compreender melhor o funcionamento do modelo probabilístico,


vamos considerar um exemplo prático, seguindo os dados apresentados na
Figura 26.

FIGURA 26 – DADOS PARA APLICAÇÃO DO TEOREMA DE BAYES

FONTE: <https://cutt.ly/ggBKDYO>. Acesso em: 3 nov. 2020.

Utilizando os dados da imagem, a sequência da aplicação do método


Naïve Bayes deve ser a seguinte (VOOO, 2016):

• Passo 1: converter o conjunto de dados em uma tabela de frequência.


• Passo 2: criar tabela de probabilidade, ao encontrar a probabilidade de tempo
“Nublado = 0,29” e probabilidade de jogar = 0,64.
• Passo 3: utilizar a equação Bayesiana Naïve para calcular a probabilidade
posterior para cada classe. A classe com maior probabilidade posterior é o
resultado da previsão.
• Problema: os jogadores irão jogar se o tempo está ensolarado –¬ esta afirmação
está correta?
• Podemos resolver usando o método discutido para probabilidade posterior.
• P (Sim | Ensolarado) = P (Ensolarado | Sim) * P (Sim) / P (Ensolarado)
• Aqui temos P (Ensolarado | Sim) = 3/9 = 0,33, P (Ensolarado) = 5/14 = 0,36, P
(Sim) = 9/14 = 0,64
• Agora, P (Sim | Ensolarado) = 0,33 * 0,64 / 0,36 = 0,60, que tem maior probabilidade.

Em outro exemplo, considera-se dois times rivais de futebol, Time 0 e


Time 1, supondo que o Time 0 vença 65% das vezes e o Time 1 vença as demais
partidas. Entre os jogos vencidos pelo Time 0, apenas 30 deles são disputados no
campo de futebol do Time 1. Por outro lado, 75 das vitórias para o Time 1 foram
obtidas jogando em casa. Se o time f for sediar a partida nert entre os dois times,
qual time provavelmente seria o vencedor?

Segundo Tan, Steinbach, Kumar (2016), o teorema de Bayes pode ser


usado para resolver o problema de predição apresentado. Por conveniência de
notação, seja X a variável aleatória que representa o time que hospeda a partida
e Y a variável aleatória que representa o vencedor da partida. Tanto X quanto
Y podem assumir valores do conjunto {0,1}. Podemos resumir as informações
fornecidas no problema da seguinte forma:
102
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

• A probabilidade de vitória do Time 0 é de P (Y = 0) = 0,65.


• A probabilidade de vitória do Time 1 é de P (Y = 1) = 1 – P (Y = 0) = 0,35.
• A probabilidade de o Time 1 sediar a partida que ganhou é de P (X = 1 | Y = 1)
= 0,75.
• A probabilidade de o Time 1 sediar a partida vencida pelo Time 0 é de P (X =
1 | Y = 0) = 0,3.

FIGURA 27 – DADOS PARA APLICAÇÃO DO TEOREMA DE BAYES

FONTE: Adaptada de Tan, Steinbach e Kumar (2016)

2.1.1 Implementação matemática do método


O Naïve Bayes é um tradicional método de Machine learning utilizado nos
mais diversos cenários de classificação, principalmente pelo seu bom desempenho
de tempo de execução. Assim, vamos entender um pouco melhor sobre como esse
método funciona por meio de sua implementação.

No exemplo apresentado anteriormente, utilizaremos o Iris Dataset e


criaremos o método do zero, sendo necessário, previamente, elaborar um método
para particionar os dados de acordo com as classes que existem na base de dados.

QUADRO 32 – SEPARANDO OS DADOS PARA O NAÏVE BAYES

1 def separate_by_class(dataset):
2 separated = dict()
3 for i in range(len(dataset)):
4 vector = dataset[i]
5 class_value = vector[-1]
6 if (class_value not in separated):
7 separated[class_value] = list()
8 separated[class_value].append(vector)
9 return separated
10 # Testando a separação dos dados
11 dataset = [[3.393533211,2.331273381,0],
12 [3.110073483,1.781539638,0],
13 [1.343808831,3.368360954,0],

103
UNIDADE 2 — CLASSIFICAÇÃO

14 [3.582294042,4.67917911,0],
15 [2.280362439,2.866990263,0],
16 [7.423436942,4.696522875,1],
17 [5.745051997,3.533989803,1],
18 [9.172168622,2.511101045,1],
19 [7.792783481,3.424088941,1],
20 [7.939820817,0.791637231,1]]
21 separated = separate_by_class(dataset)
22 for label in separated:
23 print(label)
24 for row in separated[label]:
25 print(row)

FONTE: Adaptado de Brownlee (2019)

Segundo Brownlee (2019), como parte da probabilística do método,


precisamos de duas estatísticas de um determinado conjunto de dados. Para
isso, torna-se necessário obter a média e o desvio padrão. Complementarmente,
realizaremos a sumarização dos dados para aplicar as devidas estatísticas.

QUADRO 33 – SUMARIZANDO O CONJUNTO DE DADOS E GERANDO ESTATÍSTICAS


1 # calcula o desvio padrão
2 def stdev(numbers):
3 avg = mean(numbers)
4 variance = sum([(x-avg)**2 for x in numbers]) / floa-
t(len(numbers)-1)
5 return sqrt(variance)
6
7 # calcula média, desvio padrão e conta cada coluna
8 def summarize_dataset(dataset):
9 summaries = [(mean(column), stdev(column), len(co-
lumn)) for column in zip(*dataset)]
10 del(summaries[-1])
11 return summaries
12
13 # divide os dados para fazer os cálculos estatísticos
14 def summarize_by_class(dataset):
15 separated = separate_by_class(dataset)
16 summaries = dict()
17 for class_value, rows in separated.items():
18 summaries[class_value] = summarize_dataset(rows)
19 return summaries
FONTE: Adaptado de Brownlee (2019)

Como parte da implantação principal, devem-se calcular as probabilidades.


Uma distribuição gaussiana pode ser resumida usando apenas dois números – a
média e o desvio padrão (BROWNLEE, 2018). Dessa maneira, com um pouco de
matemática, podemos estimar a probabilidade de um determinado valor.

104
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

QUADRO 34 – CALCULANDO AS PROBABILIDADES

1 from math import sqrt


2 from math import pi
3 from math import exp
4
5 # calculando a distribuição gausiana
6 def calculate_probability(x, mean, stdev):
7 exponent = exp(-((x-mean)**2 / (2 * stdev**2 )))
8 return (1 / (sqrt(2 * pi) * stdev)) * exponent
9
10 # Testando as probabilidades
11 print(calculate_probability(1.0, 1.0, 1.0))
12 print(calculate_probability(2.0, 1.0, 1.0))
13 print(calculate_probability(0.0, 1.0, 1.0))
FONTE: Adaptado de Brownlee (2019)

As probabilidades são calculadas separadamente para cada classe. Isso


significa que, primeiramente, calculamos a probabilidade de que um novo dado
pertença à primeira classe, em seguida, calculamos as probabilidades de que ele
pertença à segunda classe, e assim por diante para todas as classes.

QUADRO 35 – UTILIZANDO AS PROBABILIDADES


1 def calculate_class_probabilities(summaries, row):
2 total_rows = sum([summaries[label][0][2] for label in
summaries])
probabilities = dict()
3 for class_value, class_summaries in summaries.items():
4 probabilities[class_value] = summaries[class_
5 value][0][2]/float(total_rows)
for i in range(len(class_summaries)):
6 mean, stdev, count = class_summaries[i]
7 probabilities[class_value] *= calculate_
8 probability(row[i], mean, stdev)
return probabilities
9 # Testar se as probabilidades estão sendo realizadas
10 dataset = [[3.393533211,2.331273381,0],
11 [3.110073483,1.781539638,0],
12 [1.343808831,3.368360954,0],
13 [3.582294042,4.67917911,0],
14 [2.280362439,2.866990263,0],
15 [7.423436942,4.696522875,1],
16 [5.745051997,3.533989803,1],
17 [9.172168622,2.511101045,1],
18 [7.792783481,3.424088941,1],
19 [7.939820817,0.791637231,1]]
20 summaries = summarize_by_class(dataset)

105
UNIDADE 2 — CLASSIFICAÇÃO

21 probabilities = calculate_class_probabilities(summaries, da taset[0]


print(probabilities)
22
23
24
FONTE: Adaptado de Brownlee (2019)

Por fim, vamos realizar a aplicação do método com ênfase no Dataset Iris. Para
isso, será necessário implementar o método de predição, responsável por analisar os
cálculos realizados anteriormente, com ênfase na classificação dos dados.

QUADRO 36 – UTILIZANDO AS PROBABILIDADES


1 def calculate_class_probabilities(summaries, row):
2 total_rows = sum([summaries[label][0][2] for label in
summaries])
probabilities = dict()
3 for class_value, class_summaries in summaries.items():
4 probabilities[class_value] = summaries[class_
5 value][0][2]/float(total_rows)
for i in range(len(class_summaries)):
6 mean, stdev, count = class_summaries[i]
7 probabilities[class_value] *= calculate_
8 probability(row[i], mean, stdev)
return probabilities
9 # Testar se as probabilidades estão sendo realizadas
10 dataset = [[3.393533211,2.331273381,0],
11 [3.110073483,1.781539638,0],
12 [1.343808831,3.368360954,0],
13 [3.582294042,4.67917911,0],
14 [2.280362439,2.866990263,0],
15 [7.423436942,4.696522875,1],
16 [5.745051997,3.533989803,1],
17 [9.172168622,2.511101045,1],
18 [7.792783481,3.424088941,1],
19 [7.939820817,0.791637231,1]]
20 summaries = summarize_by_class(dataset)
21 probabilities = calculate_class_probabilities(summaries, da-
22 taset[0])
print(probabilities)
23
FONTE: Adaptado de Brownlee (2019)

QUADRO 37 – UTILIZANDO AS PROBABILIDADES


1 # Método que realiza a predição
2 def predict(summaries, row):
3 probabilities = calculate_class_probabilities(summa-
4 ries, row)
best_label, best_prob = None, -1
5 for class_value, probability in probabilities.items():

106
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

6 if best_label is None or probability > best_prob:


7 best_prob = probability
8 best_label = class_value
9 return best_label
10
11 #Abrindo o Iris Dataset
12 filename = 'iris.csv'
13 dataset = load_csv(filename)
14 for i in range(len(dataset[0])-1):
15 str_column_to_float(dataset, i)
16 str_column_to_int(dataset, len(dataset[0])-1)
17 # treinando o modelo
18 model = summarize_by_class(dataset)
19 # inserindo novas amostra para serem preditas
20 row = [5.7,2.9,4.2,1.3]
21 # predict the label
22 label = predict(model, row)
print('Data=%s, Predicted: %s' % (row, label))
FONTE: Adaptado de Brownlee (2019)

2.2 IMPLEMENTAÇÃO COM O SCIKIT-LEARN


Agora que já compreendeu o teorema de Bayes, sua aplicação, bem
como o processo para o desenvolvimento desse algoritmo, estudaremos a sua
implementação com o scikit-learn. No primeiro conjunto de dados utilizados no
início deste livro, vamos conferir como fica a divisão dos dados em entrada e saída.

QUADRO 38 – SEPARANDO OS DADOS EM ENTRADA E SAÍDA

1 X = credito[0:len(credito),0:2]
2 y = credito[0:len(credito),2:3]
FONTE: O autor

Assim como na aplicação dos demais métodos que empregam essa


biblioteca, uma vez que os dados estão preparados, basta aplicar o algoritmo. O
método responsável por ensinar o algoritmo a partir dos dados é o fit – perceba
que o Naïve Bayes é instanciado pelo “MultinomialNB”.

QUADRO 39 – GERANDO O CLASSIFICADOR DO NAIVE BAYES

1 from sklearn.naive_bayes import MultinomialNB


2 classificador_NB = MultinomialNB()
3 classificador_NB.fit(X, y)
FONTE: O autor

107
UNIDADE 2 — CLASSIFICAÇÃO

Dividimos os dados em input (X) e output (y), sendo criado o classificador,


variável de mesmo nome. O classificador está apto a predizer, ou seja, classificar
novas amostras com base nos dados que aprendeu. Vejamos como predizer o
saldo de alguém que tem 40 anos e uma renda de R$ 5000.

QUADRO 40 – SEPARANDO OS DADOS EM ENTRADA E SAÍDA

1 novo_campo = (np.array([150,0]).reshape(1,-1))
2 print('Ao realizar a predição o valor será: '+classificador_
NB.predict(novo_campo)[0])
FONTE: O autor

2.3 CLASSIFICANDO O IRIS DATASET COM O NAÏVE BAYES


Como já vimos, todo o roteiro de implementação e utilização do Naïve
Bayes com o scikit-learn, agora vamos classificar o exemplo com o Iris Dataset.

QUADRO 41 – ABRINDO O DATASET E PREPARANDO OS DADOS

1 import numpy as np
2 from sklearn import datasets
3 from sklearn.model_selection import train_test_split
4 iris = datasets.load_iris()
5 X = iris.data[:, [2, 3]]
6 y = iris.target
7 X_train, X_test, y_train, y_test = train_test_split(X, y,
8 test_size=0.3, random_state=0)
9 print('Existem {} amostras de treino e {} amostras de tes-
10 te'.format(
11 X_train.shape[0], X_test.shape[0]))
FONTE: O autor

DICAS

Lembre-se de repetir todos os passos de preparação de dados que foram


utilizados no algoritmo do KNN.

Até esse momento, os dados já foram carregados, preparados e


normalizados, por isso passaremos para a etapa final da aplicação do método:
treinar e avaliar.

108
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

QUADRO 42 – TREINANDO E AVALIANDO O MÉTODO NAIVE BAYES

1 from sklearn.naive_bayes import MultinomialNB


2 classificador_NB = MultinomialNB()
3 classificador_NB.fit(X_train_normalizado, y_train)
4 print('A acurácia do Naive Bayes na base de treino é: {:.2f}
'.format(classificador_NB.score(X_train_normalizado, y_
train)))
5 print('A acurácia do Naive Bayes na base de teste é: {:.2f}
'.format(classificador_NB.score(X_test_normalizado, y_test)))
FONTE: O autor

O Naïve Bayes tem variações da sua implementação, com variações em


sua fórmula. Um exemplo é o Naïve Bayes Bernoulli, que aplica técnicas para
utilizar atributos booleanos discretos. O Quadro 43 mostra como fazer a aplicação
Naïve Bayes Bernoulli utilizando o scikit-learn.

QUADRO 43 – TREINANDO E AVALIANDO O MÉTODO NAIVE BAYES BERNOULLI


1 from sklearn.naive_bayes import BernoulliNB
2 classificador_NB = BernoulliNB()
3 classificador_NB.fit(X_train_normalizado, y_train)
4 print('A acurácia do Naive Bayes Bernoulli na base de treino
é: {:.2f} '.format(classificador_NB.score(X_train_normaliza-
do, y_train)))
5 print('A acurácia do Naive Bayes Bernoulli na base de teste
é: {:.2f} '.format(classificador_NB.score(X_test_normalizado,
y_test)))
FONTE: O autor

DICAS

O Naïve Bayes tem diversas variações de sua implementação, então, para


conhecer melhor sobre o seu conceito matemático e como implementá-lo com scikit-
learn, acesse a documentação disponível em: https://scikit-learn.org/stable/modules/naive_
bayes.html.

109
UNIDADE 2 — CLASSIFICAÇÃO

3 OUTROS CLASSIFICADORES
A tarefa de classificação, seja binária ou multiclasse, está presente nos
mais diversos cenários de aplicação, como de reconhecimento de caracteres,
análise de sentimento, categorização de textos, entre muitos outros. Para obter
melhor eficácia nesses cenários, torna-se necessário conhecer os mais diversos
métodos de classificação.

Até o momento, conhecemos duas famílias de métodos de classificação,


bem como sua origem matemática e sua implementação em scikit-learn. A
partir de agora, estudaremos outros métodos, com objetivo de abranger maior
conhecimento e reflexão sobre qual o melhor método a ser aplicado na resolução
de problemas de Machine learning.

3.1 REGRESSÃO LINEAR


Segundo Ferrero, Maletzke e Zalewski (2009), a regressão linear é uma
técnica para modelar a relação entre atributos e classe, na qual cada atributo é
ponderado em função de sua contribuição para a previsão da variável resposta.
Os atributos são considerados variáveis independentes e a classe, a variável
dependente desses atributos.

O objetivo do algoritmo para construção da regressão linear consiste em


ajustar os pesos dos atributos, de forma a atingir um critério específico, tal como
minimizar o erro quadrático médio.

FIGURA 28 – REGRESSÃO LINEAR

FONTE: <https://usuariosdoexcel.files.wordpress.com/2011/07/conf_estat_02.jpg>.
Acesso em: 3 nov. 2020.

Como já realizamos todo o processo de coleta e pré-processamento


utilizando os dados do Iris Dataset, vamos usar essa base para aplicar a regressão
linear com a biblioteca scikit-learn.

110
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

QUADRO 44 – TREINANDO E AVALIANDO O MÉTODO REGRESSÃO LINEAR


1 from sklearn.linear_model import LinearRegression
2 classificador_RL = LinearRegression()
3 classificador_RL.fit(X_train_normalizado, y_train)
4 print('A acurácia da Regressão Linear na base de treino é:
{:.2f} '.format(classificador_RL.score(X_train_normalizado,
y_train)))
5 print('A acurácia da Regressão Linear na base de teste é:
{:.2f} '.format(classificador_RL.score(X_test_normalizado,
y_test)))
FONTE: O autor

DICAS

Confira a documentação completa sobre a implementação da regressão linear


em: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html.

3.2 REGRESSÃO LOGÍSTICA


O método de regressão logística é uma adaptação da tradicional regressão
linear (WALKER; DUNCAN, 1967) com saída binária. A regressão logística
é capaz de gerar hipóteses com saídas discretas e mapeia a relação entre uma
variável dependente categórica com uma ou mais variáveis independentes.

FIGURA 29 – REGRESSÃO LOGÍSTICA

FONTE: <https://ebmacademy.files.wordpress.com/2015/08/fig5.jpg>. Acesso em: 3 nov. 2020.

A regressão logística pode ser utilizada para modelar uma relação não
linear entre a variável resposta e as variáveis explicativas. Entretanto, essa relação
não linear tem que ser explicitada pelo desenvolvedor do modelo. O método de
regressão logística utiliza a probabilidade de algum evento que ocorre como
uma função de regressão linear, para descobrir a categoria de uma determinada
variável. Esse método é considerado um método de aprendizado off-line.

Uma vez realizado todo o processo de coleta e pré-processamento


utilizando os dados do Iris Dataset, vamos usar essa base para aplicar a regressão
linear logística com a biblioteca scikit-learn.

111
UNIDADE 2 — CLASSIFICAÇÃO

QUADRO 45 – TREINANDO E AVALIANDO O MÉTODO REGRESSÃO LOGÍSTICA


1 from sklearn.linear_model import LogisticRegression
2 classificador_RLog = LogisticRegression(random_state=0)
3 classificador_RLog.fit(X_train_normalizado, y_train)
4 print('A acurácia da Regressão Linear na base de treino é:
{:.2f} '.format(classificador_RLog.score(X_train_normalizado,
y_train)))
5 print('A acurácia da Regressão Logística na base de teste é:
{:.2f} '.format(classificador_RLog.score(X_test_normalizado,
y_test)))

FONTE: O autor

DICAS

Confira a documentação completa sobre a implementação da regressão


linear logística em: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.
LogisticRegression.html.

3.3 MÁQUINA DE VETOR DE SUPORTE


As máquinas de vetor de suporte (SVM, do inglês Support Vector Machines;
VAPNIK, 1995) compõem uma técnica de aprendizado de máquina amplamente
utilizada e com excelentes resultados na classificação de textos. O SVM é um novo
método para a classificação de dados lineares e não lineares. Para o cálculo do SVM,
são considerados o bias, o tamanho do vetor, o vetor de teste e o vetor de suporte.

FIGURA 30 – MÁQUINA DE VETOR DE SUPORTE

FONTE: <https://jamesmccaffrey.files.wordpress.com/2017/04/supportvectormachineequations.jpg>.
Acesso em: 3 nov. 2020.

As máquinas de vetor de suporte são embasadas pela teoria de aprendizado


estatístico, que estabelece uma série de princípios a serem seguidos para a obtenção
de classificadores com boa generalização, a qual é definida como a sua capacidade
de prever corretamente a classe de novos dados do mesmo domínio em que o
aprendizado ocorreu. Esse método é considerado de aprendizado off-line.
112
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

Agora que já realizamos todo o processo de coleta e pré-processamento


utilizando os dados do Iris Dataset, vamos usar essa base para aplicar a regressão
linear com a biblioteca scikit-learn.

QUADRO 46 – TREINANDO E AVALIANDO O MÉTODO SVM

1 from sklearn import svm


2 classificador_SVM = LogisticRegression(random_state=0)
3 classificador_SVM.fit(X_train_normalizado, y_train)
4 print('A acurácia do SVM na base de treino é: {:.2f} '.for-
mat(classificador_SVM.score(X_train_normalizado, y_train)))
print('A acurácia do SVM na base de teste é: {:.2f} '.forma-
5 t(classificador_SVM.score(X_test_normalizado, y_test)))

FONTE: O autor

DICAS

Confira a documentação completa sobre implementação do SVM em: https://


scikit-learn.org/stable/modules/svm.html.

3.4 PERCEPTRON
A versão inicial do algoritmo do Perceptron foi proposta na década de
1950 por Rosenblatt (1957). Esse algoritmo, em sua versão inicial, teve como
objetivo replicar o funcionamento da mente humana. A implementação inicial é
para a aprendizagem de redes neurais simples, de uma camada.

FIGURA 31 – PERCEPTRON

FONTE: Adaptada de <http://blog.zabarauskas.com/img/perceptron.gif>.


Acesso em: 3 nov. 2020.

O método Perceptron tem diversas variações, desde o Voted-Perceptron,


proposto por Freund, Schapire e Abe (1999), até versões mais complexas que
deram origem às redes neurais. Como o erro do Perceptron pode ser calculado a
cada iteração, pode-se dizer que esse método tem a capacidade de aprender de
maneira incremental.

113
UNIDADE 2 — CLASSIFICAÇÃO

Uma vez realizados a coleta e o pré-processamento utilizando os dados


do Iris Dataset, vamos usar essa base para aplicar o método Perceptron com a
biblioteca scikit-learn.

QUADRO 47 – TREINANDO E AVALIANDO O MÉTODO PERCEPTRON


1 from sklearn.linear_model import Perceptron
2 classificador_Per = Perceptron(tol=1e-3, random_state=0)
3 classificador_Per.fit(X_train_normalizado, y_train)
4 print('A acurácia do Perceptron na base de treino é: {:.2f}
'.format(classificador_Per.score(X_train_normalizado, y_
train)))
5 print('A acurácia do Perceptron na base de teste é: {:.2f}
'.format(classificador_Per.score(X_test_normalizado, y_
test)))

FONTE: O autor

DICAS

Confira a documentação completa sobre implementação do Perceptron em:


https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Perceptron.html.

114
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

LEITURA COMPLEMENTAR

RECONHECIMENTO DE IMAGENS COM REDES NEURAIS


CONVOLUCIONAIS EM PYTHON

Data Science Academy

Construindo a Rede Neural Convolucional

Nossa rede é uma sequência de camadas e podemos usar o modelo


sequencial oferecido pelo Keras, que possui as funções necessárias para construir
cada camada de uma rede neural convolucional.

O primeiro passo é carregar os pacotes necessários, o que é feito nas


células a seguir.

O Keras utiliza o TensorFlow como backend, pois, na prática, o Keras é


apenas uma biblioteca para simplificar a complexidade do TensorFlow. Aqui estão
as versões utilizadas:

# Imports
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense

Então, inicializamos a nossa rede:

# Inicializando a Rede Neural Convolucional


classifier = Sequential()

Agora, definimos os parâmetros para o shape dos dados de entrada e a


função de ativação. Usaremos 32 features para um array 2D e definiremos nosso
array como o formato 3x3.

Converteremos todas as nossas imagens 64x64 pixels em um array 3D


(pois as imagens são coloridas com 3 canais de cores).

# Passo 1 - Primeira Camada de Convolução


classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation
= 'relu'))

Em seguida, aplicamos o agrupamento (pooling) para reduzir o tamanho do


mapa de features, resultado da primeira camada de convolução (dividido por 2):

115
UNIDADE 2 — CLASSIFICAÇÃO

# Passo 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))

Adicionamos, então, a segunda camada de convolução, tornando nossa


rede um pouco mais profunda:

# Adicionando a Segunda Camada de Convolução


classifier.add(Conv2D(32, (3, 3), activation = 'relu'))

Mais uma vez, aplicamos a camada de pooling à saída da camada de


convolução anterior.

classifier.add(MaxPooling2D(pool_size = (2, 2)))

Agora, aplicamos o “achatamento”, ou apenas Flatten, para converter a


estrutura de dados 2D, resultado da camada anterior em uma estrutura 1D, ou
seja, um vetor.

# Passo 3 - Flattening
classifier.add(Flatten())

No próximo passo, conectamos todas as camadas. Usamos uma função de


ativação retificadora (relu) e então uma função de ativação sigmoide, para obter
as probabilidades de cada imagem conter um cachorro ou um gato. O modelo
raramente terá 100% de certeza e o que ele gera como resultado é uma probabilidade.

# Passo 4 - Full connection


classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))

Finalmente, compilamos nossa rede neural. Para compilar a rede, usamos


o otimizador “Adam”, um excelente algoritmo de primeira ordem para otimização
baseada em gradiente de funções objetivas estocásticas, que toma como base uma
estimativa adaptada de momentos de baixa ordem.

Usamos uma função log loss com “entropia binária cruzada”, pois ela
funciona bem com funções sigmoides. Nossa métrica será a acurácia, pois essa é
nossa maior preocupação no treinamento desse tipo de modelo.

# Compilando a rede
classifier.compile(optimizer = 'adam', loss = 'binary_crossen-
tropy', metrics = ['accuracy'])

Nesse ponto, temos nossa rede construída. Precisamos, agora, treiná-la.

116
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

Treinando a rede neural convolucional

Pré-processamento

Com a rede criada, precisamos realizar o treinamento. Antes, porém,


vamos fazer algum pré-processamento nos dados, no nosso caso, as imagens.
Para essa tarefa, vamos usar a função “ImageDataGenerator()” do Keras e ajustar
escala e zoom das imagens de treino e a escala das imagens de validação.

O pré-processamento dos dados é etapa crucial em qualquer projeto de


Machine learning e muitas técnicas podem ser usadas, sempre de acordo com os
dados em mãos e o problema que estamos tentando resolver.

# Criando os objetos train_datagen e validation_datagen com as


regras de pré-processamento das imagens
from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,


shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)

validation_datagen = ImageDataGenerator(rescale = 1./255)

Aplicamos, então, os dois objetos criados anteriormente para pré-processar


os dados de treino e validação. Lembre-se: o tratamento aplicado aos dados de
validação deve ser o mesmo aplicado aos dados de treino.

# Pré-processamento das imagens de treino e validação


training_set = train_datagen.flow_from_directory('dataset_trei-
no',
target_size =
(64, 64),
batch_size =
32,
class_mode =
'binary')

validation_set = validation_datagen.flow_from_directory('data-
set_validation',
target_
size = (64, 64),
batch_
size = 32,
class_
mode = 'binary')

117
UNIDADE 2 — CLASSIFICAÇÃO

Treinamento

Usaremos 8.000 passos em nosso conjunto de treinamento para cada


época. Escolhemos 2.000 etapas de validação para as imagens de validação – esses
hiperparâmetros são definidos por você.

# Executando o treinamento (esse processo pode levar bastante


tempo, dependendo do seu computador)
classifier.fit_generator(training_set,
steps_per_epoch = 8000,
epochs = 5,
validation_data = validation_set,
validation_steps = 2000)

Treinamento concluído com sucesso! Observe que, ao final de cada época,


a acurácia aumenta, ou seja, nosso modelo está aprendendo e cometendo cada
vez menos erros! Essa é a magia por trás de Machine learning, a pura aplicação de
Matemática e Estatística, por meio de Programação e Ciência da Computação.
Isso não é maravilhoso? Machine learning está transformando o nosso mundo, à
medida que treinamos as máquinas para realizar tarefas, até então, exclusivas dos
seres humanos.

Fazendo previsões

Vamos agora testar nosso modelo treinado com imagens que ele ainda
não viu e que estão nos dados de teste.

Para cada imagem de teste, carregamos as imagens com as mesmas


dimensões usadas nas imagens de treino. Na sequência, convertemos as imagens
em um array e expandimos as dimensões. Então, apresentamos as imagens ao
classificador treinado nos passos anteriores. Por fim, verificamos o resultado da
previsão e emitimos a informação se a imagem é de um gato ou um cachorro.

# Primeira Imagem
import numpy as np
from keras.preprocessing import image

test_image = image.load_img('dataset_teste/2216.jpg', target_


size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices

if result[0][0] == 1:
prediction = 'Cachorro'
else:
prediction = 'Gato'

Image(filename='dataset_teste/2216.jpg')

118
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO

Perfeito! Nosso modelo recebeu uma imagem que nunca tinha visto antes
e, com base no que aprendeu durante o treinamento, foi capaz de classificar a
imagem como de um cachorro! Na prática, isso é o que acontece:

• O modelo treinado nada mais é do que um conjunto de pesos que foram


definidos a partir de vetores de imagens de cães e gatos.
• Os pesos do modelo foram definidos com base nas características das imagens
de treino.
• Temos pesos que representam patas, outros que representam bigodes, outros
que representam orelhas etc.
• Convertemos a imagem de teste em um vetor de pixels e apresentamos ao
modelo.
• O modelo compara o vetor da imagem de teste com seus pesos e, então, emite
a classificação.

Não há mágica. Há Matemática e Estatística, por meio de Programação e


Ciência da Computação!

Conclusão

Obteve-se um resultado final de 95,82% de precisão para o nosso conjunto


de treino e 83% para o nosso conjunto de testes. Para as seis imagens de amostra,
nosso modelo acertou cinco. Obviamente, mais testes poderiam ser realizados.

Melhorias adicionais para esse modelo:

• Aumentar o número de épocas para 25, para uma aprendizagem mais


profunda.
• Aumentar o redimensionamento da imagem de 64x64 para 256x256, o que
deve levar a melhores resultados, devido à resolução mais alta.
• Aumentar o tamanho do lote de 32 para 64 também pode levar a melhores
resultados.

119
UNIDADE 2 — CLASSIFICAÇÃO

• Usar imagens sintéticas rotacionando a imagem principal, técnica conhecida


como Dataset Augmentation.
• Alterar a arquitetura da rede, incluindo mais uma camada convolucional.
• Avaliar outras métricas do modelo e ajustar os hiperparâmetros de acordo.
• Experimentar outros algoritmos de otimização.

FONTE: Adaptado de Data Science Academy. Capítulo 47 – Reconhecimento de Imagens com


Redes Neurais Convolucionais em Python – Parte 4. In: Data Science Academy. Deep Learning
Book. Disponível em: http://deeplearningbook.com.br/reconhecimento-de-imagens-com-redes-
-neurais-convolucionais-em-python-parte-4/. Acesso em: 3 nov. 2020.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

120
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• É possível utilizar probabilidade para realizar a classificação de dados.


• O Naïve Bayes é um método probabilístico que calcula a probabilidade de um
documento pertencer a uma categoria.
• O método Naïve Bayes tem diversas variações, como o Naïve Bayes
Multinomial e o Naïve Bayes Bernoulli.
• O método Naïve Bayes é considerado de aprendizado on-line, uma vez que
suas probabilidades podem ser atualizadas a cada novo documento.
• O Naïve Bayes pode ser implementado tanto para classificação binária quanto
para multiclasse.
• O método Naïve Bayes assume que os atributos são independentes – essa
premissa permite que o cálculo de probabilidade de um evento para uma
classe seja simplificado.
• O scikit-learn permite a aplicação de diversas variações do método Naïve
Bayes.
• Existem diversos classificadores que podem ser utilizados em Machine
learning.
• Em cenários de Machine learning, o ideal é avaliar os métodos para se obter o
melhor classificador.
• A regressão linear é uma técnica para modelar a relação entre atributos e
classe, na qual cada atributo é ponderado em função de sua contribuição para
a previsão da variável resposta.
• A regressão logística é capaz de gerar hipóteses com saídas discretas e
mapeia a relação entre uma variável dependente categórica com uma ou mais
variáveis independentes.
• Os métodos SVM são embasados pela teoria de aprendizado estatístico, a qual
estabelece uma série de princípios que devem ser seguidos para a obtenção de
classificadores com boa generalização.
• O Perceptron representa o início das redes neurais, em sua implementação
mais simples com um neurônio.

121
AUTOATIVIDADE

1 Considere o texto e a figura a seguir:

O classificador Naïve Bayes é construído utilizando dados de treinamento para


estimar a probabilidade de um documento pertencer a uma classe. O teorema
de Bayes, mostrado a seguir, é utilizado para estimar estas probabilidades.

FONTE: OLIVEIRA, G. L.; NETO, M. G. M. Expertext: Uma ferramenta de combinação de múl-


tiplos classificadores naive bayes. Anales de la 4ª Jornadas Iberoamericanas de Ingeniería de
Software e Ingeniería de Conocimiento. Madrid, v. 1, p. 317-32, 2004.

a) Indique o significado de C.
b) Indique o significado de x.
c) Indique o significado de P (c | x).
d) Indique o significado de P (C)
e) Indique o significado de P (x | c)
f) Indique o significado de P (x).

2 Considere o texto a seguir:

A regressão linear é uma ferramenta estatística utilizada para traçar a


tendência de funções com variação linear. Este método, apesar de simples,
quando é convenientemente aplicado, pode produzir resultados satisfatórios
na previsão de séries temporais, quando estas são lineares.

FONTE: OLIVEIRA, G. L.; NETO, M. G. M. Expertext: Uma ferramenta de combinação de múlti-


plos classificadores naive bayes. Anales de la 4ª Jornadas Iberoamericanas de Ingeniería de
Software e Ingeniería de Conocimiento. Madrid, v. 1, p. 317-32, 2004.

Sobre a regressão linear e sua implementação no scikit-learn, assinale a


alternativa que apresenta o trecho de código que instancia um objeto
classificador do tipo regressão linear:

a) ( ) Classificador_RL = LinearRegression()
b) ( ) Classificador_RL = RegLIn()
c) ( ) Classificador_RL = RegressionMB()
d) ( ) Classificador_RL = Bernoullli()

122
REFERÊNCIAS
ABEEL, T.; VAN DE PEER, Y.; SAEYS, Y. Java-ml: A Machine learning library.
Journal of Machine learning Research, v. 10, p. 931-934, 2009. Disponível em:
https://biblio.ugent.be/publication/697734/file/709516.pdf. Acesso em: 3 nov. 2020.

AHMED, Z. et al. Machine learning at Microsoft with ML. NET. In: PROCEE-
DINGS OF THE 25TH ACM SIGKDD INTERNATIONAL CONFERENCE ON
KNOWLEDGE DISCOVERY & DATA MINING. Proceedings […] KDD, 2019. p.
2448-2458.

ALMEIDA, E. D. Classificação ordinal com opção de rejeição. 2010, 58 f. Disserta-


ção (Mestrado) – Engenharia Informática e Computação, Faculdade de Engenharia,
Universidade do Porto, 2010. Disponível em: http://www.inescporto.pt/~jsc/stu-
dents/2010EzildaAlmeida/2010relatorioEzildaAlmeida.pdf. Acesso em: 3 nov. 2020.

BIGDATACORP. A Importância de uma Boa Visualização de Dados. BIGDATA-


CORP. 2019. Disponível em: https://bigdatacorp.com.br/a-importancia-de-uma-
-boa-visualizacao-de-dados/. Acesso em: 3 nov. 2020.

BORGES, R.; DA SILVA, R. A. A.; CASTRO, S. S. de. Utilização da classificação


por distância euclidiana no mapeamento dos focos de arenização no setor sul da
alta bacia do Rio Araguaia. In: ANAIS XIII SIMPÓSIO BRASILEIRO DE SEN-
SORIAMENTO REMOTO. Anais [...] Florianópolis: INPE, 2007. Disponível em:
http://marte.sid.inpe.br/col/dpi.inpe.br/sbsr@80/2006/11.14.12.59/doc/3777-3784.
pdf. Acesso em: 3 nov. 2020.

BRESSERT, E. SciPy and NumPy: an overview for developers. O’Reilly Media, 2012

BROWNLEE, J. Naive Bayes Classifier From Scratch in Python. Machine Lear-


ning Mastery, 2019. Disponível em: https://machinelearningmastery.com/nai-
ve-bayes-classifier-scratch-python/#:~:text=Naive%20Bayes%20is%20a%20classifi-
cation,to%20make%20their%20calculations%20tractable. Acesso em: 20 set. 2020.

CARVALHO, A. Mineração de Dados em Biologia Molecular. Apostila. Instituto


de Ciências Matemáticas e de Computação (ICMC). São Paulo: Universidade de
São Paulo, 2012. Disponível em: https://edisciplinas.usp.br/pluginfile.php/54785/
mod_resource/content/1/aula09-met-distancia.pdf. Acesso em: 25 ago. 2020.

DUDA, R.; HART, P. Bayes Decision Theory. [S.l.]: John Wiley & Sons, 1973. p. 10-43.

FERRERO, C. A.; MALETZKE, A. G.; ZALEWSKI, W. Modelos de Regressão


para a Previsão de Séries Temporais por meio do Algoritmo kNN-TSP. In:
ENCONTRO NACIONAL DE INTELIGÊNCIA ARTIFICIAL E COMPUTA-
CIONAL (ENIAC). Anais [...] ENIAC, v. 12, p. 1-8, 2009. Disponível em: https://

123
www.researchgate.net/profile/Andre_Maletzke/publication/272086195_Mode-
los_de_Regressao_para_a_Previsao_de_Series_Temporais_por_meio_do_Algo-
ritmo_kNN-TSP/links/54da02e70cf25013d043a635/Modelos-de-Regressao-para-
-a-Previsao-de-Series-Temporais-por-meio-do-Algoritmo-kNN-TSP.pdf. Acesso
em: 3 nov. 2020.

FISHER, R. A. The use of multiple measurements in taxonomic problems. In: An-


nals of Eugenics, v. 7, n. 2, p. 179-188, 1936. Disponível em: https://onlinelibrary.
wiley.com/doi/epdf/10.1111/j.1469-1809.1936.tb02137.x. Acesso em: 3 nov. 2020.

HARRISON, M. Machine learning – Guia de Referência Rápida: Trabalhando


com dados estruturados em Python. O’Reilly, Novatec, 2020.

KOERICH, A. Aprendizagem de Máquina. Apostila. Apresentação. Programa


de Pós-Graduação em Informática, Pontifícia Universidade Católica do Paraná
(PUCPR), 2012. Disponível em: http://www.ppgia.pucpr.br/~alekoe/AM/2012/
0-Apresentacao-AM-2012.pdf. Acesso em: 20 set. 2020.

LUTZ, M. Learning python: Powerful object-oriented programming. O’Reilly


Media, Inc., 2013.

MALDANER, L. Desenvolvimento de software acadêmico para engenharia


química utilizando linguagem Python: separador de mistura binária. 53f, 2019.
Monografia (Engenharia Química) – Universidade Tecnológica Federal do Para-
ná, Francisco Beltrão, 2019. Disponível em: http://repositorio.roca.utfpr.edu.br/
jspui/bitstream/1/16515/1/FB_COENQ_2019_2_06.pdf Acesso em: 3 nov. 2020.

MCCALLUM, A.; NIGAM, K. A comparison of event models for naïve bayes


text classification. In: AAAI. Proceedings of Workshop on Learning for Text Ca-
tegorization. Proceedings […] AAAI-98, v. 752, p. 41-48, Wisconsin, 1998.

MICROSOFT. Tarefas de aprendizado de máquina no ML.NET. Microsoft, 2019.


Disponível em: https://docs.microsoft.com/pt-br/dotnet/machine-learning/re-
sources/tasks. Acesso em: 20 set. 2020.

NASCIMENTO, L. B. F. Desenvolvimento de solução de inteligência artificial


aplicada a implementação de smart buildings com base no framework SmartL-
VGrid. Monografia (Engenharia Elétrica) – Escola Superior de Tecnologia da
Universidade do Estado do Amazonas, Manaus, 2019. Disponível em: https://
seer.ufrgs.br/rita/article/view/RITA-VOL23-NR1-69. Acesso em: 3 nov. 2020.

OLIVEIRA, M.; MUNIZ, F.; FARRAPO, R. Células de Estudo de Programação


nos Cursos de Engenharia da Universidade Federal do Ceará no Campus Sobral
com Aplicação de Metodologia de Ensino Cooperativo. In: Anais da VIII Esco-
la Regional de Computação do Ceará, Maranhão e Piauí. Anais [...] SBC, 2020.
p. 284-291. Disponível em: https://sol.sbc.org.br/index.php/ercemapi/article/
view/11496/11359. Acesso em: 3 nov. 2020.

124
OLIVEIRA, L. M. de. Classificação de dados sensoriais de cafés especiais com
resposta multiclasse via Algoritmo Boosting e Bagging. Dissertação (Mestrado
em Estatística e Experimentação Agropecuária) ¬– Pós-graduação em Estatística
e Experimentação Agropecuária, Universidade Federal de Lavras, Lavras, 2016.
Disponível em: http://www.sbicafe.ufv.br/bitstream/handle/123456789/8506/
Dissertacao_Lilian%20Maria%20de%20Oliveira.pdf?sequence=1&isAllowed=y.
Acesso em: 3 nov. 2020.

PEDREGOSA, F. et al. Scikit-learn: Machine learning in Python. Journal of Machi-


ne Learning Research, v. 12, p. 2825-2830, 2011. Disponível em: https://www.jmlr.
org/papers/volume12/pedregosa11a/pedregosa11a.pdf. Acesso em: 3 nov. 2020.

PRINA, B. Z.; TRENTIN, R. GMC: Geração de Matriz de Confusão a partir de uma


classificação digital de imagem do ArcGIS®. In: SIMPÓSIO BRASILEIRO DE SEN-
SORIAMENTO REMOTO Anais [...] João Pessoa: INPE, 2015, v. 17, p. 131-139. Dis-
ponível em: http://www.dsr.inpe.br/sbsr2015/files/p0031.pdf. Acesso em: 3 nov. 2020.

RODRIGUES, V. Métricas de Avaliação: acurácia, precisão, recall… quais as


diferenças? Medium, 2019. Disponível em: https://medium.com/@vitorborba-
rodrigues/métricas-de-avaliação-acurácia-precisão-recall-quais-as-diferenças-c-
8f05e0a513c. Acesso em: 20 set. 2020.

ROSENBLATT, F. The perceptron, a perceiving and recognizing automaton.


Project Para. Cornell Aeronautical Laboratory, 1957. Disponível em: https://blogs.
umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf. Acesso em: 3 nov. 2020.

SCHLICHTING, L. Atividades de laboratório de comunicações sem fio com


launchpad CC1350. Monografia. Centro Tecnológico, Engenharia Eletrônica,
Universidade Federal de Santa Catarina, Florianópolis, 2020. Disponível em:
https://repositorio.ufsc.br/bitstream/handle/123456789/204168/TCC_Lucas.pdf?-
sequence=1&isAllowed=y. Acesso em: 3 nov. 2020.

SEIDEL, E. J. et al. Comparação entre o método Ward e o método K-médias no agru-


pamento de produtores de leite. Ciência e Natura, UFSM, v. 30, n. 1, p. 7-15, 2008.

SILVA, R. M. Da Navalha de Occam a um método de categorização de textos


simples, eficiente e robusto. Tese (Doutorado em Engenharia Elétrica) – Fa-
culdade de Engenharia Elétrica e de Computação, Universidade Estadual de
Campinas, Campinas, 2017. Disponível em: http://www.dt.fee.unicamp.br/~re-
natoms/publications/tese_doutorado_renatosilva.pdf. Acesso em: 3 nov. 2020.

SILVERMAN, R. Git – Guia prático. São Paulo: Novatec, 2013.

SOLDI, S. Análise de Agrupamentos. Notas de Aula. Apostilas dos Profs. Jair


Mendes Marques e Anselmo Chaves Neto. Universidade Federal do Paraná,
2013. Disponível em: https://docs.ufpr.br/~soniaisoldi/ce076/9ANALISEAGRU-
PAMENTOS.pdf. Acesso em: 20 set. 2020.

125
TAN, P.-N.; STEINBACH, M.; KUMAR, V. Introduction to data mining. Pear-
son Education India, 2016.

TELES, Á. R.; WEBBER, C. G. Detecção de haters nas redes sociais. Ciência da


Computação, Universidade de Caxias do Sul, Caxias do Sul, 2019. Disponível em:
https://repositorio.ucs.br/xmlui/bitstream/handle/11338/6356/TCC%20%c3%81lis-
son%20Rodrigues%20Teles.pdf?sequence=1&isAllowed=y. Acesso em: 3 nov. 2020.

VANDERPLAS, J. Python data science handbook: Essential tools for working


with data. O’Reilly Media, 2016.

VAPNIK, V. N. The Nature of Statistical Learning Theory. New York: Springer-


-Verlag, 1995.

VAZ, A. L. Normalizar ou padronizar as variáveis? Medium, 2019. Disponível


em: https://medium.com/data-hackers/normalizar-ou-padronizar-as-variáveis-
-3b619876ccc9. Acesso em: 3 nov. 2020.

VON LOCHTER, J. et al. Máquinas de classificação para detectar polaridade de


mensagens de texto em redes sociais. Dissertação (Mestre em Ciência da Com-
putação) – Programa de Pós-Graduação em Ciência da Computação, Centro de
Ciências em Gestão e Tecnologia, Universidade Federal de São Carlos, São Carlos,
2015. Disponível em: https://repositorio.ufscar.br/bitstream/handle/ufscar/7903/
LOCHTER_Johannes_2015.pdf?sequence=1&isAllowed=y. Acesso em: 5 nov. 2020.

VOOO. 6 passos fáceis para aprender o algoritmo Naive Bayes. Vooo, 2016.
Disponível em: https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-
-algoritmo-naive-bayes-com-o-codigo-em-python. Acesso em: 20 set. 2020.

WALKER, S. H.; DUNCAN, D. B. Estimation of the probability of an event as a func-


tion of several independent variables. Biometrika, Oxford University Press, v. 54, n.
1-2, p. 167-179, 1967. Disponível em: http://www.medicine.mcgill.ca/epidemiology/
hanley/bios601/CandH-ch0102/WalkerDuncan1967.pdf. Acesso em: 3 nov. 2020.

ZÓ, J. G. Clickbait ou Não? Usando Naive Bayes Para Classificar Títulos do


Buzzfeed. Medium, 2019. Disponível em: https://medium.com/data-hackers/
clickbait-ou-não-usando-naive-bayes-para-classificar-títulos-do-buzzfeed-ad-
10108c20d6. Acesso em: 21 set. 2020.

126
UNIDADE 3 —

REGRESSÃO

OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:

• introduzir conceitos fundamentais sobre a regressão;


• apresentar ferramentas complementares para aplicação de algoritmos;
• exemplificar onde os métodos de regressão podem ser aplicados e
explanar conceitos matemáticos para a implementação das regressões;
• implementar regressão linear com base matemática e utilizando as
bibliotecas do Python;
• compreender conceitos matemáticos sobre a regressão logística;
• implementar uma regressão logística com base matemática e utilizando
as bibliotecas do Python;
• compreender os conceitos fundamentais e matemáticos sobre redes
neurais artificiais;
• implementar uma rede neural artificial com base matemática e utilizando
as bibliotecas do Python.

PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.

TÓPICO 1 – INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO

TÓPICO 2 – REGRESSÃO LINEAR

TÓPICO 3 – TÉCNICAS AVANÇADAS DE REGRESSÃO

CHAMADA

Preparado para ampliar seus conhecimentos? Respire e vamos


em frente! Procure um ambiente que facilite a concentração, assim absorverá
melhor as informações.

127
128
TÓPICO 1 —
UNIDADE 3

INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO

1 INTRODUÇÃO
Já pensou como seria o seu dia se pudesse prever se vai chover? Ou qual a
temperatura exata? Ou, até mesmo, ir além e poder prever quais ações irão subir
e quais irão cair no mercado da Bolsa de Valores? Essas informações do nosso
cotidiano podem ser obtidas por meio de algoritmos de regressão.

A regressão é uma tarefa supervisionada de Machine learning que pode


ser implementada por meio de diversos algoritmos. É semelhante à classificação
em relação ao seu comportamento preditivo, embora os valores preditos por essa
tarefa sejam do tipo contínuo, isto é, para prever um valor numérico, deve-se
utilizar uma tarefa de regressão.

A regressão é uma técnica de modelagem preditiva em que a variável de


destino a ser estimada é contínua. Exemplos de aplicações de regressão incluem a
previsão de um índice do mercado de ações, usando outros indicadores econômicos;
a previsão da quantidade de precipitação em uma região, com base nas características
do jato; a projeção das vendas totais de uma empresa, com base no valor gasto com
publicidade; e a estimativa de idade de um fóssil, de acordo com a quantidade de
carbono deixada no material orgânico (TAN; STEINBACH; KUMAR 2016).

2 VISÃO GERAL DA REGRESSÃO


Como uma tarefa de aprendizado supervisionado, similar à classificação,
a regressão consiste em realizar aprendizado a partir de dados previamente
conhecimentos, ditos históricos. A principal diferença entre os dois problemas
está no tipo de saída e em sua avaliação: na regressão, em vez de se estimar a
acurácia, estima-se a distância ou o erro entre a saída do estimador (modelo) e a
saída desejada (ESCOVEDO; KOSHIYAMA, 2020).

Segundo Geron (2019), um exemplo típico é prever um valor numérico alvo,


como o preço de um carro, dado um conjunto de características (quilometragem,
idade, marca etc.) conhecido como preditores. Esse tipo de tarefa é denominado
regressão, pois, para obter o melhor modelo, é preciso dar a ele muitos exemplos
de carros, incluindo seus preditores e suas etiquetas (ou seja, seus preços).

É possível perceber na Figura 1 que, ao inserir uma nova instância,


o algoritmo terá o desafio de predizer qual o valor do target, com base em um
histórico de dados, em um determinado ponto.
129
UNIDADE 3 — REGRESSÃO

FIGURA 1 – REGRESSÃO DO PREÇO DO CARRO

FONTE: Adaptada de Geron (2019, p. 9)

Dito isso, vamos compreender como um conjunto de dados é descrito


como fim de representar uma regressão.

A Figura 2 mostra a equação que representa um conjunto de dados D,


composto por dados de entrada (input) xi, associados a um conjunto de dados de
saída (target) yi, em que i representa cada registro e N o número total de objetos.

FIGURA 2 – DESCRIÇÃO DOS DADOS PARA A REGRESSÃO

FONTE: Adaptada de Geron (2019)

A partir dos dados existentes, a regressão é representada por uma função


f(x) que tem como objetivo prever o target y. Essa função é como uma relação
funcional entre x e y, denotado como y = f(x). No contexto da regressão, f(x)
pode ser considerada a regressão em si – uma função f, que recebe x e o valor
aproximado de y.

Como exemplo simples da matemática, para compreendermos essa relação,


considere x = [1,2,3,4,5,6,7,8,9,10] e y = [2,3,4,5,6,7,8,9,10,11]. A função que estima y
em função de x será demonstrada pelos dados do Quadro 1 e da Figura 3.

QUADRO 1 – EXIBINDO OS DADOS DE X E Y

1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 x = np.array([1,2,3,4,5,6,7,8,9,10])
5 y = np.array([2,3,4,5,6,7,8,9,10,11])

130
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO

6
7 plt.plot(x,y)
8 plt.show()
FONTE: O autor

FIGURA 3 – EXIBINDO OS DADOS DE Y EM FUNÇÃO DE X

FONTE: O autor

Ao olhar os dados de x e y, provavelmente, percebe-se a relação deles, que


pode ser mapeada por f(x) = x + 1, uma vez que os valores de y são os valores de
x acrescidos de 1.

QUADRO 2 – EXIBINDO OS DADOS DE X E F(X)


1 def f(x):
2 return x+1
3 plt.plot(x,f(x))
4 plt.show()
FONTE: O autor

Com f(x) em mãos, essa função torna-se um estimador, ou seja, um


preditor baseado em regressão, que permite inferir novas amostras. Agora, se
os valores fossem x = [27,38,31.1,45.49,67.5,70.9] e y = [95.8,106.8, 129.56, 175.75,
256.9, 302.9] ou se, em x, cada objeto fosse composto por mais de um objeto, isso
tornaria ainda mais complexo.

Nesse momento, é importante compreender que o objetivo principal é,


com base em conjunto de dados X e um target Y, obter uma função f(x), que será
o preditor.

131
UNIDADE 3 — REGRESSÃO

3 MÉTRICAS
As métricas de avaliação têm como objetivo verificar a eficácia do modelo,
comparando com os dados originais. Nos modelos de classificação, os valores são
discretos, por isso as métricas são objetivas, ou seja, conseguimos mensurar se o
modelo acertou ou não a predição para uma determinada amostra.

Na regressão, os valores são contínuos; isso significa que, se para


determinado valor de y = 3.72, o predidor f(x) = 3.77, não se considerar que ele
não funcionou, mas, sim, que errou. Esse é o termo utilizado para as métricas de
avaliação de regressão: erro ou taxa de erro.

3.1 ERRO QUADRÁTICO MÉDIO


O erro quadrático médio (MSE, do inglês mean squared error) é uma das funções
mais comuns, usada em problemas de regressão linear, ou seja, quando se sabe que
a relação entre os dados a serem preditos e os dados de entrada é estritamente linear.
Essa função mede a diferença entre os resultados obtidos e o resultado real, eleva
cada diferença ao quadrado e, depois, calcula a média (CECCON, 2019).

FIGURA 4 – ERRO QUADRÁTICO MÉDIO

FONTE: Adaptada de <https://www.scielo.br/img/revistas/qn/v30n2/19x03.gif>.


Acesso em: 5 nov. 2020.

A fórmula do erro médio quadrático contém o valor yi, que representa


os valores reais do target, enquanto ŷi equivale aos valores preditos utilizando
determinada f(x). A fórmula representa uma iteração, na qual cada elemento de yi
irá subtrair um elemento de ŷi, e, posteriormente, será elevado ao quadrado, para
que não haja valores negativos. A seguir, vamos colocar em prática essa métrica.

QUADRO 3 – IMPLEMENTANDO O MSE


1 def mse(y, y_predito):
2 erro = 0.0
3 for i in range(len(actual)):
4 diferenca = y[i] – y_predito[i]
5 erro += (diferenca ** 2)
6 mse = erro / float(len(y))
7 return mse
8
9 y_true = [3, -0.5, 2, 7]

132
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO

10 y_pred = [2.5, 0.0, 2, 8]


11
12 print(mse(y_true, y_pred))
FONTE: O autor

Agora que já estamos acostumados a utilizar as bibliotecas do Python,


vamos conferir a implementação do método utilizando o scikit-learn.

QUADRO 4 – IMPLEMENTANDO O MSE COM SCIKIT-LEARN


1 from sklearn.metrics import mean_squared_error
2 y_true = [3, -0.5, 2, 7]
3 y_pred = [2.5, 0.0, 2, 8]
4 print(mean_squared_error(y_true, y_pred))
FONTE: O autor

Complementarmente ao erro quadrático médio, existe a raiz do erro


quadrático médio (RMSE, do inglês Root Mean Squared Error), cuja fórmula é dada
pela Figura 5.

FIGURA 5 – RAIZ DO ERRO QUADRÁTICO MÉDIO

FONTE: Adaptada de <https://www.scielo.br/img/revistas/qn/v30n2/19x03.gif>.


Acesso em: 5 nov. 2020.

Como mostra a fórmula, a única alteração para o MSE é a raiz quadrada,


por isso, devemos alterar a raiz do retorno na função implementada no Quadro
3. Já a função implementada pelo scikit-learn segue a mesma lógica e pode ser
chamada da seguinte maneira:

QUADRO 5 – IMPLEMENTANDO A RMSE COM SCIKIT-LEARN

1 from sklearn.metrics import mean_squared_error


2 from math import sqrt
3 y_true = [3, -0.5, 2, 7]
4 y_pred = [2.5, 0.0, 2, 8]
5 rmse = sqrt(mean_squared_error(y_true, y_pred))
FONTE: O autor

133
UNIDADE 3 — REGRESSÃO

3.2 ERRO ABSOLUTO MÉDIO


Ao fazer o cálculo da RMSE e do MSE, consideramos a média dos erros
entre preditos e originais, afinal é esse o cerne das duas métricas. O erro absoluto
médio (MAE, do inglês median absolute error) considera os valores absolutos, ou
seja, o desvio médio entre o observado e o predito.

Segundo Silva (2017), o MAE é a média do valor absoluto da diferença


entre o valor predito e o valor real. Nessa métrica, os erros individuais são
ponderados igualmente pela média.

FIGURA 6 – MEDIAN ABSOLUTE ERROR (MAE)

FONTE: <https://miro.medium.com/max/335/1*Z6lLZBRCwsMZWVvrY7-HYQ.png>.
Acesso em: 5 nov. 2020.


Vamos conferir como scikit-learn implementa e utilizar o MAE.

QUADRO 6 – IMPLEMENTANDO O MAE COM SCIKIT-LEARN

1 from sklearn.metrics import median_absolute_error


2 y_true = [3, -0.5, 2, 7]
3 y_pred = [2.5, 0.0, 2, 8]
4 median_absolute_error(y_true, y_pred)
FONTE: O autor

3.3 OVERFITTING E UNDERFITTING


No estudo sobre Machine learning, bem como na avaliação dos métodos
de classificação, aprendemos que uma das estratégias para avaliar o desempenho
de um método é dividir a base de dados em treino e teste. Entretanto, pode
acontecer um desbalanceamento dos dados na base, impactando em overfitting
ou underfitting.

134
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO

3.4 VALIDAÇÃO CRUZADA


Para complementar o estudo sobre a divisão do dataset em treino e teste,
existe uma técnica conhecida como validação cruzada. A validação cruzada tem
como objetivo avaliar o modelo de melhor maneira do que simplesmente a divisão
dos dados em treino e teste. Com sua aplicação, é possível criar um modelo de
validação mais genérico, permitindo obter mais exatidão sobre a capacidade de
generalização de cada método.

FIGURA 7 – VALIDAÇÃO CRUZADA

FONTE: <https://minerandodados.com.br/wp-content/uploads/2020/02/image.png >.


Acesso em: 5 nov. 2020.

Segundo Santana (2020), com os dados já separados em porções de treino


e teste, eles são embaralhados e divididos em k números de grupos; assim, a cada
iteração, temos um conjunto diferente de dados para treino e teste. Esse processo
é repetido a cada grupo. O resultado do nosso modelo será a média dos valores
de cada um desses grupos.

FIGURA 8 – K-FOLD DA VALIDAÇÃO CRUZADA

FONTE: <https://minerandodados.com.br/wp-content/uploads/2020/02/image-1.png>.
Acesso em: 5 nov. 2020.

135
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:

• A regressão é a atividade de predizer dados contínuos com base em um


histórico, cuja tarefa está presente em diversos cenários do cotidiano.
• Em uma regressão, existe um conjunto de dados D, composto por dados de
entrada (input) xi, associados a um conjunto de dados de saída (target) yi, em
que i representa cada registro e n o número total de objetos.
• A partir dos dados existentes, a regressão é representada por uma função f(x)
n que tem como objetivo prever o target y. Assim, com base em conjunto de
dados x e um target y, ao obter uma função f(x), esta será o preditor.
• O conceito de validação cruzada para otimizar os métodos.
• Os erros são a maneira de mensurar o funcionamento de um método de
regressão.
• A Figura 9 mostra um resumo dos principais erros utilizados em tarefas de
regressão.

FIGURA 9 – PRINCIPAIS ERROS UTILIZADOS EM TAREFAS DE REGRESSÃO

FONTE: Adaptada de <https://bit.ly/38D9MTF>. Acesso em: 5 nov. 2020.

136
AUTOATIVIDADE

1 Regressão é uma tarefa que permite gerar modelos preditivos para valores
contínuos. Tendo como objetivo encontrar a relação entre um conjunto de
atributos de entrada (variáveis preditoras) e um atributo-meta contínuo.
Assinale a alternativa CORRETA:
a) ( ) É um método supervisionado.
b) ( ) É um método não supervisionado.
c) ( ) É um método desupervisionado.
d) ( ) É um método visionado.

2 Os sistemas de Machine learning podem ajudar a descobrir padrões, realizar


determinadas tarefas por meio da generalização de casos e da utilização de
dados. Os métodos de regressão, é possível rotular automaticamente novos
registros, com base em histórico de dados. Sobre os tipos de dados em que
as regressões atuam, assinale a alternativa CORRETA:
a) ( ) Dados contínuos.
b) ( ) Dados discretos.
c) ( ) Dados binários.
d) ( ) Dados multiclasse.

3 Analise o texto a seguir:

A regressão é um método estatístico para estimar uma variável (y) em função


dos valores de outra variável (x). A regressão é dita linear quando a função
ajustada é uma função linear, ou seja, uma função de 1º grau.

FONTE: NERY, C. V. M.; OLIVEIRA, D. B.; ABREU, L. H. G. Estudo comparativo entre os índices
NDVI obtidos a partir dos sensores Landsat 5-TM e Resourcesat-liss III. Caminhos de Geogra-
fia, v. 14, n. 46, 2013.

Assinale a alternativa CORRETA que representa o significado de ŷ:


a) ( ) O valor predito.
b) ( ) O rótulo original.
c) ( ) Os valores de entrada.
d) ( ) O erro.

4 As métricas de avaliação tem como objetivo verificar a eficácia do modelo,


comparando com os dados originais. Assinale a alternativa CORRETA que
contenha um tipo de erro:
a) ( ) MSE.
b) ( ) Pandas.
c) ( ) Matlab.
d) ( ) PIP.

137
5 Python é uma linguagem básica e simples, utilizada em diversos cenários
da computação, com destaque para projetos de Machine learning. Sobre o
Python, assinale a alternativa CORRETA que indica o elemento utilizado
para importar as métricas de avaliação:

a) ( ) sklearn.metrics.
b) ( ) Scikit-learn.
c) ( ) Pandas.
d) ( ) Numpy.

138
TÓPICO 2 —
UNIDADE 3

REGRESSÃO LINEAR

1 INTRODUÇÃO
A regressão é uma tarefa de Machine learning que permite gerar modelos
preditivos para valores contínuos. Este livro tem como objetivo conhecer os
principais modelos de regressão para chegar aos menores erros possíveis.

FIGURA 10 – EXEMPLO DE PREDIÇÃO

FONTE: <https://www.kdnuggets.com/wp-content/uploads/prediction-error.png>.
Acesso em: 5 nov. 2020.

De modo geral, o fluxo de implementação e avaliação de uma regressão


consiste em treinar um modelo com um conjunto de dados, já dividido em treino
e teste, e comparar os resultados da predição com os resultados reais. A distância
entre os valores preditos e os valores reais é denominada de erro, sendo que, para
isso, são utilizadas as métricas já estudadas.

Para compreender melhor o seu funcionamento, neste tópico, estudaremos


a fundo os métodos de regressão, iniciando pela regressão linear.

139
UNIDADE 3 — REGRESSÃO

2 UTILIZANDO REGRESSÃO
O método de regressão linear é uma tentativa de modelar uma equação
matemática linear que descreva o relacionamento entre duas variáveis. Em
situações que envolvem duas variáveis, existem várias maneiras de aplicar essas
equações de regressão, que, devido a sua natureza, irá modelar apenas problemas
lineares (RODRIGUES; MEDEIROS; GOMES, 2013).

Segundo Souza (2019), a análise de regressão, em geral, é feita sob um


referencial teórico que justifique a adoção de alguma relação matemática de
causalidade. A regressão linear simples é basicamente uma função de primeiro
grau, cujo objetivo é gerar um modelo de Machine learning a partir de um conjunto
de dados, a fim de entender o padrão dentro dele para que possa ser descrito por
uma função de primeiro grau com uma variável.

FIGURA 11 – EQUAÇÃO DA RETA

FONTE: <https://miro.medium.com/max/700/0*oHDc6Fuie1d19a4d.jpg>.
Acesso em: 5 nov. 2020.

Para compreender melhor o conceito de regressão linear, descreveremos


os conceitos de variável dependente e independente. Lembrando que variável,
como o próprio nome indica, é algo que muda de valor, que varia, é “tudo que
pode assumir diferentes valores numéricos” (BUNCHAFT; KELLNER, 1998, p.
16). Portanto, as variáveis correspondem a um conjunto de dados comuns sobre
diferentes respondentes. Por exemplo, para um questionário que tenta coletar
dados sobre a percepção do entrevistado, geralmente haverá uma parte dos
dados do entrevistado (ou informações pessoais do entrevistado), como idade,
sexo, renda média, nível de escolaridade etc. Cada informação corresponde a
uma variável de pesquisa (PRIM; PEREIRA, 2020).

Assim como em outros problemas, em regressão, as variáveis também


estão presentes. A formulação mais simples de uma função de regressão é
relacionada em apenas duas variáveis, chamadas de variável independente (VI) e
variável dependente (VD).

140
TÓPICO 2 — REGRESSÃO LINEAR

Enquanto a VI é controlada pelo pesquisador, seja por uma manipulação


intencional ou seleção e mensuração dos valores a serem utilizados, as VDs são aquelas
que mudam de acordo com o manuseio das VI (BUNCHAFT; KELLNER, 1998).

A análise de regressão é usada para encontrar equações que se ajustem


aos dados. Assim que se obtém a equação de regressão, é possível usar o modelo
para fazer previsões. Um tipo de análise de regressão é a análise linear. Quando
um coeficiente de correlação mostra que os dados provavelmente são capazes
de prever resultados futuros e um gráfico de dispersão dos dados parece formar
uma linha reta, pode-se usar a regressão linear simples para encontrar uma
função preditiva.

A equação da reta é y = mx + b. A função de regressão linear é representada


por:

f(x) = a + bx (Eq. 1)

A equação da regressão linear também pode ser representada utilizando


ŷ, que representa os valores preditos:

ŷ = a + bx (Eq. 2)

A representação da função de uma regressão linear também pode ser


denotada utilizando as letras gregas alpha (α) e beta (β):

ŷ = α + βx (Eq. 3)

Segundo Glen (2013), a regressão linear é uma forma de modelar a relação


entre duas variáveis. Você também pode reconhecer a equação como a fórmula
da inclinação. A equação tem a forma y = a + bx, na qual y é a variável dependente
(essa é a variável que vai no eixo y), x é a variável independente (ou seja, é plotada
no eixo x), b é a inclinação da linha e a é a intercepção de y.

Agora que compreendemos a fórmula da equação de uma regressão linear,


estudaremos como obter as variáveis principais que dão origem à fórmula. Uma
vez que x pertence ao conjunto de dados, temos que calcular os valores de a e b.
Para o cálculo dessas variáveis, considere a fórmula apresentada na Figura 12.

FIGURA 12 – EQUAÇÃO DA RETA

FONTE: <https://cutt.ly/XgMw152>. Acesso em: 5 nov. 2020.

141
UNIDADE 3 — REGRESSÃO

Conhecendo a equação para obter f(x), bem como para chegar nos valores
de a e b, vamos a um exemplo prático para descobrirmos como calcular cada um
desses valores. Considere a idade como x e o nível de glicose como y.

TABELA 1 – EXEMPLO DE APLICAÇÃO

Idade (x) Nível de glicose (y)


43 99
21 65
25 79
42 75
57 87
59 81
FONTE: Adaptada de Glen (2013)

Ao estudar a fórmula que dá origem aos valores de a e b, é possível


perceber que existe um conjunto de valores que se repete, sendo eles (x*y), x² e y².
Complementarmente, a fórmula também considera os respectivos somatórios;
assim, uma dica é calcular esses valores previamente e depois realizar o cálculo
da fórmula de regressão.

TABELA 2 – REALIZANDO CÁLCULOS PRÉVIOS

Nível de
Idade (x) (x · y) x² y²
glicose (y)
43 99 4257 1849 9801
21 65 1365 441 4225
25 79 1975 625 6241
42 75 3150 1764 5625
57 87 4959 3249 7569
59 81 4779 3481 6561
247 486 20485 11409 40022
FONTE: Adaptada de Glen (2013)

Uma vez aplicados os valores parciais obtidos na equação para determinar


a variável a, temos:

142
TÓPICO 2 — REGRESSÃO LINEAR

FIGURA 13 – CALCULANDO VALOR DE A

FONTE: O autor

Para o cálculo da variável b, repetiremos o mesmo processo:

FIGURA 14 – CALCULANDO VALOR DE B

FONTE: O autor

Sabendo os valores de a = 65,15 e de b = 0,39, é possível aplicá-los na


fórmula da regressão linear, isto é, f(x) = a + bx. Ao realizarmos a substituição, a
regressão linear para os dados fornecidos será f(x) = 65,5 + 0,39x.

Também é possível obter ŷ, que representa a predição dos dados utilizando


a função encontrada. Em seguida, plotando os dados de y e a função f(x) = 65,5 +
0,39x em forma de uma reta (Figura 15).

TABELA 3 – ESTIMANDO VALORES COM REGRESSÃO LINEAR

x y ŷ
43 99 82
21 65 74
25 79 75
42 75 82
57 87 88
59 81 89
FONTE: O autor

143
UNIDADE 3 — REGRESSÃO

FIGURA 15 – EXIBINDO OS DADOS E A RETA DE REGRESSÃO

FONTE: O autor

E
IMPORTANT

A reta estimada claramente não coincidirá com todos os nossos dados. As


medidas de distância entre os dados observados e a reta estimada são chamadas de
resíduos. Os resíduos são utilizados para avaliar o ajuste do modelo e a qualidade das
estimativas feitas a partir dele.

Para otimizar o funcionamento do método, é necessário fazer o ajuste da


função, de modo que ela aprenda com o erro e se aproxime do valor real. Na
otimização de uma reta de regressão, entre outros métodos, é utilizado o método
dos mínimos quadrados.

FIGURA 16 – DISTÂNCIA DE UM PONTO (XI, YI) À RETA Y = A + BX

FONTE: Souza (2003, p. 1)

144
TÓPICO 2 — REGRESSÃO LINEAR

Para obter o erro entre o valor previsto e o valor real, a distância entre
esses pontos é | yi −a−bxi | e a soma dos quadrados dessas distâncias pode ser
determinado pela fórmula apresentada na Figura 17.

FIGURA 17 – SOMA DOS QUADRADOS DA DISTÂNCIA

FONTE: Souza (2003, p. 2)

Encontrar o ponto mínimo de uma função implica diminuir o erro. Os


candidatos a ponto mínimo da função são aqueles para os quais são nulas as
derivadas parciais de q em relação a cada um de seus parâmetros, isto é:

FIGURA 18 – MÉTODO DOS MÍNIMOS QUADRADOS

FONTE: Souza (2003, p. 3)

Assim, obtemos o sistema de equações, denominado equações normais


do problema, cujas incógnitas são os parâmetros a e b da equação y = a + bx:

145
UNIDADE 3 — REGRESSÃO

FIGURA 19 – MÉTODO DOS MÍNIMOS QUADRADOS

FONTE: Souza (2003, p. 2)

Para compreender melhor, aplicamos a função de custo, visto que o objetivo


é diminuir o erro entre os valores originais e os valores preditos. Sabendo que a
regressão linear é um modelo que estima uma variável dependente (y) com base
em valores independentes (x) e que sua equação é dada por ŷ = a + bx, vamos
entender como é possível diminuir o erro entre o valor predito (ŷ) e o valor real (y).

Para compreender a notação da função de custo, consideramos a seguinte


representação para uma função linear, a qual pode ser considerada com uma ou
múltiplas variáveis de entrada (x):

ŷ = θ₀ + θ1*x (Eq. 4)

Ao generalizar a função, tendo em vista a possibilidade de vários valores


de entrada (x), ela pode ser representada da seguinte maneira:

ŷ = θ₀ + θ₁x₁ + θ₂x₂ + ... + θnxn (Eq. 5)

Segundo Meier e Júnior (2020), na representação genérica de uma


regressão linear, cada um dos elementos tem o seguinte significado:

• ŷ: valor previsto;
• n: número de características;
• xi: é o valor da i-ésima característica;
• θj: são os parâmetros a serem determinados.

Para suportar a futura implementação em linguagem de programação,


utilizaremos a notação vetorial para a resolução do problema da regressão linear,
bem como a função de custo:

ŷ = hθ(x) = θTx (Eq. 6)

Segundo Meier e Júnior (2020), na representação vetorial da regressão,


cada elemento tem o seguinte significado:

• θ: vetor com os parâmetros do modelo;


• θT: vetor transposto de θ;
• x: vetor com todas as características do conjunto de dados;

146
TÓPICO 2 — REGRESSÃO LINEAR

• θT·x: produto escalar entre θT e x;


• hθ: função hipótese que usa o modelo de parâmetros θ.

FIGURA 20 – EXEMPLOS DA FUNÇÃO HIPÓTESE

θ₀ = 1.5 θ₀ = 0 θ₀ = 1
θ₁ = 0 θ₁ = 0.5 θ₁ = 0.5
FONTE: <https://miro.medium.com/max/700/1*1tYoJysJpVbjKUM7ix46QQ.png>.
Acesso em: 5 nov. 2020.

Até aqui, representamos uma regressão com notação e abordagens


diferentes. Para uma melhor compreensão do comportamento entre o ajuste e a
reta original, vamos analisar o gráfico de dispersão.

FIGURA 21 – GRÁFICO DE DISPERSÃO ENTRE PONTOS E RETA

FONTE: Adaptada de NG (2014)

Para otimizar a função de regressão, diminuindo o seu erro e custo,


precisamos conhecer a função de custo. J(θ) é chamada de função de erro (do
inglês loss function; pode ser traduzida também como função de custo ou função
objetivo) e deve ser otimizada (minimizada) por meio de um determinado
procedimento (algébrico ou iterativo), de forma a melhor se ajustar à amostra de
dados disponível para treinamento (SILVA, 2017).

147
UNIDADE 3 — REGRESSÃO

O custo é denotado por J(θ) e sua fórmula de cálculo é apresentada na


Figura 22. Um método razoável para escolher ou aprender os parâmetros θ parece
ser h(x) próximo de y, pelo menos para os exemplos de treinamento trabalhados
anteriormente. Para formalizar isso, definimos uma função que mede, para cada
valor de θ, quão próximos os h (x (i)) estão dos y(i) correspondentes (NG, 2014).

FIGURA 22 – FUNÇÃO DE CUSTO

FONTE: <https://miro.medium.com/max/700/1*mYZOUDyaqSAKWst-2lEdbQ.png>.
Acesso em: 5 nov. 2020.

Na função de custo, as variáveis representam:

• J (θ): função de custo;


• θ: parâmetros da função de hipótese h(x);
• h(x): rótulo previsto de dados na iteração i;
• y: rótulo real dos dados na iteração i;
• m: quantidade de dados, em algumas notações pode ser representado por n.

Para compreender o cálculo do custo de uma função, supomos que haja


uma regressão linear com uma variável e dois parâmetros θ (a regressão linear
simples, cujo passo a passo foi visto anteriormente). A Figura 23 mostra a função
de erro quadrada.

FIGURA 23 – FUNÇÃO DE CUSTO

FONTE: <https://miro.medium.com/max/700/1*0JVWM37k7_lOAxy34UrSvQ.png>.
Acesso em: 5 nov. 2020.

A partir da hipótese levantada, vamos conferir o gráfico com os dados


originais, a reta de regressão, bem como analisar a função de custo gerada.

148
TÓPICO 2 — REGRESSÃO LINEAR

FIGURA 24 – FUNÇÃO DE CUSTO

FONTE: <https://miro.medium.com/max/700/1*Vx4bZC0gRHeBMJzG7inNZA.png>.
Acesso em: 5 nov. 2020.

Uma vez obtido o custo da hipótese, agora vamos diminuir o custo dessa
função (representado em azul no gráfico) anterior. Para isso, é selecionado um
valor inicial para θ, sendo realizado um procedimento iterativo, que é executado
até encontrar um novo valor de θ para reduzir J(θ), o custo. A Figura 25 apresenta
essa interatividade. Já a técnica para se obter o menor valor de θ será explanada
na sequência.

FIGURA 25 – Θ PARA REDUZIR J(Θ)

FONTE: Adaptada de NG (2014)

149
UNIDADE 3 — REGRESSÃO

3 DERIVADAS
Alguns dos métodos, a seguir, utilizam o conceito de derivação. O cálculo
diferencial e integral possibilita resolver situações das mais variadas áreas do
conhecimento, como problemas que envolvem análise de mercado, conta de
aposentadoria, função custo, disseminação de uma doença, mortalidade infantil,
crescimento populacional, custo de construção, velocidade e aceleração, área,
volume e temperatura média, entre outros.

Utilizando como exemplo uma propaganda realizada pela empresa X, só


Sucesso foi direcionada para um público de 10.000 pessoas pelas redes sociais.
Denote por N(t) o número de pessoas que viram a propaganda após t dias,
conforme a tabela a seguir:

TABELA 4 – VALORES DE USUÁRIO


Dia Pessoas
1 1
2 6
3 40
4 245
5 1368
6 5000
7 8631
8 9754
9 9960
10 9994
11 9999
FONTE: O autor

Descrevemos, geometricamente, esse aumento marcando os pontos


correspondentes a t = 0,1,...,10 e traçando uma curva suave que passa por eles.

FIGURA 26 – PLOTANDO OS DADOS DE T

FONTE: Adaptada de Jenske e Santos (2018)

150
TÓPICO 2 — REGRESSÃO LINEAR

Observa-se que, nessa situação, existe uma correlação entre a razão com
que N(t) está variando com o tempo e a inclinação do gráfico. Isso ilustra uma das
ideias fundamentais do cálculo, que consiste em relacionar razões entre variações
com inclinação de gráficos. Nesse sentido, a derivada é uma potente ferramenta
matemática para medir razões entre variações.

Seja y = f (x) uma função contínua e derivável em um domínio D. A


derivada da função y = f (x) em um ponto é um número que corresponde ao
coeficiente angular da reta tangente à curva y = f (x) no ponto x = x₀.

FIGURA 27 – PLOTANDO F(X) E A CURVA TANGENTE

FONTE: Adaptada de Jenske e Santos (2018)

A derivada de f no ponto x é habitualmente indicada com uma das


seguintes notações:

FIGURA 28 – DERIVADA DE F

FONTE: Adaptada de Jenske e Santos (2018)

ATENCAO

Para auxiliar na dedução de funções, é muito importante a aplicação das regras


de derivação. Calcular a derivada de uma função, partindo de sua definição, não é algo rápido
e simples. Com o intuito de tornar esse processo mais eficiente, foram criadas as regras de
derivação, que permitem determinar as derivadas das funções sem o uso da definição.
Por exemplo, se f’(x) e g’(x), temos:

151
UNIDADE 3 — REGRESSÃO

FIGURA 29 – EXEMPLO DE REGRAS DE DERIVAÇÃO

FONTE: Adaptada de Jenske e Santos (2018)

4 GRADIENTE DESCENDENTE
Agora que conhecemos a função de custo, bem como sua intuição dentro
de uma regressão, temos o objetivo de reduzir o custo e, para isso, vamos aplicar
o gradiente descendente. Segundo Dorneles (2016), o gradiente descendente é um
algoritmo de otimização que realiza o ajuste de parâmetros de forma iterativa,
com o objetivo de encontrar o valor θ que minimiza a função de custo, ou seja, a
reta (função) que melhor se ajusta aos dados que devem ser preditos.

152
TÓPICO 2 — REGRESSÃO LINEAR

Para escolher θ de forma a minimizar J (θ), vamos usar um algoritmo


de pesquisa que começa com alguma “estimativa inicial” para θ e que altera
repetidamente θ para tornar J (θ) menor, até que, com sorte, virá convergir para
um valor de θ que minimiza J (θ). Especificamente, vamos considerar o algoritmo
de descida de gradiente, que começa com algum θ inicial e executa repetidamente
a atualização (NG, 2014).

FIGURA 30 – FÓRMULA DO GRADIENTE DESCENDENTE

FONTE: Adaptada de NG (2014)

O método inicia preenchendo θ com valores aleatórios e melhora


gradualmente a cada iteração, dando um pequeno passo de cada vez até que
o algoritmo convirja para um mínimo. O tamanho dos passos é definido pelo
hiperparâmetro denominado taxa de aprendizado. Se a taxa de aprendizado
for muito pequena, o algoritmo levará muito tempo para convergir, devido ao
grande número de iterações (DORNELES, 2016).

Uma vez obtendo o valor inicial de θ, torna-se necessário iterar e atualizar


a equação para que o erro possa ser reduzido. Segundo Coles (2018), no momento
em que: θj = θ0, θ1 são atribuídos, passa-se a existir o cálculo do valor de ,
que corresponde à taxa de aprendizagem do algoritmo ou ao tamanho do passo
tomado na direção da minimização da função.

No processo iterativo que objetiva minimizar a função custo, atribuem-se


valores iniciais para os parâmetros θ0 e θ1 e inicia-se o processo de mudança dos
parâmetros, além do cálculo de J (θ0, θ1). Para θ0 = 1 e θ1 = 0, o algoritmo do gradiente
descendente é dado pela equação do gradiente, que é repetida até a convergência,
atualizando o parâmetro θj a partir de sua subtração da derivada da função custo a
uma certa taxa de aprendizagem . O algoritmo do gradiente descendente deve ser
executado simultaneamente, atualizando θ0 e (COLES, 2018).

Esse é um algoritmo muito natural que, repetidamente, dá um passo


na direção da diminuição mais acentuada de J (custo). A fim de implementá-lo,
temos que calcular qual é o termo derivado parcial no lado direito. Primeiramente,
vamos trabalhar no caso de termos apenas um exemplo de treinamento (x, y), de
modo que possamos negligenciar a soma na definição de J.

153
UNIDADE 3 — REGRESSÃO

FIGURA 31 – FÓRMULA DO GRADIENTE DESCENDENTE

FONTE: Adaptada de NG (2014)

Ao aplicar a fórmula do gradiente descendente em uma iteração, ou seja,


em um único exemplo de treino, é obtida a seguinte função:

FIGURA 32 – FÓRMULA DO GRADIENTE DESCENDENTE PARA UMA AMOSTRA

FONTE: Adaptada de NG (2014)

Na implementação do gradiente descendente, utilizaremos o algoritmo


LMS (Last Mean Squares – conhecido como o método dos mínimos quadrados),
que mede a diferença quadrática média entre os valores reais e previstos de uma
observação. A saída é um único número que representa o custo, ou pontuação,
associado ao nosso conjunto atual de pesos. O objetivo é minimizar o erro para
melhorar a precisão do nosso modelo (ML GLOSSARY, 2017).

A aplicação do algoritmo LMS é uma regra que tem várias propriedades


que parecem naturais e intuitivas. Segundo NG (2014), a magnitude da
atualização é proporcional ao termo de erro (y (i) – hθ (x (i))). Por exemplo, em um
exemplo de treinamento cuja previsão quase corresponde ao valor real de y (i), há
pouca necessidade de alterar os parâmetros. Contudo, uma mudança maior nos
parâmetros deve ser feita se a previsão hθ (x (i)) tiver um grande erro (ou seja, se
estiver muito longe de y (i)).

Derivamos a regra LMS para quando havia apenas um único exemplo de


treinamento. Existem duas maneiras de modificar esse método para um conjunto
de treinamento de mais de um exemplo, obtendo o seguinte algoritmo:

154
TÓPICO 2 — REGRESSÃO LINEAR

FIGURA 33 – APLICANDO LMS

FONTE: Adaptado de NG (2014)

DICAS

O gradiente descendente é um método que envolve diversos cálculos


matemáticos, o que implica a possibilidade de descida do erro por meio de gráficos.

FIGURA 34 – APLICANDO LMS

FONTE: Adaptado de NG (2014)

Pratique um pouco realizando os exercícios Reduzindo a perda: otimizando a taxa de


aprendizagem, acessando o link: https://developers.google.com/machine-learning/crash-
course/fitter/graph.

5 IMPLEMENTAÇÃO DA REGRESSÃO LINEAR


Até o momento, estudamos a lógica matemática que compreende a
regressão linear, bem como sobre a função de custo gradiente descendente. Para
a implementação da regressão linear na prática, será utilizado um documento de
texto com valores para serem aplicados.

Inicialmente, vamos instanciar as bibliotecas que serão utilizadas, bem


como carregar o arquivo para o nosso documento.
155
UNIDADE 3 — REGRESSÃO

QUADRO 7 – PREPARANDO O ARQUIVO PARA IMPLEMENTAR A REGRESSÃO LINEAR


import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data=pd.read_csv("Dados.txt", header=None)
data.head()
FONTE: O autor

DICAS

Acesse o documento utilizado com os dados para o desenvolvimento do


exemplo em: https://drive.google.com/file/d/1RaN6VNLx4xrwqXKOVZDLLWS2PgsIK5nH/
view?usp=sharing.

Para compreender nosso cenário de dados, vamos criar a visualização


desses dados no plano.

QUADRO 8 – VISUALIZAÇÃO DOS DADOS


plt.scatter(data[0],data[1])
plt.xticks(np.arange(5,30,step=5))
plt.yticks(np.arange(-5,30,step=5))
plt.xlabel("População da Cidade")
plt.ylabel("Lucro ")
plt.title("Predição de Lucros")
FONTE: O autor

FIGURA 35 – VISUALIZAÇÃO DOS DADOS

FONTE: O autor

156
TÓPICO 2 — REGRESSÃO LINEAR

Como vimos todo o processo de adaptação e vetorização da função de


regressão f(x) = a + bx, transformando-a em uma hipótese, a qual aplicamos a
função de custo, além de utilizarmos o gradiente descendente para reduzir tal
custo, trabalharemos a função de custo. Uma vez implementada, utilizando os
dados já carregados, aplicaremos tal função para computar o custo da regressão.

QUADRO 9 – IMPLEMENTANDO A FUNÇÃO DE CUSTO

#Criando a função de custo


def ComputaCusto(X,y,theta):
m = len(y)
predicoes = X.dot(theta)
erro_quadratico = (predictions – y)**2

return 1/(2*m) * np.sum(erro_quadratico)

#Utilizando a função custo


data_n = data.values
m = data_n[:,0].size
X = np.append(np.ones((m,1)),data_n[:,0].reshape(m,1),axis=1)
y = data_n[:,1].reshape(m,1)
theta = np.zeros((2,1))

ComputaCusto(X,y,theta)

FONTE: Adaptado de NG (2014)

Com o cálculo do custo de uma função, agora é possível diminui-lo por


meio da aplicação do gradiente descendente. Para isso, vamos iterar calculando
o custo até convergir.

QUADRO 10 – IMPLEMENTANDO O GRADIENTE DESCENDENTE

def GradienteDescente(X,y,theta,alpha,num_iters):

m=len(y)
J_history=[]

for i in range(num_iters):
predictions = X.dot(theta)
error = np.dot(X.transpose(),(predictions -y))
descent=alpha * 1/m * error
theta-=descent
J_history.append(ComputaCusto(X,y,theta))

return theta, J_history

157
UNIDADE 3 — REGRESSÃO

#Executa o gradiente descendente


theta,J_history = GradienteDescente(X,y,theta,0.01,1500)

#Escreve a hipótese
print("h(x) ="+str(round(theta[0,0],2))+" + "+str(round(the-
ta[1,0],2))+"x1")
FONTE: Adaptado de NG (2014)

Com as funções de custo e do gradiente descendente já desenvolvidas,


podemos estimar os melhores valores para θ₀ e θ₁, tendo em vista a obtenção do
menor erro possível.

QUADRO 11 – CALCULANDO E EXIBINDO VALORES


theta0_vals=np.linspace(-10,10,100)
theta1_vals=np.linspace(-1,4,100)
J_vals=np.zeros((len(theta0_vals),len(theta1_vals)))

for i in range(len(theta0_vals)):
for j in range(len(theta1_vals)):
t=np.array([theta0_vals[i],theta1_vals[j]])
J_vals[i,j]=ComputaCusto(X,y,t)
#Geraando a área do gráfico
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf=ax.plot_surface(theta0_vals,theta1_vals,J_vals,cmap="coolwarm")
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlabel("$\Theta_0$")
ax.set_ylabel("$\Theta_1$")
ax.set_zlabel("$J(\Theta)$")
#obtendo melhor ângulo para exibir
ax.view_init(30,120)
FONTE: Adaptado de NG (2014)

FIGURA 36 – VISUALIZAÇÃO DOS AJUSTE DE PARÂMETROS

FONTE: O autor

158
TÓPICO 2 — REGRESSÃO LINEAR

Um dos processos mais importantes no gradiente descendente é a


diminuição do custo conforme as iterações. Tal compreensão é útil não somente
para a regressão linear, mas também para outras técnicas de regressão.

QUADRO 12 – PLOTANDO O ERRO

plt.plot(J_history)
plt.xlabel("Iterações")
plt.ylabel("$J(\Theta)$")
plt.title("Custo da função utilizando Gradiente Descendente")
FONTE: Adaptado de NG (2014)

FIGURA 37 – VISUALIZAÇÃO DA DIMINUIÇÃO DO CUSTO

FONTE: O autor

Agora com os melhores parâmetros para a regressão, vamos implementar


a função de custo, bem como o gradiente descendente para diminuir o custo.
Nesse momento, podemos visualizar a função de regressão e predizer novas
amostras. Vamos partir da implementação da reta que representa a regressão.

QUADRO 13 – PLOTANDO A RETA DE REGRESSÃO

plt.scatter(data[0],data[1])
x_value=[x for x in range(25)]
y_value=[y*theta[1]+theta[0] for y in x_value]
plt.plot(x_value,y_value,color="r")
plt.xticks(np.arange(5,30,step=5))
plt.yticks(np.arange(-5,30,step=5))
plt.xlabel("População da Cidade")
plt.ylabel("Lucro ")
plt.title("Predição de Lucros")
FONTE: Adaptado de NG (2014)

159
UNIDADE 3 — REGRESSÃO

FIGURA 38 – RETA DE REGRESSÃO

FONTE: O autor

Com todos os principais recursos em mãos, seguimos para a última


implementação: a função de predição. Para isso, consideramos a hipótese em
forma vetorial hθ(x) = θTx na implementação da função de predição.

QUADRO 14 – CRIANDO A FUNÇÃO DE PREDIÇÃO E A UTILIZANDO

def predict(x,theta):

predictions= np.dot(theta.transpose(),x)

return predictions[0]

predict1=predict(np.array([1,3.5]),theta)*10000
print("Para uma população de = 35,000, o algoritmo previu um
lucro de "+str(round(predict1,0)))

predict2=predict(np.array([1,7]),theta)*10000
print("Para uma população de = 70,000, o algoritmo previu um
lucro de"+str(round(predict2,0)))

FONTE: Adaptado de NG (2014)

160
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:

• A regressão é uma tarefa de Machine learning que permite gerar modelos


preditivos para valores contínuos.
• A regressão linear é uma tentativa de modelar uma equação matemática
linear que descreve o relacionamento entre duas variáveis.
• A regressão linear simples é basicamente uma função de primeiro grau que
tem como objetivo gerar um modelo de Machine learning a partir de um
conjunto de dados.
• A regressão pode ser representada por f(x) = a + bx.
• Os valores de a e b são calculados com base nos valores de entrada.
• A função de custo traz a relação entre os valores reais (y) e os valores preditos
(ŷ).
• Obter o custo é importante para que se possa otimizar o funcionamento de
uma regressão.
• A notação vetorial de uma regressão linear é ŷ = hθ(x) = θTx.
• O gradiente descendente é utilizado para reduzir o custo de uma regressão.
• Utilizando os conceitos matemáticos, é possível implementar a regressão
linear no Python.

161
AUTOATIVIDADE

1 A regressão linear é uma tentativa de modelar uma equação matemática linear


que descreva o relacionamento entre duas variáveis. Assinale a alternativa
CORRETA que contenha uma função que represente a regressão linear.

a) ( ) f(x) = a + bx.
b) ( ) f(x) = x+ 1.
c) ( ) f(x) = ax + b.
d) ( ) f(x) = x.

2 A regressão linear permite estimar valores com base em um conjunto de


entrada e um rótulo esperado. Considere os seguintes dados:

X 1 2 3 4 5 6
Y 80,5 81,6 82,1 83,7 83,9 85,0
FONTE: O autor

Qual a equação da regressão linear para os valores anteriores?


a) ( ) ŷ = 79,9 + 0,886x.
b) ( ) ŷ = 79,9x+ 0,886.
c) ( ) ŷ = 80,5 + 0,81x.
d) ( ) ŷ =81,6 + 0,821x.

3 Para o conjunto de dados a seguir, considere o modelo de regressão linear


hθ (x) = θ0 + θ1x. Assinale a alternativa CORRETA que contenha os valores
de θ0 e θ1 na descida do gradiente descendente?

X 1 2 4 0
Y 0,5 1 2 0
FONTE: O autor

a) ( ) θ0 = 0,θ1 = 0.5.
b) ( ) θ0 = 0.5,θ1 = 0.
c) ( ) θ0 = 0.5,θ1 = 0.5.
d) ( ) θ0 = 1,θ1 = 0.5.

4 Para a hipótese de uma regressão linear, definimos θ₀ = −1, θ₁ = 0,5. Assinale


a alternativa CORRETA para hθ (4):

a) ( ) 1.
b) ( ) –1.
c) ( ) 4.
d) ( ) 0,5.

162
5 Considere os seguintes dados:

X 1 2 3 4 5 6
Y 80,5 81,6 82,1 83,7 83,9 85,0
FONTE: O autor

Assinale a alternativa CORRETA que contenha o valor de m:


a) ( ) 6.
b) ( ) 82.
c) ( ) 2.
d) ( ) 5.

163
164
TÓPICO 3 —
UNIDADE 3

TÉCNICAS AVANÇADAS DE REGRESSÃO

1 INTRODUÇÃO
Os algoritmos de regressão utilizados no processo de mineração de dados
normalmente recebem esses dados em diferentes formatos de representação.
Assim, um mesmo conjunto de dados pode ser submetido a diversos algoritmos
de regressão, para obter o menor custo de aprendizado (DOSUALDO, 2003).

A regressão permite analisar os mais diversos tipos de dados, desde dados


climáticos, dados de sensores, até mesmo análise preditiva na bolsa de valores.
Para tais fins, são diversos os métodos utilizados, desde simples interpolações até
técnicas de redes neurais artificiais.

2 REGRESSÃO LOGÍSTICA
A regressão logística foi descoberta no século XIX para descrever o
crescimento das populações e as reações químicas de autocatálise. A ideia básica
do desenvolvimento logístico é simples e usada nos dias atuais para modelar o
crescimento populacional e muitas outras técnicas, como descrever a chance de
ocorrência de um determinado evento, ou seja, a chance de desistência de um
aluno; a chance de um cliente de um banco se tornar inadimplente; entre outras
(BARISTELA; RODRIGUES; BONONI, 2009).

Segundo Silva e Periçaro (2009), a regressão logística é um método, ou


uma abordagem de modelagem matemática, que objetiva descrever a relação
entre uma variável resposta (dependente) e uma ou mais variáveis explicativas
(independentes) ou relacionando variáveis quantitativas e qualitativas. Para
Baristela, Rodrigues e Bononi (2009), a regressão logística pode ser considerada
uma extensão da regressão linear, pois, assim como esta, estuda relações entre
variáveis, buscando as variáveis que podem influenciar, de alguma forma, em uma
variável dependente – na regressão logística, essa variável deve ser categórica.
Assim, pode-se afirmar que regressão linear dá uma resposta em valor numérico,
enquanto a regressão logística mostra a probabilidade de chances de ocorrer o
fato que está sendo estudado.

165
UNIDADE 3 — REGRESSÃO

FIGURA 39 – REGRESSÃO LINEAR VERSUS REGRESSÃO LOGÍSTICA

FONTE: <https://saedsayad.com>. Acesso em: 5 nov. 2020.

Segundo Sayad (c2010-2020), a regressão logística prevê a probabilidade


de um resultado que pode ter apenas dois valores (ou seja, uma dicotomia). A
previsão é baseada no uso de um ou vários preditores (numéricos e categóricos).
Por outro lado, uma regressão logística produz uma curva logística, que é limitada
a valores entre 0 e 1. A regressão logística é semelhante a uma regressão linear,
mas a curva é construída usando o logaritmo natural das “probabilidades” da
variável-alvo, em vez da probabilidade. Além disso, os preditores não precisam
ser normalmente distribuídos ou ter variâncias iguais em cada grupo.

NTE
INTERESSA

Nesse momento, você pode se questionar que o fato de uma regressão


logística fazer a predição de valores entre 0 e 1 pode não ser tão interessante. Entretanto, a
sua implementação será utilizada na resolução de problemas mais complexos, com várias
variáveis, bem como em redes neurais artificiais.

Para compreender o funcionamento da regressão logística, lembre-se de


que a expressão da hipótese para a regressão linear é hθ(x) = θTx. A regressão
logística não pode depender apenas de uma expressão linear para realizar a
predição e, além disso, usar um limite de classificador linear exige que o usuário
estabeleça um limite cujas probabilidades contínuas previstas sejam agrupadas
nas diferentes classes.

A função logística é um modelo da função sigmoide bem conhecida, e a


função matemática que a representa pode ser vista na Figura 40.

166
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

FIGURA 40 – FUNÇÃO SIGMOIDE

FONTE: Adaptada de NG (2014)

A título de curiosidade, basta mencionar que a função logística é usada


para descrever muitas situações do mundo real, por exemplo, o crescimento
populacional. Isso é facilmente entendido pelo gráfico normalizado: os estágios
iniciais sofrem um crescimento exponencial, mas, depois de algum tempo,
devido à competição por determinados recursos (gargalo), a taxa de crescimento
diminui até chegar a um impasse e não haver crescimento (NG, 2014). É, por isso,
que a regressão logística faz uso da função sigmoide. Desse modo, a hipótese da
regressão logística será:

FIGURA 41 – HIPÓTESE DA REGRESSÃO LOGÍSTICA

FONTE: O autor

Segundo NG (2014), uma vez obtida a expressão da hipótese de regressão


logística, precisamos saber como definir a função de custo para avaliar os erros
que um modelo logístico cometerá. Felizmente, como estamos lidando com um
problema de valores binários e só podem ser 0 ou 1, a função de custo pode ser
simplificada para a seguinte expressão:

FIGURA 42 – CALCULANDO CUSTO DA REGRESSÃO LOGÍSTICA

FONTE: Adaptada de NG (2014)

O processo iterativo de gradiente descendente usado na regressão logística


é exatamente igual ao usado na regressão linear. A única diferença entre eles é a
hipótese de entrada. Portanto, o algoritmo de descida gradiente é:

167
UNIDADE 3 — REGRESSÃO

FIGURA 43 – GRADIENTE DESCENDENTE DA REGRESSÃO LOGÍSTICA

FONTE: Adaptada de NG (2014)

Para fixar os conceitos matemáticos, vamos realizar a implementação


em Python. Para isso, torna-se importante compreender a função logística ou
sigmoide:

FIGURA 44 – FUNÇÃO SIGMOIDAL

FONTE: <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.

Os elementos que compõem a função são:

• e = número de Euler que é 2,71828;


• x₀ = o valor do ponto médio da sigmoide no eixo x;
• L = o valor máximo;
• k = inclinação da curva.

Entretanto, outra definição de função logística para a regressão logística é


(BAUTISTA, 2018):

FIGURA 45 – FUNÇÃO LOGÍSTICA

FONTE: <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.

Sabendo os principais elementos da uma regressão logística, vamos para


a sua implementação, por meio de sua principal função, a sigmoide.

168
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

QUADRO 15 – CRIANDO A FUNÇÃO SIGMOIDE

def sigmoid(X, weight):


z = np.dot(X, weight)
return 1 / (1 + np.exp(-z))
FONTE: Adaptado de <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.

Para continuar, é necessário implementar a função de custo.

QUADRO 16 – CRIANDO A FUNÇÃO CUSTO PARA REGRESSÃO LOGÍSTICA


def custo(h, y):
return (-y * np.log(h) – (1 – y) * np.log(1 – h)).mean()
FONTE: Adaptado de <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/note-
book>. Acesso em: 5 nov. 2020.

Com a função logística (sigmoide) e a de custo determinadas, será possível


implementar o gradiente descendente para reduzir o custo da função.

QUADRO 17 – CRIANDO O GRADIENTE DESCENDENTE PARA REGRESSÃO LOGÍSTICA

def gradient_ascent(X, h, y):


return np.dot(X.T, y – h)
def update_weight_mle(weight, learning_rate, gradient):
return weight + learning_rate * gradient
FONTE: Adaptado de <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.

3 REDES NEURAIS ARTIFICIAIS


Redes neurais artificiais (RNAs – em inglês, Artificial Neural Networks – ANN)
são sistemas que mimetizam o comportamento e a estrutura do cérebro humano,
embora possuam um conjunto muito limitado de neurônios. Esses neurônios, por
sua vez, processam paralelamente os dados e os propagam por uma complexa malha
de interconexão. Analogamente ao cérebro humano, as RNAs têm a capacidade
de interagir com o meio externo e adaptar-se a ele. Essas características conferem
às RNAs uma importância multidisciplinar, razão pela qual essa ferramenta vem
ganhando destaque em diferentes áreas do conhecimento, como engenharia,
matemática, física, informática, entre outras (FINOCCHIO, 2014).

169
UNIDADE 3 — REGRESSÃO

FIGURA 46 – REDES NEURAIS

FONTE: Adaptada de: <https://miro.medium.com/max/610/1*SJPacPhP4KDEB1AdhOFy_Q.png>.


Acesso em: 5 nov. 2020.

Sob a ótica computacional, pode-se dizer que, em um neurônio, é realizado


o processamento sobre uma ou, geralmente, várias entradas, a fim de gerar uma
saída. O neurônio artificial é uma estrutura lógico-matemática que procura simular
a forma, o comportamento e as funções de um neurônio biológico. Pode-se, grosso
modo, associar o dendrito à entrada, o soma ao processamento e o axônio à saída;
portanto, o neurônio é considerado uma unidade fundamental processadora
de informação. Os dendritos são as entradas, cujas ligações com o corpo celular
artificial são realizadas por meio de canais de comunicação associados a um
determinado peso (simulando as sinapses). Os estímulos captados pelas entradas
são processados pela função do soma, e o limiar de disparo do neurônio biológico
é substituído pela função de transferência (FURTADO, 2018).

Segundo Marques Filho (2018), as propriedades de uma rede neural são:

• não linearidade, que reflete a natureza das entradas;


• mapeamento de entrada-saída;
• adaptabilidade a novos ambientes, mediante retreino dinâmico ou com
professor;
• resposta a evidências, como confiança estatística sobre respostas dadas;
• disposição natural para lidar com informação contextual;
• tolerância a falhas, devido a sua natureza distribuída;
• implementa tecnologias de integração em larga escala;
• uniformidade de análise e projeto;
• analogia neurobiológica, o que as torna naturalmente transdisciplinar.

Para compreender, matematicamente, como é composta uma rede neural


artificial, vamos partir de sua arquitetura.

170
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

FIGURA 47 – REDES NEURAIS

FONTE: <https://miro.medium.com/max/564/1*KDiqpWOgtCnO8x3wZJHmDA.png>.
Acesso em: 5 nov. 2020.

Segundo Leite (2018), os sinais da entrada no neurônio são representados


pelo vetor x = [x1, x2, x3, …, xN], podendo corresponder aos pixels de uma
imagem, por exemplo. Ao chegarem ao neurônio, são multiplicados pelos
respectivos pesos sinápticos, que são os elementos do vetor w = [w1, w2, w3, …,
wN], gerando o valor z, comumente denominado como potencial de ativação, de
acordo com a expressão:

FIGURA 48 -FÓRMULA DA ATIVAÇÃO

FONTE: <https://miro.medium.com/max/210/1*jjwieh-AVz1uA96f1Tuqlg.png>.
Acesso em: 5 nov. 2020.

O conceito-chave da equação de uma rede neural é o cálculo da expressão


∂E/∂w, que consiste em computar as derivadas parciais da função de erro E em
relação a cada peso do vetor w. Para auxiliar, vamos considerar a Figura 49, que
ilustra uma rede MLP com duas camadas e servirá de base para a explicação do
backpropagation. Uma conexão entre um neurônio j e um neurônio i da camada
seguinte possui peso w(j,i). Repare que os números sobrescritos, entre parênteses,
indicam o número da camada à qual a variável em questão pertence, podendo,
nesse exemplo, valer 1 ou 2 (LEITE, 2018).

171
UNIDADE 3 — REGRESSÃO

FIGURA 49 – REDES NEURAIS COM BACKPROPAGATION

FONTE: <https://miro.medium.com/max/1000/1*96WV4tWwjLMGdxaKIQuADg.png>.
Acesso em: 5 nov. 2020.

Partindo do princípio já estudado anteriormente, no qual x representa um


conjunto de valores de entrada, y equivale ao valor original e ŷ é o valor predito
por uma regressão, no caso, por uma rede neural. A Figura 50 apresenta a função
de custo, denominada função de erro, que tem o objetivo de obter a distância
entre o valor predito e o valor original.

FIGURA 50 – CALCULANDO O ERRO DE UMA REDE NEURAL

FONTE: <https://miro.medium.com/max/297/1*uBPfsMoVLUs29d1dpMXRfg.png>.
Acesso em: 5 nov. 2020.

Segundo Leite (2018), simplesmente estamos calculando a somatória dos


quadrados das diferenças entre os elementos dos dois vetores. Agora, vamos
calcular a derivada parcial do erro em relação à camada de saída, ŷ. Este valor é
o gradiente local em relação ao i-ésimo neurônio da camada (2) e, para não tornar
as fórmulas excessivamente extensas, será simplesmente indicado como δ. Esse δ
a que igualamos o resultado segue a mesma ideia anterior: é o gradiente local em
relação ao i-ésimo neurônio da camada (1).

172
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

FIGURA 51 – ATUALIZANDO OS PESOS DE UMA REDE NEURAL

FONTE: <https://miro.medium.com/max/700/1*tZQybbroYzW6zWHQWINtLg.png>.
Acesso em: 5 nov. 2020.

Para fixar os conceitos matemáticos sobre uma rede neural artificial,


vamos implementar uma versão de uma rede neural utilizando Python, a partir
da criação da função de ativação, bem como do cabeçalho principal.

QUADRO 18 – CRIANDO FUNÇÃO DE ATIVAÇÃO

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

def relu(z):
a = np.maximum(0,z)
return a

def initialize_params(layer_sizes):
params = {}
for i in range(1, len(layer_sizes)):
params['W' + str(i)] = np.random.randn(layer_sizes[i], layer_
sizes[i-1])*0.01
params['B' + str(i)] = np.random.randn(layer_sizes[i],1)*0.01
return params
FONTE: Adaptado de <https://towardsdatascience.com/an-introduction-to-neural-networks-wi-
th-implementation-from-scratch-using-python-da4b6a45c05b>. Acesso em: 5 nov. 2020.

Uma vez inicializada a nossa rede neural, vamos calcular o custo (erro) e
iterar até obter o menor erro possível. Para isso, realizaremos a descida do gradiente
e atualizaremos os parâmetros, diminuindo o custo, fazendo a propagação direta
novamente e iterando até que a convergência seja alcançada.

QUADRO 19 – IMPLEMENTANDO A REDE NEURAL

def backward_propagation(params, values, X_train, Y_train):


layers = len(params)//2
m = len(Y_train)
grads = {}
for i in range(layers,0,-1):
if i==layers:
dA = 1/m * (values['A' + str(i)] – Y_train)

173
UNIDADE 3 — REGRESSÃO

dZ = dA
else:
dA = np.dot(params['W' + str(i+1)].T, dZ)
dZ = np.multiply(dA, np.where(values['A' + str(i)]>=0, 1, 0))
if i==1:
grads['W' + str(i)] = 1/m * np.dot(dZ, X_train.T)
grads['B' + str(i)] = 1/m * np.sum(dZ, axis=1, keepdims=True)
else:
grads['W' + str(i)] = 1/m * np.dot(dZ,values['A' + str(i-
-1)].T)
grads['B' + str(i)] = 1/m * np.sum(dZ, axis=1, keepdims=True)
return grads

def update_params(params, grads, learning_rate):


layers = len(params)//2
params_updated = {}
for i in range(1,layers+1):
params_updated['W' + str(i)] = params['W' + str(i)] – lear-
ning_rate * grads['W' + str(i)]
params_updated['B' + str(i)] = params['B' + str(i)] – lear-
ning_rate * grads['B' + str(i)]
return params_updated

FONTE: Adaptado de <https://towardsdatascience.com/an-introduction-to-neural-networks-wi-


th-implementation-from-scratch-using-python-da4b6a45c05b>. Acesso em: 5 nov. 2020.

Por fim, criaremos funções que permitam com que a rede neural seja utilizada:
a função para instanciar o modelo, realizar a predição e avaliar a rede neural.

QUADRO 20 – UTILIZAÇÃO E AVALIAÇÃO DA REDE NEURAL

def model(X_train, Y_train, layer_sizes, num_iters, learning_


rate): #trains the model
params = initialize_params(layer_sizes)
for i in range(num_iters):
values = forward_propagation(X_train.T, params)
cost = compute_cost(values, Y_train.T)
grads = backward_propagation(params, values,X_train.T, Y_
train.T)
params = update_params(params, grads, learning_rate)
print('Custo da iteração ' + str(i+1) + ' = ' + str(cost) +
'\n')
return params

def compute_accuracy(X_train, X_test, Y_train, Y_test, params):


values_train = forward_propagation(X_train.T, params)
values_test = forward_propagation(X_test.T, params)
train_acc = np.sqrt(mean_squared_error(Y_train, values_
train['A' + str(len(layer_sizes)-1)].T))

174
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

test_acc = np.sqrt(mean_squared_error(Y_test, values_test['A'


+ str(len(layer_sizes)-1)].T))
return train_acc, test_acc

def predict(X, params):


values = forward_propagation(X.T, params)
predictions = values['A' + str(len(values)//2)].T
return predictions
FONTE: Adaptado de <https://towardsdatascience.com/an-introduction-to-neural-networks-wi-
th-implementation-from-scratch-using-python-da4b6a45c05b>. Acesso em: 5 nov. 2020.

4 IMPLEMENTANDO REGRESSÕES COM BIBLIOTECAS DO


PYTHON

No decorrer dos estudos, temos utilizado os recursos da linguagem
Python para suportar a construção dos modelos de Machine learning. A seguir,
vamos utilizá-los na construção de modelos de regressão, dando início à regressão
linear, começando pela instância das bibliotecas e pelo pré-processamento.

QUADRO 21 – REGRESSÃO LINEAR COM SCIKIT-LEARN

from sklearn import datasets


from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split, cross_
val_score
from sklearn.metrics import mean_squared_error

boston = datasets.load_boston()
print(type(boston))
print('\n')
print(boston.keys())
print('\n')
print(boston.data.shape)
print('\n')
print(boston.feature_names)
bos = pd.DataFrame(boston.data, columns = boston.feature_names)

print(bos.head())
print(boston.target.shape)
bos['PRICE'] = boston.target
print(bos.head())
bos.isnull().sum()
print(bos.describe())

FONTE: O autor

Uma vez carregados os arquivos, vamos carregar os valores dividindo os


conjuntos de dados em treino e teste, bem como especificando quem será X e y.
175
UNIDADE 3 — REGRESSÃO

QUADRO 22 – REGRESSÃO LINEAR COM SCIKIT-LEARN

X_rooms = bos.RM
y_price = bos.PRICE

X_rooms = np.array(X_rooms).reshape(-1,1)
y_price = np.array(y_price).reshape(-1,1)

print(X_rooms.shape)
print(y_price.shape)
X_train_1, X_test_1, Y_train_1, Y_test_1 = train_test_split(X_
rooms, y_price, test_size = 0.2, random_state=5)

print(X_train_1.shape)
print(X_test_1.shape)
print(Y_train_1.shape)
print(Y_test_1.shape)
FONTE: O autor

Por fim, com os dados preparados, vamos instanciar o regressor do scikit-


learn, bem como treinar os dados e avaliar o método.

QUADRO 23 – REGRESSÃO LINEAR COM SCIKIT-LEARN

reg_1 = LinearRegression()
reg_1.fit(X_train_1, Y_train_1)
y_train_predict_1 = reg_1.predict(X_train_1)
rmse = (np.sqrt(mean_squared_error(Y_train_1, y_train_pre-
dict_1)))
r2 = round(reg_1.score(X_train_1, Y_train_1),2)

print("Performance do modelo nos dados de teste ")


print("--------------------------------------")
print('RMSE é {}'.format(rmse))
print('R2 é {}'.format(r2))
print("\n")

FONTE: O autor

176
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

LEITURA COMPLEMENTAR

COMO PREVER O VALOR DE VENDA DE UMA CASA?

Wesin Alves

Em um problema de regressão, pretendemos prever a saída que contém um


valor contínuo, representando um preço ou uma probabilidade. Isso é diferente
de um problema de classificação, em que pretendemos prever um rótulo discreto
(por exemplo, quando uma imagem contém um cachorro ou um gato).

Este texto tem o objetivo de construir um modelo para prever o preço


médio das casas em um subúrbio de Boston, em meados da década de 1970. Para
fazer isso, forneceremos ao modelo alguns pontos de dados sobre o subúrbio,
como a taxa de criminalidade e a taxa de imposto sobre a propriedade local. Ao
terminar esta leitura, você será capaz de:

• carregar o conjunto de dados Boston housing prices;


• explorar e pré-processar os dados de treinamento;
• construir seu modelo com o TensorFlow;
• treinar, avaliar e fazer predições com seu modelo;
• visualizar o histórico de erros e desempenho.

Assim como visto anteriormente, vamos usar o pacote tf.keras, uma api de
alto nível do TensorFlow para construir e treinar o modelo. O trecho do código, a
seguir, importa os pacotes necessários para o script rodar tranquilamente.

import tensorflow as tf
from tensorflow import keras

import numpy as np

Esse conjunto de dados é acessível diretamente no TensorFlow. Faça o


download e embaralhe o conjunto de treinamento:

boston_housing = keras.datasets.boston_housing

(train_data, train_labels), (test_data, test_labels) = boston_


housing.load_data()

# Shuffle the training set


order = np.argsort(np.random.random(train_labels.shape))
train_data = train_data[order]
train_labels = train_labels[order]

177
UNIDADE 3 — REGRESSÃO

Esse conjunto de dados é muito menor do que outros: ele tem 506 exemplos
no total, divididos entre 404 exemplos de treinamento e 102 exemplos de teste:

print("Training set: {}".format(train_data.shape)) # 404 exam-


ples, 13 features
print("Testing set: {}".format(test_data.shape)) # 102 exam-
ples, 13 features

O conjunto de dados contém 13 atributos diferentes:

1. Taxa de criminalidade per capita.


2. A proporção de terrenos residenciais zoneada para lotes com mais de 25.000
pés quadrados.
3. A proporção de acres comerciais não varejistas por cidade.
4. Variável dummy de Charles River (= 1 se o setor limite rio; 0 caso contrário).
5. Concentração de óxidos nítricos (partes por 10 milhões).
6. O número médio de quartos por habitação.
7. A proporção de unidades ocupadas pelo proprietário, construídas antes de 1940.
8. Distâncias ponderadas para cinco centros de emprego em Boston.
9. Índice de acessibilidade às autoestradas radiais.
10. Taxa de imposto sobre propriedades de valor integral por US$ 10.000.
11. Relação aluno-professor por cidade.
12. 1000 * (Bk – 0,63) ** 2 onde Bk é a proporção de negros por cidade.
13. Percentagem de status inferior da população.

Cada um desses atributos é armazenado usando uma escala diferente.


Alguns atributos são representados por uma proporção entre 0 e 1; outros são
intervalos entre 1 e 12; alguns são intervalos entre 0 e 100; e assim por diante. Isso
ocorre com frequência com dados do mundo real, e entender como explorar e
limpar esses dados é uma habilidade importante a ser desenvolvida.

Como cientista de dados, pense em possíveis benefícios e danos que as


previsões de um modelo podem causar. Um modelo como esse poderia reforçar
preconceitos e disparidades sociais. Sua aplicação trará um recurso relevante
para o problema que você deseja resolver ou irá introduzir um viés?

Use a biblioteca pandas para exibir as primeiras linhas do conjunto de


dados em uma tabela bem formatada:

import pandas as pd

column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM',


'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT']

df = pd.DataFrame(train_data, columns=column_names)
df.head()

178
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

É recomendado normalizar atributos que usam escalas e intervalos diferentes.


Para cada atributo, subtraia a média do recurso e divida pelo desvio padrão:

# Test data is *not* used when calculating the mean and std

mean = train_data.mean(axis=0)
std = train_data.std(axis=0)
train_data = (train_data - mean) / std
test_data = (test_data - mean) / std

print(train_data[0]) # First training sample, normalized

Vamos construir nosso modelo. Aqui, usaremos um modelo sequencial


com duas camadas ocultas densamente conectadas e uma camada de saída que
retornará um único valor contínuo. As etapas de construção do modelo são
agrupadas em uma função, build_model, pois criaremos um segundo modelo,
mais adiante.

def build_model():
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu,
input_shape=(train_data.shape[1],)),
keras.layers.Dense(64, activation=tf.nn.relu),
keras.layers.Dense(1)
])

optimizer = tf.train.RMSPropOptimizer(0.001)

model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae'])
return model

model = build_model()
model.summary()
return model

model = build_model()
model.summary()

# Display training progress by printing a single dot for each


completed epoch
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')

EPOCHS = 500

179
UNIDADE 3 — REGRESSÃO

# Display training progress by printing a single dot for each


completed epoch
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 100 == 0: print('')
print('.', end='')

EPOCHS = 500

# Store training stats


history = model.fit(train_data, train_labels, epochs=EPOCHS,
validation_split=0.2, verbose=0,
callbacks=[PrintDot()])

import matplotlib.pyplot as plt

def plot_history(history):
plt.figure()
plt.xlabel('Epoch')
plt.ylabel('Mean Abs Error [1000$]')
plt.plot(history.epoch, np.array(history.history['mean_abso-
lute_error']),
label='Train Loss')
plt.plot(history.epoch, np.array(history.history['val_mean_
absolute_error']),
label = 'Val loss')
plt.legend()
plt.ylim([0, 5])

plot_history(history)

Visualize o progresso do treinamento do modelo usando as estatísticas


armazenadas no objeto de histórico. A ideia é usar esses dados para determinar
quanto tempo treinar antes que o modelo pare de progredir.

import matplotlib.pyplot as plt

def plot_history(history):
plt.figure()
plt.xlabel('Epoch')
plt.ylabel('Mean Abs Error [1000$]')
plt.plot(history.epoch, np.array(history.history['mean_abso-
lute_error']),
label='Train Loss')
plt.plot(history.epoch, np.array(history.history['val_mean_
absolute_error']),
label = 'Val loss')
plt.legend()
plt.ylim([0, 5])

plot_history(history)

180
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO

Este gráfico mostra pouca melhoria no modelo após cerca de 200 épocas.
Vamos atualizar o método model.fit para parar automaticamente o treinamento
quando a pontuação de validação não melhorar. Usaremos um retorno de
chamada, que testa uma condição de treinamento para cada época. Se uma
determinada quantidade de épocas transcorrer sem mostrar melhoria, ele para
automaticamente o treinamento.

model = build_model()

# The patience parameter is the amount of epochs to check for


improvement
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss',
patience=20)

history = model.fit(train_data, train_labels, epochs=EPOCHS,


validation_split=0.2, verbose=0,
callbacks=[early_stop, PrintDot()])

plot_history(history)

FIGURA 1 – GRÁFICO APONTA POUCA MELHORIA APÓS CERCA DE 200 ÉPOCAS

O gráfico mostra que o erro médio é de cerca de US$ 2.500. Isso não é bom,
uma vez que não é uma quantia insignificante quando alguns dos rótulos custam
apenas US$ 15.000.

Finalmente, obtenha alguns preços da habitação usando dados no


conjunto de testes:

181
UNIDADE 3 — REGRESSÃO

test_predictions = model.predict(test_data).flatten()

plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values [1000$]')
plt.ylabel('Predictions [1000$]')
plt.axis('equal')
plt.xlim(plt.xlim())
plt.ylim(plt.ylim())
_ = plt.plot([-100, 100], [-100, 100])

FIGURA 2 – PREÇOS REAIS DE HABITAÇÃO

FONTE: Adaptado de ALVES, W. Como prever o valor de venda de uma casa? 2018. Disponível em:
https://wesinalves.github.io/tensorflow/2018/10/22/regression.html. Acesso em: 5 nov. 2020.

182
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:

• Existem diversos métodos de regressão e é possível avaliar todos para um


mesmo cenário de dados.

• A regressão logística pode ser considerada uma extensão da regressão linear,


pois, assim como esta, estuda relações entre variáveis.

• A regressão logística é um método ou uma abordagem de modelagem


matemática, que objetiva descrever a relação entre uma variável resposta
(dependente).

• A regressão linear dá uma resposta em valor numérico, enquanto a regressão


logística apresenta uma resposta em probabilidade de chances de ocorrer o
fato estudado.

• A função sigmoide representa uma função logística.

• Redes neurais artificiais são sistemas que mimetizam o comportamento e


a estrutura do cérebro humano, embora possuam um conjunto limitado de
neurônios.

• Em uma rede neural, os sinais da entrada no neurônio são representados pelo


vetor x = [x1, x2, x3, …, xN].

• Em uma rede neural, os respectivos pesos sinápticos, que são os elementos do


vetor w = [w1, w2, w3, …, wN], geram o valor de ativação.

CHAMADA

Ficou alguma dúvida? Construímos uma trilha de aprendizagem


pensando em facilitar sua compreensão. Acesse o QR Code, que levará ao
AVA, e veja as novidades que preparamos para seu estudo.

183
AUTOATIVIDADE

1 Para as próximas questões, considere texto e fórmula a seguir:

A regressão logística é um método de associação de variáveis no qual se prediz


a presença ou ausência de uma característica (no caso, o cancelamento da
assinatura) por meio de um conjunto de variáveis preditoras ou explicativas.

FONTE: SILVA, L. P. M. da. O mercado de produtos digitais: um estudo de Churn de migrados


de assinatura de jornal. Monografia (Administração) – Departamento de Ciências Adminis-
trativas, Escola de Administração, Universidade Federal do Rio Grande do Sul, Porto Alegre,
2017. Disponível em: https://lume.ufrgs.br/bitstream/handle/10183/169919/001051430.pdf?-
sequence=1&isAllowed=y. Acesso em: 5 nov. 2020.

a) Na equação apresentada, indique o significado de e.

b) Na equação apresentada, indique o significado de x₀.

c) Na equação apresentada, indique o significado de L.

d) Na equação apresentada, indique o significado de k.

184
REFERÊNCIAS
BARISTELA, G. C.; RODRIGUES, S. A.; BONONI, J. T. C. M. Estudo sobre a
evasão escolar usando regressão logística: análise dos alunos do curso de admi-
nistração da Fundação Educacional de Ituverava. Tékhne & Lógos, Botucatu,
v.1, n. 1, p. 21-34, 2009. Disponível em: https://www.researchgate.net/publi-
cation/312597157_Estudo_sobre_a_evasao_escolar_usando_regressao_logisti-
ca_analise_dos_alunos_do_curso_de_Administracao_da_Fundacao_Educacio-
nal_de_Ituverava. Acesso em: 5 nov. 2020.

BUNCHAFT, G.; KELLNER, S. R. O.; HORA, L. H. M. Noções de amostragem. In:


BUNCHAFT, G.; KELLNER, S. R. O. (Orgs.). Estatística sem mistérios. Petrópolis:
Vozes, 1998.

CECCON, D. Fundamentos de ML: funções de custo para problemas de regressão.


IA Expert Academy, 2019. https://iaexpert.academy/2019/08/19/fundamentos-de-ml-
-funcoes-de-custo-para-problemas-de-regressao/. Acesso em: 5 nov. 2020.

DORNELES, B. Regressão Linear com Gradiente Descendente. Medium, 2016.


Disponível em: https://medium.com/@bruno.dorneles/regress%C3%A3o-linear-
-com-gradiente-descendente-d3420b0b0ff. Acesso em: 1 out. 2020.

DOSUALDO, D. G. Investigação de regressão no processo de mineração de


dados. Dissertação (Mestrado em Ciências da Computação e Matemática Com-
putacional) – Instituto de Ciências Matemáticas e Computação, Universidade de
São Paulo, São Carlos, 2003. Disponível em: https://teses.usp.br/teses/disponi-
veis/55/55134/tde-12112014-101732/publico/DanielGomesDosualdo.pdf. Acesso
em: 5 nov. 2020.

ESCOVEDO, T.; KOSHIYAMA, A. Introdução a Data Science – Algoritmos de


Machine learning e métodos de análise. São Paulo: Casa do Código, 2020.

GLEN, S. Excel 2013 Regression analysis: Easy steps and video. StatisticsHow-
To.com. Elementary Statistics for the rest of us! 2013. Disponível em: https://
www.statisticshowto.com/how-to-perform-excel-2013-regression-analysis-ex-
cel-2013/. Acesso em: 5 nov. 2020.

JENSKE, G.; SANTOS, L. G. Matemática para Economistas. Indaial: UNIASSEL-


VI, 2018.

MARQUES FILHO, M. Redes neurais artificiais: do neurônio artificial à con-


volução. Monografia (Tecnologia em Sistemas de Computação) – Universidade
Federal Fluminense, Niterói, 2018. Disponível em: https://app.uff.br/riuff/bits-
tream/1/8926/1/TCC_MAUR%C3%8DCIO_MARQUES_SOARES_FILHO.pdf.
Acesso em: 5 nov. 2020.
185
ML GLOSSARY. Linear Regression. ML GLOSSARY, 2017. Disponível em: https://
ml-cheatsheet.readthedocs.io/en/latest/linear_regression.html. Acesso em: 2 out. 2020.

MEIER, R.; JUNIOR, E. Treinamento de Modelos. Apostila. Universidade Fede-


ral de Santa Catarina, Florianópolis, 2020. Disponível em: https://geam.paginas.
ufsc.br/files/2020/02/Treinando-modelos.pdf. Acesso em: 30 set. 2020.

NG, A. Linear Regression. Computer & Information Science, University of


Pennsylvania, 2014. Disponível em: https://www.cis.upenn.edu/~cis519/fall2014/
lectures/04_LinearRegression.pdf. Acesso em: 30 set. 2020.

PRIM, A. L.; PEREIRA, P. E. Métodos Quantitativos. Indaial: Editora Uniasselvi, 2020.

SAYAD, S. An Introduction to Data Science. c2010-2020. Disponível em: https://


saedsayad.com. Acesso em: 9 out. 2020.

SILVA, R. A. M. da. Combinando regressão linear clusterwise e k-means com


ponderação automática das variáveis explicativas. Dissertação (Mestrado em
Ciência da Computação) – Programa de Pós-graduação em Ciência da Computa-
ção, Universidade Federal de Pernambuco, Recife, 2017. Disponível em: https://
repositorio.ufpe.br/bitstream/123456789/26011/1/DISSERTA%c3%87%c3%83O%20
Ricardo%20Azevedo%20Moreira%20da%20Silva.pdf. Acesso em: 5 nov. 2020.

SILVA, T. C. da; PERIÇARO, G. A. Classificação dos candidatos ao vestibular da FE-


CILCAM via técnicas estatísticas multivariadas. In: CONGRESSO NACIONAL DE
MATEMÁTICA PURA E APLICADA, Cuiabá. Anais [...] XXXII CNMAC, v. 2, p.
566-571, 2009. Disponível em: https://docplayer.com.br/6786832-Classificacao-dos-
-candidatos-ao-vestibular-da-fecilcam-via-tecnicas-estatisticas-multivariadas.html

SOUZA, E. G. Implementando Regressão Linear Simples em Python. Data Hacke-


rs, Medium, 2019. Disponível em: https://medium.com/data-hackers/implemen-
tando-regressão-linear-simples-em-python-91df53b920a8. Acesso em: 29 set. 2020.

SOUZA, M. J. F. Ajuste de curvas pelo método dos quadrados mínimos. Notas


de aula de Métodos Numéricos. Departamento de Computação, Instituto de
Ciências Exatas e Biológicas, Universidade Federal de Ouro Preto, 2003. Dispo-
nível em: http://www.decom.ufop.br/prof/marcone/Disciplinas/MetodosNume-
ricoseEstatisticos/QuadradosMinimos.pdf. Acesso em: 5 nov. 2020.

TAN, P.-N.; STEINBACH, M.; KUMAR, V. Introduction to data mining. Pear-


son Education India, 2016.

186

Você também pode gostar