Guia de estudos
Guia de estudos
Data Science
Data Science
Machine
Machine
Learning
Learning
Neuron/USP
Neuron/USP
FACEBOOK..COCOMM / / NEURONUSPNEURONUSP
Este material, em conjunto com os Notebooks do Jupyter que o acompanham, é de propriedade do Este material, em conjunto com os Notebooks do Jupyter que o acompanham, é de propriedade do grupo Neuron/USP e, legalmente, não pode ser reproduzido para fins comerciais (sujeito a processos grupo Neuron/USP e, legalmente, não pode ser reproduzido para fins comerciais (sujeito a processos judiciais). Qualquer dúvida ou sugestão entre em contato conosco pela nossa página do Facebook ou judiciais). Qualquer dúvida ou sugestão entre em contato conosco pela nossa página do Facebook ou
e-mail:
e-mail: neuron.conteudo@gmail.com neuron.conteudo@gmail.com..
Autores: Leonardo Ernesto, Samuel Henrique, Felipe Maia
Autores: Leonardo Ernesto, Samuel Henrique, Felipe Maia Polo e Matheus Faleiros.Polo e Matheus Faleiros.
Edição:
Sumário
Sumário
1
1
Introdução
Introdução
. . .
. . .
5
5
1.1
1.1
O
O grupo
grupo
55
1.2
1.2
O
O conteúdo
conteúdo
55
1.3
1.3
Os
Os autores
autores
66
1.4
1.4
Gestão
Gestão 2018
2018
88
2
2
Introdução
Introdução
ao
ao
Aprendizado
Aprendizado
de
de
Máquina
Máquina
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
9
9
2.1
2.1
Tipos
Tipos de
de Aprendizado
Aprendizado de
de Máquina
Máquina
99
2.2
2.2
O
O Aprendizado
Aprendizado Não
Não Supervisionado
Supervisionado
99
2.2.12.2.1 Métodos Métodos de de Aprendizado Aprendizado Não Não SupervisionadoSupervisionado . . . 99 2.2.2
2.2.2 Clusterização Clusterização HierárquicaHierárquica . . . . . . . . . 1010 2.2.3
2.2.3 Métodos Métodos de de ParticionamentoParticionamento . . . 1313 2.2.4
2.2.4 Principal Principal Components Components Analysis Analysis - PCA - PCA . . . 1515 2.2.5
2.2.5 Materiais Materiais complementares complementares para para Aprendizado Aprendizado Não SNão Supervisionadoupervisionado . . . 1616
2.3
2.3
O
O Aprendizado
Aprendizado Supervisionado
Supervisionado
16
16
2.3.12.3.1 Introdução Introdução às às Árvores Árvores de Dde Decisãoecisão . . . 1717 2.3.2
2.3.2 Introdução Introdução ao ao Random Random ForestForest . . . 1818
3
3
Aprendizado
Aprendizado
de
de
Máquina
Máquina
Supervisionado
Supervisionado
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
21
21
3.1
3.1
Modelos
Modelos de
de Regressão
Regressão
21
21
3.1.13.1.1 Regressão Regressão LinearLinear . . . 2121 3.1.2
3.1.2 Árvore Árvore de de RegressãoRegressão . . . 2626 3.1.3
3.1.4
3.1.4 Como avaComo avaliar a liar a performance performance de modelos de modelos de regressãde regressão?o? . . . 2727
3.2
3.2
Modelos
Modelos de
de Classificação
Classificação
28
28
3.2.13.2.1 Árvores Árvores de de ClassificaçãClassificaçãoo . . . . . . . . . 2828 3.2.2
3.2.2 Random Random ForestForest . . . . . . 2929 3.2.3
3.2.3 Naive Naive BayesBayes . . . 2929 3.2.4
3.2.4 K-Vizinhos K-Vizinhos Próximos Próximos (KNN)(KNN) . . . 3232 3.2.5
3.2.5 Máquina Máquina de de vetores vetores de de suportesuporte . . . 3434 3.2.6
3.2.6 Perceptron Perceptron . . . . . . . . . 3535 3.2.7
3.2.7 Regressão Regressão LogísticaLogística . . . 3737 3.2.8
3.2.8 Como avaComo avaliar a liar a performance performance de modelos de modelos de classifide classificação?cação? . . . 3939 3.2.9
3.2.9 Materiais Materiais ComplementaresComplementares . . . . . . . . . 4040
4
4
Redes
Redes
Neurais
Neurais
Artificiais
Artificiais
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
.
.
41
41
4.1
4.1
Redes
Redes Neurais
Neurais
41
41
4.2
4.2 Perceptron
Perceptron
43
43
4.3
4.3
Multilayer
Multilayer Perceptron
Perceptron
44
44
4.4
4.4
Deep
Deep Learning
Learning
45
45
4.4.1
4.4.1 Redes Redes Neurais Neurais ConvoluciConvolucionaisonais . . . 4646 4.4.2
1. Introdução
1. Introdução
1.1
1.1
O
O grupo
grupo
O grupo Neuron surge com o principal intuito de cobrir um
O grupo Neuron surge com o principal intuito de cobrir um gap gap existente na realidade dos brasi- existente na realidade dos
brasi-leiros e até mesmo das principais universidades brasileiras: o estudo, discussão e desenvolvimentos leiros e até mesmo das principais universidades brasileiras: o estudo, discussão e desenvolvimentos de projetos relacionados ao
de projetos relacionados ao Data Science Data Science, que engloba programação, análise de dados e , que engloba programação, análise de dados e o empregoo emprego
das tecnologias de Aprendizado de Máquina com fins práticos ligados tanto à pesquisa quanto aos das tecnologias de Aprendizado de Máquina com fins práticos ligados tanto à pesquisa quanto aos negócios. Como atividade principal, o grupo Neuron abrigará um grupo de estudos em
negócios. Como atividade principal, o grupo Neuron abrigará um grupo de estudos em Data Science Data Science
a partir do
a partir do ano de 2018 localizado no campus da ano de 2018 localizado no campus da UniversidadUniversidade de São e de São Paulo (USP) em Ribeirão Preto,Paulo (USP) em Ribeirão Preto, São Paulo. No que tange às atividades extras, traremos periodicamente profissionais e estudiosos São Paulo. No que tange às atividades extras, traremos periodicamente profissionais e estudiosos da área para conversar com nossos membros e daremos apoio a alunos que queiram desenvolver da área para conversar com nossos membros e daremos apoio a alunos que queiram desenvolver projetos próprios. Além disso, fechamos parceria com o grupo HAIT, mais importante grupo de projetos próprios. Além disso, fechamos parceria com o grupo HAIT, mais importante grupo de estudos em Inteligência Artificial formado por alunos das melhores universidades japonesas. Essa estudos em Inteligência Artificial formado por alunos das melhores universidades japonesas. Essa parceria possibilitará grande troca de experiência e
parceria possibilitará grande troca de experiência e networking networking entre os membros dos dois grupos, entre os membros dos dois grupos,
sendo que o desenvolvimento de projetos entre alunos de diferentes nacionalidades será o ponto alto. sendo que o desenvolvimento de projetos entre alunos de diferentes nacionalidades será o ponto alto. Espero que aprovei
Espero que aproveite seu tempo no Neuron. te seu tempo no Neuron. Grande abraço,Grande abraço,
Felipe Maia Polo - Presidente 2018 Felipe Maia Polo - Presidente 2018
1.2
1.2
O
O conteúdo
conteúdo
O conteúdo do Neuron foi desenvolvido com a finalidade de maximizar o seu aprendizado em O conteúdo do Neuron foi desenvolvido com a finalidade de maximizar o seu aprendizado em
Data Science
Data Science, utilizando a linguagem de programação Python com o enfoque em Aprendizado de, utilizando a linguagem de programação Python com o enfoque em Aprendizado de
Máquina. Os
Máquina. Os assuntos que serão abordados foram dividassuntos que serão abordados foram divididos em quatro grandes tópicos: idos em quatro grandes tópicos: IntroduçãoIntrodução a Programação em Python, Fundamentos de Matemática,
a Programação em Python, Fundamentos de Matemática, Machine Learning Machine Learning ee Deep Learning Deep Learning..
Esses tópicos serão divididos em subtópicos, para melhor explicação dos mesmos. Os conteúdos Esses tópicos serão divididos em subtópicos, para melhor explicação dos mesmos. Os conteúdos serão abordados em aulas
serão abordados em aulas expositiexpositivas com exercícios práticos, que serão disponibilizados antes devas com exercícios práticos, que serão disponibilizados antes de cada aula.
cada aula. TTambém contaremos com palestras de profissioambém contaremos com palestras de profissionais das diversnais das diversas áreas, com as áreas, com o intuitoo intuito de propiciar aos membros do
de propiciar aos membros do grupo um conhecimento amplo sobre as grupo um conhecimento amplo sobre as aplicaçaplicações das tecnologiaões das tecnologia no estudos em
colaboração do Felipe Maia Polo e do Samuel Henrique. Espero que o conteúdo seja completo e de colaboração do Felipe Maia Polo e do Samuel Henrique. Espero que o conteúdo seja completo e de fácil compreensão.
fácil compreensão. AtenciosamAtenciosamente,ente,
Leonardo Ernesto – Vice-Presidente 2018 Leonardo Ernesto – Vice-Presidente 2018
1.3
1.3
Os
Os autores
autores
Este espaço é
Este espaço é dedicado para que você conheça um dedicado para que você conheça um pouco dos nossos autores.pouco dos nossos autores. Felipe Maia Polo
Felipe Maia Polo
Estudante de Economia pela Faculdade de Economia, Administração e Contabilidade de Ribeirão Estudante de Economia pela Faculdade de Economia, Administração e Contabilidade de Ribeirão Preto da Universidade de São Paulo. Tem experiência com Estatística, Econometria e Aprendizado Preto da Universidade de São Paulo. Tem experiência com Estatística, Econometria e Aprendizado de Máquina.
de Máquina. TrabTrabalhou no Laboratóalhou no Laboratório de Estudos e Pesquisas em Economia Social (LEPES)rio de Estudos e Pesquisas em Economia Social (LEPES) focando majoritariamente em avaliação de políticas públicas na área da educação. Concluiu parte focando majoritariamente em avaliação de políticas públicas na área da educação. Concluiu parte da graduação na Universidade de Tóquio, onde teve contato com grupos voltados ao ensino e da graduação na Universidade de Tóquio, onde teve contato com grupos voltados ao ensino e treinamento de pessoas em
treinamento de pessoas em Data Science Data Science, estes que , estes que foram grandes inspiraçõforam grandes inspirações para a es para a concretizconcretizaçãoação
do Grupo de Estudos em
do Grupo de Estudos em Data Science Data Science N Neuron/USPeuron/USP..
Leonardo Ernesto Leonardo Ernesto
Estudante de Informática Biomédica pela Faculdade de Medicina de Ribeirão Preto e pela Estudante de Informática Biomédica pela Faculdade de Medicina de Ribeirão Preto e pela Faculdade de Filosofia Ciências e Letras de Ribeirão Preto na Universidade de São Paulo. Exerce o Faculdade de Filosofia Ciências e Letras de Ribeirão Preto na Universidade de São Paulo. Exerce o cargo de diretor de assuntos acadêmicos no Centro Estudantil da Informática Biomédica - CEIB, cargo de diretor de assuntos acadêmicos no Centro Estudantil da Informática Biomédica - CEIB, o qual está sob sua responsabilidade desde 2016 e já foi representante Discente na Comissão o qual está sob sua responsabilidade desde 2016 e já foi representante Discente na Comissão Coorden
Coordenadora da IBM em adora da IBM em 2016. 2016. É aluno de iniciação cientÉ aluno de iniciação cientifica desde 2014 no Laboratóifica desde 2014 no Laboratório derio de Tráfego Intracelular de Proteínas, onde desenvolve pesquisa de interação de proteínas. Possui amplo Tráfego Intracelular de Proteínas, onde desenvolve pesquisa de interação de proteínas. Possui amplo conhecimento nas áreas de Bioinformática, Inteligência Artificial, Reconhecimento de Padrões e conhecimento nas áreas de Bioinformática, Inteligência Artificial, Reconhecimento de Padrões e
Data
Data MiningMining..
Matheus Faleiros Matheus Faleiros
Formado em Informática Biomédica e mestrando do programa Interunidades em Bioengenharia Formado em Informática Biomédica e mestrando do programa Interunidades em Bioengenharia da Universidade de São Paulo. Trabalha com classificação e reconhecimento de padrões em imagens da Universidade de São Paulo. Trabalha com classificação e reconhecimento de padrões em imagens médicas. Possui conhecimento em técnicas de
médicas. Possui conhecimento em técnicas de Machine Learning Machine Learning e e Deep Learning Deep Learning..
Samuel Henrique Samuel Henrique
Estudante de Informática Biomédica pela Faculdade de Medicina de Ribeirão Preto e pela Estudante de Informática Biomédica pela Faculdade de Medicina de Ribeirão Preto e pela Facul-dade de Filosofia Ciências e Letras de Ribeirão Preto na UniversiFacul-dade de São Paulo. Conhecimento dade de Filosofia Ciências e Letras de Ribeirão Preto na Universidade de São Paulo. Conhecimento avançado na linguagem Python 3.6, algumas de suas bibliotecas e Programação Orientada a Objetos. avançado na linguagem Python 3.6, algumas de suas bibliotecas e Programação Orientada a Objetos. Pablo Leonardo
Pablo Leonardo
Graduando em engenharia de produção pela faculdade Pitágoras.Graduando em licenciatura Graduando em engenharia de produção pela faculdade Pitágoras.Graduando em licenciatura plena em matemática pela Univ
plena em matemática pela Universidadersidade Federal do Maranhão. e Federal do Maranhão. Amante de neuromatemáAmante de neuromatemática etica e matemática
11..33 OOssaauuttoorreess 77
Murilo Henrique Soave Murilo Henrique Soave
Estudante de Economia Empresarial e Controladoria na Faculdade de Economia, Administração Estudante de Economia Empresarial e Controladoria na Faculdade de Economia, Administração e Contabilidade da Universidade de São Paulo. Possui conhecimento avançado em Python e C, e Contabilidade da Universidade de São Paulo. Possui conhecimento avançado em Python e C, além de experiência na programação de sistemas embarcados. Atualmente, desenvolve trabalho de além de experiência na programação de sistemas embarcados. Atualmente, desenvolve trabalho de iniciação científica vinculad
iniciação científica vinculado ao o ao Instituto Federal de São Paulo.Instituto Federal de São Paulo. Carlos Henrique Lavieri Marcos Garcia
Carlos Henrique Lavieri Marcos Garcia
Estudante de Economia na Faculdade de Economia, Administração e Contabilidade de Ribeirão Estudante de Economia na Faculdade de Economia, Administração e Contabilidade de Ribeirão Preto (FEA-RP/USP), com interesse em
Preto (FEA-RP/USP), com interesse em ciência de dados e ciência de dados e AprendizadAprendizado de o de Máquina.Máquina. Mateus Padua
Mateus Padua
Bacharel em Ciência da Computação pela UniSEB COC. Trabalha como desenvolvedor WEB e Bacharel em Ciência da Computação pela UniSEB COC. Trabalha como desenvolvedor WEB e Engenheiro de Software a 18 anos. Possui conhecimento avançado em Python, Django, JavaScript, Engenheiro de Software a 18 anos. Possui conhecimento avançado em Python, Django, JavaScript, OOP, Banco de dados, AWS. Sempre em busca de novos desafios.
OOP, Banco de dados, AWS. Sempre em busca de novos desafios. Thiago M. Carvalho
Thiago M. Carvalho
Graduado e mestre em estatística pela Universidade de Brasília, trabalha no Banco do Brasil Graduado e mestre em estatística pela Universidade de Brasília, trabalha no Banco do Brasil com a linguagem SAS. Aprendiz de R e Python, é um cientista de dados em formação. Atualmente com a linguagem SAS. Aprendiz de R e Python, é um cientista de dados em formação. Atualmente estuda estatística bayesiana.
1.4
1.4
Gestão
Gestão 2018
2018
P
Prreessiiddeenntte e VViiccee--PPrreessiiddeennttee
FFeelliippe e MMaaiia a PPoollo o LLeeoonnaarrddo o EErrnneessttoo
Conteúdo Conteúdo Diretor:
Diretor: Samuel Samuel HenriqueHenrique Membro: Membro: Matheus Matheus FaleirosFaleiros Membro:
Membro: Pablo Pablo LeonardoLeonardo Membro:Membro: Murilo Murilo SoaveSoave Membro:
Membro: Carlos Carlos HenriqueHenrique Membro:Membro: Charles Charles ChenChen Membro:
Membro: Thiago Thiago CarvalhoCarvalho Membro: Membro: Bruno Bruno ComitreComitre Membro:
Membro: Mateus Mateus PaduaPadua
Projeto Projeto Diretor:
Diretor: Leonardo Leonardo ErnestoErnesto Membro: Membro: Eduardo Eduardo JunqueiraJunqueira Desenvolvimento de pessoas
Desenvolvimento de pessoas Diretor:
Diretor: Gustavo Gustavo RibeiroRibeiro Membro:Membro: Edvaldo Edvaldo SantosSantos Membro:
Membro: Henrique Henrique NogueiraNogueira
Financeiro Financeiro Diretora:
Diretora: Natasha Natasha FreitasFreitas Membro:Membro: Beatriz Beatriz MachadoMachado Membro:
Membro: Murilo Murilo SoaveSoave
Marketing Marketing Diretor:
Diretor: Jonathan Jonathan BatistaBatista Membro:Membro: Cassio Cassio VilelaVilela Membro:
Membro: Willy Willy OliveiraOliveira Membro:Membro: Gustavo Gustavo SantosSantos Relações Públicas
Relações Públicas Diretor:
2. Introdução ao Aprendizado de Máquina
2. Introdução ao Aprendizado de Máquina
Com o avanço da tecnologia, o poder de processamento computacional está cada vez maior Com o avanço da tecnologia, o poder de processamento computacional está cada vez maior e, em
e, em função disso, os computadores começarfunção disso, os computadores começaram a am a aprendeaprender com r com algorialgoritmos a tmos a automatautomatização deização de extração de conhecimentos com muito mais po
extração de conhecimentos com muito mais poder e rapidez. der e rapidez. Hoje em dia o Aprendizado de MáquinaHoje em dia o Aprendizado de Máquina (ou
(ou Machine Learning Machine Learning) está presente em nossos celulares e computadores, usando algoritmos que) está presente em nossos celulares e computadores, usando algoritmos que
aprende
aprendem interatim interativamentvamente a e a partir de dados. partir de dados. A partir de agora, vamos entrar mais a A partir de agora, vamos entrar mais a fundo nofundo no aprendizado de máquina e como ele pode ser utilizado. Veremos quais são os principais métodos de aprendizado de máquina e como ele pode ser utilizado. Veremos quais são os principais métodos de aprendizado mais a frente.
aprendizado mais a frente.
2.1
2.1
Tipos d
Tipos de Apr
e Aprendizado
endizado de M
de Máquina
áquina
Os principais tipos de aprendizado de máquina são: aprendizagem supervisionada, não Os principais tipos de aprendizado de máquina são: aprendizagem supervisionada, não super-visio
visionada e semi-supernada e semi-supervisionvisionada. ada. A seguir obserA seguir observamos a caractevamos a característicrística de cada uma delas. a de cada uma delas. DeDe certa forma, todos os
certa forma, todos os tipos de aprendizado são baseados em experiências passadas (dados) e inferetipos de aprendizado são baseados em experiências passadas (dados) e infere algo sobre a
algo sobre a realidadrealidade, tentando resolver um problema. e, tentando resolver um problema. ResumidResumidamente, os amente, os algorialgoritmos utilizamtmos utilizam reconhecimento de padrões e grande quantidade de dados para obter respostas precisas. Exemplos: reconhecimento de padrões e grande quantidade de dados para obter respostas precisas. Exemplos: recomendaçõe
recomendações do s do Netflix, ReconhecimenNetflix, Reconhecimento de to de face do Facebook, carro autônomo da face do Facebook, carro autônomo da Google.Google.
2.2
2.2
O Ap
O Aprendizado
rendizado Não
Não Supervisionado
Supervisionado
Neste tipo de aprendizado não existe supervisão ou “professor” que fornece os resultados Neste tipo de aprendizado não existe supervisão ou “professor” que fornece os resultados correto
corretos de saída, apenas os dados de entrada. s de saída, apenas os dados de entrada. O algoritmo buO algoritmo busca por padrões e procura sabersca por padrões e procura saber quando a característica ocorre e quando não ocorre, ou seja, tem liberdade de classificar como quando a característica ocorre e quando não ocorre, ou seja, tem liberdade de classificar como quiser. O conjunto das técnicas não supervisionadas e mais utilizadas para agrupar os dados que são quiser. O conjunto das técnicas não supervisionadas e mais utilizadas para agrupar os dados que são semelhantes se chama
semelhantes se chama clustering clustering, por exemplo., por exemplo.
2.2.1
2.2.1
Métodos
Métodos de A
de Aprendizado N
prendizado Não Supervisionado
ão Supervisionado
Os principais objetivos do aprendizado não supervisionado, são encontrar estruturas em Os principais objetivos do aprendizado não supervisionado, são encontrar estruturas em dadosdados não classificados, padrões inesperados e classificar os dados em grupos por alguma similaridade. não classificados, padrões inesperados e classificar os dados em grupos por alguma similaridade.
Figura 2.1: Exemplo das diferentes abordagens de aprendizado, a primeira mostra o supervisionado: Figura 2.1: Exemplo das diferentes abordagens de aprendizado, a primeira mostra o supervisionado: onde as figuras são separadas de acordo com um atributo já conhecido; enquanto a segunda mostra onde as figuras são separadas de acordo com um atributo já conhecido; enquanto a segunda mostra o aprendizado não
o aprendizado não supervisupervisionadsionado, onde o, onde ocorre a ocorre a classiclassificação de ficação de acordo com acordo com caractercaracterísticaísticas s emem comum.
comum. Disponível em: https://lakshaysuri.files.wordpress.com/2017/03/sup-vs-unsup.png?w=648 Disponível em: https://lakshaysuri.files.wordpress.com/2017/03/sup-vs-unsup.png?w=648
Nesse estudo explicaremos como funcionam os algoritmos de algumas técnicas de Clustering e Nesse estudo explicaremos como funcionam os algoritmos de algumas técnicas de Clustering e redução de dimensionalidade, que englobam classificação atributos em grupos e a diminuição redução de dimensionalidade, que englobam classificação atributos em grupos e a diminuição do número de variáveis usad
do número de variáveis usadas sem uma as sem uma perda de informação releperda de informação relevantevante. . Dentre esses métodoDentre esses métodoss abordaremos; o Métodos de Particionamento (
abordaremos; o Métodos de Particionamento (Partitioning Method Partitioning Method ), ), ClusteClusterização Hierárquicarização Hierárquica
(( Hierarchical Clustering Hierarchical Clustering) e ) e AnálisAnálise do e do ComponenComponente Principal (te Principal (Principal Components Analysis – Principal Components Analysis –
PCA PCA).).
2.2.2
2.2.2
Clusterização
Clusterização Hierárquica
Hierárquica
Dentro do Machine Learning são inúmeras as naturezas que um conjunto de dados a ser
Dentro do Machine Learning são inúmeras as naturezas que um conjunto de dados a ser utilizadoutilizado em um modelo pode assumir. Assim sendo, tão diverso quanto os âmagos de cada conjunto, são os em um modelo pode assumir. Assim sendo, tão diverso quanto os âmagos de cada conjunto, são os métodos de agrupálos. Afinal, características distintas demandam algoritmos também distintos métodos de agrupálos. Afinal, características distintas demandam algoritmos também distintos -para lograr um
para lograr um maior êxito nas previsões feitas pelo modelo implementado.maior êxito nas previsões feitas pelo modelo implementado.
Por exemplo, imaginemos uma situação na qual temos informações acerca de um aglomerado Por exemplo, imaginemos uma situação na qual temos informações acerca de um aglomerado de compradore
de compradores e queremos divids e queremos dividí-los em função do seu perfil de compra. í-los em função do seu perfil de compra. Por tratar-Por tratar-se de umse de um conjunto cujo número de clusters é desconhecido, o método de Clusterização Hierárquica conjunto cujo número de clusters é desconhecido, o método de Clusterização Hierárquica apresenta-se como uma excelente opção. Pois, esapresenta-se método de classificação tem como um de apresenta-seus resultados a se como uma excelente opção. Pois, esse método de classificação tem como um de seus resultados a construção de um dendrograma, que é um instrumento capaz de
construção de um dendrograma, que é um instrumento capaz de nos mostrar a relação de nos mostrar a relação de proximidadeproximidade entre os
entre os elementos.elementos.
O algoritmo hierárquico de clusterização pode ser empregado de duas
O algoritmo hierárquico de clusterização pode ser empregado de duas formas:formas: 1.
1. Modo aglomerativo: O algoritmo inicia com todos os elementos da matriz separados em Modo aglomerativo: O algoritmo inicia com todos os elementos da matriz separados em grupos distint
grupos distintos e, a os e, a cada passo, os dois grupos mais próximos são agrupados. Este processocada passo, os dois grupos mais próximos são agrupados. Este processo repete-se até que haja somente um único grupo como objeto final.
repete-se até que haja somente um único grupo como objeto final. 2.
2. Modo divisiModo divisivo: Aqui há vo: Aqui há o processo inverso do modo supracitado, o algoritmo começa com umo processo inverso do modo supracitado, o algoritmo começa com um único grupo e os vai dividindo em pares até que restem os objetos isolados da matriz inicial. único grupo e os vai dividindo em pares até que restem os objetos isolados da matriz inicial. O modo adotado na literatura clássic
O modo adotado na literatura clássica – a – e que também e que também adotareadotaremos aqui – mos aqui – é o é o primeiro modo.primeiro modo. Segue uma demonstração gráfica
22..2 2 O O AApprreennddiizzaaddo o NNãão o SSuuppeerrvviissiioonnaaddo o 1111
Figura 2.2:
Figura 2.2: FluxogramFluxograma do algoritmoa do algoritmo
Vale notar que o processo de encontrar os dois grupos mais próximos é feito através de um dos Vale notar que o processo de encontrar os dois grupos mais próximos é feito através de um dos métodos abaixos:
métodos abaixos:
•• Single: A distância entre os grupos é mensurada através da distância mínima encontrada entre Single: A distância entre os grupos é mensurada através da distância mínima encontrada entre os objetos que os
os objetos que os compõem.compõem. •
• Complete: Diferente do primeiro métodoComplete: Diferente do primeiro método, o critério é a distância máxima entre os objetos., o critério é a distância máxima entre os objetos. •
• AAverage: Já aqui, o que é verage: Já aqui, o que é levalevado em consideração é a distância média entre todos os objdo em consideração é a distância média entre todos os objetos.etos. •
• Centroid: É considerada a disCentroid: É considerada a distância entre os centrotância entre os centroides dos dois clides dos dois clusters.usters.
•• Ward: Caso os dois clusters selecionados unam-se, medirá como mudará a distância total em Ward: Caso os dois clusters selecionados unam-se, medirá como mudará a distância total em relação aos
relação aos centroides originais.centroides originais. Par
Paraa maimaiss detdetalhalheses sobsobrere aa teoteoriaria, , veverrhttp://www.saedsayad.com/clustering_hierarchicalhttp://www.saedsayad.com/clustering_hierarchical.. htm
htm. Agora que os fundamentos teóricos básicos foram introduzidos, vamos a um exemplo prático. Agora que os fundamentos teóricos básicos foram introduzidos, vamos a um exemplo prático
para fixá-los.
para fixá-los. TrabaTrabalharemos com um dataset lharemos com um dataset que contém informações sobre compradoresque contém informações sobre compradores11.. import
import pandas pandas asas pdpd
import
import numpy numpy asas npnp
import
import matplotlib.pyplot matplotlib.pyplot asas pltplt #Plo #Plotagetagem m dos dos gráfgráficosicos
import
import scipy.cluster.hierarchy scipy.cluster.hierarchy asas shcshc #Co #Construção do nstrução do dendrogdendrograma rama
from
from sklearn.cluster sklearn.cluster import import AgglomerativeClustering AgglomerativeClustering #for #formaçãmação o dos dos cluclustersterss 11O download do dataset encontra-se no drive junto com O download do dataset encontra-se no drive junto com o material da apostilao material da apostila
data
data == pdpd..read_csv(read_csv("/home/l4b/Downloads/shopping_data.csv""/home/l4b/Downloads/shopping_data.csv"))
O dataset é composto pelas colunas CustomerID, Genre, Age, Annual Income(Mensurado em O dataset é composto pelas colunas CustomerID, Genre, Age, Annual Income(Mensurado em milhares de reais) e Spending Score. Destas, restringir-nos-emos as duas últimas que apresentam as milhares de reais) e Spending Score. Destas, restringir-nos-emos as duas últimas que apresentam as inputs úteis ao nosso processo. A primeira aponta o rendimento anual e a segunda a propensão a inputs úteis ao nosso processo. A primeira aponta o rendimento anual e a segunda a propensão a consumir
consumir, sendo 0 o , sendo 0 o mínimo e 100 o máximo.mínimo e 100 o máximo.
infos
infos == data data..iloc[:,iloc[:,33 :5:5]]..valuesvalues #Se #Seleçãleção o das das duas duas refereferidaridas s colcolunasunas..
plt
plt..figure(figsizefigure(figsize==((1010,,1010)))) #D #Dimenimensões do sões do grágráfico que fico que será plotadserá plotado.o.
link
link == shcshc..linkage(linkage(infos, infos, methodmethod==wardward)) #Re #Realaliza iza a a ununiãião o dodos s grgrupoupos s utiutililizanzando do o o mémétodtodo o wa wa
dendrogram
dendrogram == shcshc..dendrogram(link)dendrogram(link) #Cons #Constroi troi o o denddendrogrrograma.ama.
plt
plt..show()show() #Exibe-o. #Exibe-o.
Figura 2.3: Dendrograma Figura 2.3: Dendrograma
Algo interessante a se notar no dendrograma é o fato do tamanho das linhas verticais Algo interessante a se notar no dendrograma é o fato do tamanho das linhas verticais representa-rem a
rem a distâncidistância demandada no agrupamento. Ou a demandada no agrupamento. Ou seja, o ideal é seja, o ideal é aguardar surgaguardar surgir extensas linhas parair extensas linhas para escolher o número de clusters. No caso deste dataset, é notável que isso ocorre após a formação de 5 escolher o número de clusters. No caso deste dataset, é notável que isso ocorre após a formação de 5 grupos. Com o
grupos. Com o número em mãos, resta-nos partir para a clusterização.número em mãos, resta-nos partir para a clusterização.
cluster
cluster == AgglomerativeClustering(n_clusters AgglomerativeClustering(n_clusters=5=5, , affaffinitinityy==euclideaneuclidean, , linklinkageage==wardward))
cluster
cluster..fit_predict(infos)fit_predict(infos)
A função terá como retorno uma lista nos informando o grupo que cada elemento da matriz A função terá como retorno uma lista nos informando o grupo que cada elemento da matriz pertence, vamos, portanto
pertence, vamos, portanto, plotar o , plotar o gráfico final já gráfico final já com essa divisão.com essa divisão.
#O
#O eieixo xo X X seserá rá rereprepresesentantado do pepelo lo rerendindimemento nto ananual ual e e o o Y Y pelpela a prpropoprenrensãsão o a a conconsusumirmir..
plt
plt..scatter(infos[:,scatter(infos[:,00], ], infoinfos[:s[:,,11], ], cc==clustercluster..labelabels_, ls_, cmapcmap==rainbowrainbow))
plt
22..2 2 O O AApprreennddiizzaaddo o NNãão o SSuuppeerrvviissiioonnaaddo o 1133
Figura 2.4:
Figura 2.4: Resultado da clusterizaResultado da clusterizaçãoção
No agrupamento acima, é possível visualizar claramente os cinco clusters. Por exemplo, o vermelho No agrupamento acima, é possível visualizar claramente os cinco clusters. Por exemplo, o vermelho representa indi
representa indivíduos que ganham pouco e também tendem a consumir pouco, já o víduos que ganham pouco e também tendem a consumir pouco, já o roxo é formadoroxo é formado por pessoas que ganham muito, mas,
por pessoas que ganham muito, mas, consomem pouco.consomem pouco.
2.2.3
2.2.3
Métodos
Métodos de
de Particionamento
Particionamento
Esses métodos são baseados na separação dos indivíduos em subgrupos, sendo que uma parte Esses métodos são baseados na separação dos indivíduos em subgrupos, sendo que uma parte importante desse tipo de algoritmo é o número de subgrupos
importante desse tipo de algoritmo é o número de subgrupos k k que serão formados e que deve que serão formados e que deve
ser informado pelo usuário. Para encontrar o melhor
ser informado pelo usuário. Para encontrar o melhor k k , usamos métricas que descrevem a melhor, usamos métricas que descrevem a melhor
estimativa dos grupos em relação aos dados. Dentre os métodos de particionamento, abordaremos o estimativa dos grupos em relação aos dados. Dentre os métodos de particionamento, abordaremos o
k-means
k-means..
Podemos fazer o uso
Podemos fazer o uso do algoritmo dedo algoritmo de K-means K-means quando possuímos um conjunto de dados não quando possuímos um conjunto de dados não
rotulados e gostaríamos de agrupá-los, para
rotulados e gostaríamos de agrupá-los, para assim poder observar padrões nos dados. assim poder observar padrões nos dados. Posteriormente,Posteriormente, poderia ocorrer uma análise mais
poderia ocorrer uma análise mais aprofundada das características de cada aprofundada das características de cada grupo após o agrupamento,grupo após o agrupamento, caso este aconteça.
caso este aconteça.
Para mostrar a implementação do método, iremos abordar
Para mostrar a implementação do método, iremos abordar o mesmo exemplo utilizado na parte deo mesmo exemplo utilizado na parte de clusterização hierárquica, porém desta vez em utilizaremos a idade também como variavel. Abaixo clusterização hierárquica, porém desta vez em utilizaremos a idade também como variavel. Abaixo as bibliotecas que
as bibliotecas que usaremos.usaremos.
import
import pandas pandas asas pdpd
import
import numpy numpy asas npnp
from
from sklearn.cluster sklearn.cluster import import KMeans KMeans
import
import matplotlib.pyplot matplotlib.pyplot asas pltplt
Para facilitar nossa análise iremos tirar a variável Costumer ID pois ela nao é relevante para a Para facilitar nossa análise iremos tirar a variável Costumer ID pois ela nao é relevante para a demonstração.
demonstração.
dataset
dataset..drop([drop(["CustomerID""CustomerID"],axis],axis=1=1,inplace,inplace== True True))
O algoritimo do
O algoritimo do K-means K-means funciona basicamente calculando a distância de um ou mais centros, funciona basicamente calculando a distância de um ou mais centros,
os centróides, até os pontos do dataset usado para o aprendizado não superviosinado da máquina, os centróides, até os pontos do dataset usado para o aprendizado não superviosinado da máquina, a clusterização então é feita em relação a estes centros, ou seja, se um ponto
a clusterização então é feita em relação a estes centros, ou seja, se um ponto X X está mais próximo está mais próximo
de um
Sempre ao iniciarmos o algoritimo definimos os números de centros que queremos gerar e como Sempre ao iniciarmos o algoritimo definimos os números de centros que queremos gerar e como nosso dataset ja é conhecido e sabemos que
nosso dataset ja é conhecido e sabemos que existem 5 clusters nele, então iremos inicializar com existem 5 clusters nele, então iremos inicializar com esteeste valor. Se fossemos utilizar outros datasets os quais não conhecemos o número de clusters, teríamos valor. Se fossemos utilizar outros datasets os quais não conhecemos o número de clusters, teríamos que fazer uma análise para poder descobrir o números de clusters que mais se adequa ao dataset que fazer uma análise para poder descobrir o números de clusters que mais se adequa ao dataset -mais a
mais a frente abordaremos como proceder nesses casos.frente abordaremos como proceder nesses casos.
kmeans
kmeans == KMeans(n_clusters KMeans(n_clusters = = 55, , ininitit == k-means++k-means++))
Na chamada do método do
Na chamada do método do K-means K-means vemos também, além do número de clusters, a maneira que vemos também, além do número de clusters, a maneira que
usaremos para gerar os
usaremos para gerar os centros. Existem três centros. Existem três maneiras disponibmaneiras disponibilizadas pelo pacote:ilizadas pelo pacote:
•• k-means+k-means++: +: Método mais utiliMétodo mais utilizado, sendo que na documentação não fica muito claro seuzado, sendo que na documentação não fica muito claro seu funcioname
funcionamento porém nto porém sabemos que este sabemos que este método facilita a método facilita a convconvergência do algoritmo;ergência do algoritmo;
•• random : Neste metodo os centros são gerados randomicamente dentro do espaço ocupado random : Neste metodo os centros são gerados randomicamente dentro do espaço ocupado pelo dataset;
pelo dataset;
•• Por último, podemos passar um ’ndarray’ com os pontos ondPor último, podemos passar um ’ndarray’ com os pontos onde desejamos que os centros sejame desejamos que os centros sejam inicialiados.
inicialiados.
A utilização dos centro
A utilização dos centros no algoritimo serve para fazer o agrupamento dos dadoss no algoritimo serve para fazer o agrupamento dos dados. . CentrosCentros iniciais são gerados de acordo com um dos métodos acima e a partir dele é feito um agrupamento iniciais são gerados de acordo com um dos métodos acima e a partir dele é feito um agrupamento inicial, sendo que o algoritimo usa a distância euclidiana para decidir a qual centro o ponto pertence inicial, sendo que o algoritimo usa a distância euclidiana para decidir a qual centro o ponto pertence - ele pega a menor distância. Após este primeiro agrupamento, os centróides são recalculados como - ele pega a menor distância. Após este primeiro agrupamento, os centróides são recalculados como
uma média dos pontos pertencentes a cada um dos clusters. Os dois processos se repetem
uma média dos pontos pertencentes a cada um dos clusters. Os dois processos se repetem n n vezes vezes
até que os centróides tenham convergido. É importante dizer que os centróides finais dependem dos até que os centróides tenham convergido. É importante dizer que os centróides finais dependem dos centróides iniciais, ou seja, podemos repetir o processo algumas vezes com
centróides iniciais, ou seja, podemos repetir o processo algumas vezes com diferentes centros paradiferentes centros para checar a
checar a robustrobustez do ez do agrupamentagrupamento.o.
Seguindo com nosso código, agora com um entendimento maior do método e com ele ja Seguindo com nosso código, agora com um entendimento maior do método e com ele ja incializado em nosso código
incializado em nosso código, vamos fazer com que a , vamos fazer com que a máquina aprenda a agrupar os pontos:máquina aprenda a agrupar os pontos:
kmeans
kmeans..fit(dataset)fit(dataset)
Pronto, agora temos nosso modelo K-means treinado e
Pronto, agora temos nosso modelo K-means treinado e pronto para uso, vamos ver se o pronto para uso, vamos ver se o resultadoresultado obtido pelo
obtido pelo k-means k-means é similar ao algoritimo anterior. Para isso vamos fazer uma plotagem. O código é similar ao algoritimo anterior. Para isso vamos fazer uma plotagem. O código
abaixo mostra uma forma diferente de
abaixo mostra uma forma diferente de manipulmanipular os ar os dados para plotardados para plotar, neste código usamos três, neste código usamos três variáv
variáveis, porém eis, porém vamos plotar apenas duas vamos plotar apenas duas para facilitar a para facilitar a visualizaçãvisualização:o:
data
data = = 00
X
X == npnp..array(dataset[array(dataset[AnnuAnnual al IncoIncome me (k$)(k$)])])
Y
Y == npnp..array(dataset[array(dataset[SpenSpending ding ScorScore e (1-(1-100)100)])])
X
X..shapeshape ==((-1-1,,11)) Y
Y..shapeshape ==((-1-1,,11)) data
data == npnp..concatenate((X,Y),axisconcatenate((X,Y),axis=1=1))
Agora podemos plotar. Agora podemos plotar.
plt
plt..scatter(data[:,scatter(data[:,00], ], datdata[:,a[:,11], ], ss = = 5050, , cc == kmeans kmeans..labels_)labels_) plt
plt..title(title(FinalFinal))
plt
22..2 2 O O AApprreennddiizzaaddo o NNãão o SSuuppeerrvviissiioonnaaddo o 1155 plt plt..ylabel(ylabel(YY)) plt plt..legend()legend() plt plt..show()show() Figura 2.5:
Figura 2.5: Resultado da clusterizaResultado da clusterizaçãoção
Podemos ver que os resultados são bem parecidos, isso nos diz que o agrupamento foi robusto Podemos ver que os resultados são bem parecidos, isso nos diz que o agrupamento foi robusto ao método utilizado. O método PAM que foi falado no começo da sessão é também conhecido omo ao método utilizado. O método PAM que foi falado no começo da sessão é também conhecido omo k-medoids. A única diferença entre os dois modelos é que o PAM utiliza a distância Manhattan para k-medoids. A única diferença entre os dois modelos é que o PAM utiliza a distância Manhattan para calcular as distâncias dos pontos até os centros, que nesse caso é a mediana geométrica dos pontos e calcular as distâncias dos pontos até os centros, que nesse caso é a mediana geométrica dos pontos e não a média (o
não a média (o centro é definido de modo a centro é definido de modo a minimizminimizar a ar a soma das distâncisoma das distâncias Manhattan de todasas Manhattan de todas as observações pertencentes àquele grupo até o ponto) - isso é feito para que o modelo seja menos as observações pertencentes àquele grupo até o ponto) - isso é feito para que o modelo seja menos sensível a outliers, ou seja, pontos que estão muito "fora da curva"e que podem criar empecilhos sensível a outliers, ou seja, pontos que estão muito "fora da curva"e que podem criar empecilhos para se chegar em um
para se chegar em um bom resultado.bom resultado.
2.2.4
2.2.4
Principal Principal Components Components Analysis Analysis- PCA
- PCA
O método PCA é utilizado quando há a necessidade de se reduzir a quantidade de atributos de O método PCA é utilizado quando há a necessidade de se reduzir a quantidade de atributos de dados numéric
dados numéricos enquanto tenta-os enquanto tenta-se manter a se manter a estrutestrutura dos dados. ura dos dados. Podemos usar o PCA Podemos usar o PCA quandoquando trabalhamos com análise de genes diferencialmente expressos, onde a quantidade de dados é muito trabalhamos com análise de genes diferencialmente expressos, onde a quantidade de dados é muito grande e não queremos que ocorra a perda de informações, por exemplo. Podemos observar a figura grande e não queremos que ocorra a perda de informações, por exemplo. Podemos observar a figura abaixo, para uma visão mais geométrica do modelo
abaixo, para uma visão mais geométrica do modelo 2 2::
Figura 2.6:
Figura 2.6: Exemplo de utilização do PCA para diminuir o número de variáveis.Exemplo de utilização do PCA para diminuir o número de variáveis.
Intuitivamente, o método do PCA encontra as direções que os dados têm maior variação e Intuitivamente, o método do PCA encontra as direções que os dados têm maior variação e "reconstrói"as variáveis nessas direções. Na imagem acima, temos 3 variáveis, no entanto, "reconstrói"as variáveis nessas direções. Na imagem acima, temos 3 variáveis, no entanto, percebe-se que os dados têm grande parte de suas variações em apenas duas direções. Assim percebe-sendo, podemos se que os dados têm grande parte de suas variações em apenas duas direções. Assim sendo, podemos reconstruir as variáveis nas direções que explicam grande parte das variações nos dados. As duas reconstruir as variáveis nas direções que explicam grande parte das variações nos dados. As duas novas variáveis são independentes entre si e são calculadas a parte de combinações das três originais novas variáveis são independentes entre si e são calculadas a parte de combinações das três originais de modo a maximizar a variância desses dad
de modo a maximizar a variância desses dados. os. É importantÉ importante dizer que antes de se e dizer que antes de se realizarealizar or o PCA, é
PCA, é necenecessássário reescrio reescalaalar r os dados para que os dados para que todtodas as as as vavariávriáveis tenheis tenham a am a mesmmesma a escaescala. la. OO número de componentes (ou
número de componentes (ou variáveis novvariáveis novas) utilizados deve ser escolhido pelo as) utilizados deve ser escolhido pelo usuário de acordousuário de acordo com o quanto da variação pode ser explicada pelos novos componentes em relação às variáveis com o quanto da variação pode ser explicada pelos novos componentes em relação às variáveis originais. Mais detalhes podem ser acessados em
originais. Mais detalhes podem ser acessados em https://pt.wikipedia.org/wiki/Análise_ https://pt.wikipedia.org/wiki/Análise_ de_componentes_principais
de_componentes_principais..
2.2.5
2.2.5
Materiais compleme
Materiais complementares para
ntares para Aprendizado Não
Aprendizado Não Supervisionado
Supervisionado
Se você achou o material muito básico até aqui, sugiro que leia o capítulo
Se você achou o material muito básico até aqui, sugiro que leia o capítulo http://www.ee. http://www.ee. columbia.edu/~vittorio/UnsupervisedLearning.pdf
columbia.edu/~vittorio/UnsupervisedLearning.pdf. Outros materiais de apoio:. Outros materiais de apoio:
•• https://medium.com/machine-learning-for-humans/unsupervised-learning-f45587588294 https://medium.com/machine-learning-for-humans/unsupervised-learning-f45587588294
•• https://www.youtube.com/playlist?list=PL2Wzg8U7YXS9HjwRCy_1kcAMHLFUoV9tu https://www.youtube.com/playlist?list=PL2Wzg8U7YXS9HjwRCy_1kcAMHLFUoV9tu
•• http://stanford.edu/~cpiech/cs221/handouts/kmeans.html http://stanford.edu/~cpiech/cs221/handouts/kmeans.html
•• https://www.cs.utah.edu/~piyush/teaching/4-10-print.pdf https://www.cs.utah.edu/~piyush/teaching/4-10-print.pdf
•• http://aquilesburlamaqui.wdfiles.com/local--files/logica-aplicada-a-co http://aquilesburlamaqui.wdfiles.com/local--files/logica-aplicada-a-co mputacao/ mputacao/ texto_fuzzy.pdf texto_fuzzy.pdf •• https://www.analyticsvidhya.com/blog/2016/03/practical-guide-principal-component-analy https://www.analyticsvidhya.com/blog/2016/03/practical-guide-principal-component-analy •• https://www.toptal.com/machine-learning/clustering-algorithms https://www.toptal.com/machine-learning/clustering-algorithms •• http://www.teses.usp.br/teses/disponiveis/55/55134/tde-19082004-092311/ http://www.teses.usp.br/teses/disponiveis/55/55134/tde-19082004-092311/..
2.3
2.3
O
O Aprendizad
Aprendizado
o Supervisionado
Supervisionado
Neste tipo de
Neste tipo de aprendizagem o algoritmo observa inúmeros exemplos de entrada, ou seja, aprendizagem o algoritmo observa inúmeros exemplos de entrada, ou seja, observaobserva o histórico ou característica dominante desses dados e cria um modelo que prevê sua saída, como se o histórico ou característica dominante desses dados e cria um modelo que prevê sua saída, como se existisse um professor para ensiná-la. A máquina precisa ter muitos exemplos e utilizar os critérios e existisse um professor para ensiná-la. A máquina precisa ter muitos exemplos e utilizar os critérios e
22..3 3 O O AApprreennddiizzaaddo o SSuuppeerrvviissiioonnaaddo o 1177
informações corretas para fazer boas
informações corretas para fazer boas predições com os novos dados. Quando falamos de predições com os novos dados. Quando falamos de aprendizadoaprendizado supervi
supervisionadsionado, o, temos dois tipos temos dois tipos principrincipais de pais de objetiobjetivos: vos: (i) prever resultados com significados(i) prever resultados com significados quantitativos, que dá origem ao problema de
quantitativos, que dá origem ao problema de regressão regressão, e (ii) prever resultados com significados, e (ii) prever resultados com significados
qualitativos, ou seja, de se classificar um novo indivíduo em classes pré-existentes nos dados, que qualitativos, ou seja, de se classificar um novo indivíduo em classes pré-existentes nos dados, que dá origem ao problema da
dá origem ao problema da classificação classificação. Dois métodos que podem ser usados tanto para resolver. Dois métodos que podem ser usados tanto para resolver
problemas de regressão quanto de classificação são as Árvores de Decisão e Floresta Aleatória problemas de regressão quanto de classificação são as Árvores de Decisão e Floresta Aleatória (Random Forest), por exemplo.
(Random Forest), por exemplo.
2.3.1
2.3.1
Introdução
Introdução às Árvores
às Árvores de Decis
de Decisão
ão
Árvores de Decisão para Classificação ou Regressão são métodos que particionam os dados e Árvores de Decisão para Classificação ou Regressão são métodos que particionam os dados e realizam predições condicionais às partições geradas.
realizam predições condicionais às partições geradas. TTal contexto é empregado dentro da Mineraçãoal contexto é empregado dentro da Mineração de Dados
-de Dados - Data Mining Data Mining. Nas Árvores de Decisão, o primeiro nó da árvore é sempre o atributo. Nas Árvores de Decisão, o primeiro nó da árvore é sempre o atributo
mais importante, e os menos importantes são mostrados nos outros nós. Ao escolher e apresentar os mais importante, e os menos importantes são mostrados nos outros nós. Ao escolher e apresentar os atributos em ordem de importância, as Árvores de Decisão permitem aos usuários conhecer quais atributos em ordem de importância, as Árvores de Decisão permitem aos usuários conhecer quais fatores são os mais importantes em seus trabalhos
fatores são os mais importantes em seus trabalhos 3 3.. A vantagem principal das Árvores de Decisão é A vantagem principal das Árvores de Decisão é
a tomada de decisões levando em consideração os atributos mais relevantes, além de compreensíveis a tomada de decisões levando em consideração os atributos mais relevantes, além de compreensíveis para a maioria das pessoas
para a maioria das pessoas 4 4..
O computador não tem a capacidade de reconhecer padrões óbvios, como um ser humano. Esta O computador não tem a capacidade de reconhecer padrões óbvios, como um ser humano. Esta situação tem gerado demandas por novas técnicas e ferramentas que, com eficiência, transformem os situação tem gerado demandas por novas técnicas e ferramentas que, com eficiência, transformem os dados armazenados e processados em conhecimento
dados armazenados e processados em conhecimento 5 5.. As Árvores de Decisão são representações As Árvores de Decisão são representações
simples do conhecimento e um meio eficiente de construir classificadores e regressores que predizem simples do conhecimento e um meio eficiente de construir classificadores e regressores que predizem classes/atributo quantitativo baseados nos valores de atributos de um conjunto de dados
classes/atributo quantitativo baseados nos valores de atributos de um conjunto de dados 66. Uma. Uma
Árvore de Decisão utiliza a estratégia chamada Dividir Para Conquistar, ou seja, um problema Árvore de Decisão utiliza a estratégia chamada Dividir Para Conquistar, ou seja, um problema comple
complexo é xo é decompodecomposto em sto em subprosubproblemas mais simples. blemas mais simples. RecursiRecursivamentvamente, e, a mesma a mesma estratestratégia éégia é aplicada a cada
aplicada a cada subproblsubproblemaema 7 7.. Uma árvore é composta por nós,
Uma árvore é composta por nós, sendo que os nós podem representar sendo que os nós podem representar tanto variáveis quantitatitanto variáveis quantitativasvas quanto qualitativas. Ramos são as subseções da árvore. Nó interno (ou nó de decisão) é um nó cujo quanto qualitativas. Ramos são as subseções da árvore. Nó interno (ou nó de decisão) é um nó cujo propósito é direcionar o objeto para o caminho apropriado por comparação de valores. Nó terminal propósito é direcionar o objeto para o caminho apropriado por comparação de valores. Nó terminal (também chamado de nó folha) é o nó que não possui “filhos”, sendo o último nó do segmento. O nó (também chamado de nó folha) é o nó que não possui “filhos”, sendo o último nó do segmento. O nó terminal, quando usamos árvores de decisão/regressão, indica o valor ou classe que será atribuída ao terminal, quando usamos árvores de decisão/regressão, indica o valor ou classe que será atribuída ao objeto que percorrer aquele caminho.
objeto que percorrer aquele caminho. Abaixo é demonstrado um exemplo da estrutura da Abaixo é demonstrado um exemplo da estrutura da árvoreárvore 8 8.. Existem vários algoritmos para criar uma
Existem vários algoritmos para criar uma árvore de decisão, sendo os mais comuns o árvore de decisão, sendo os mais comuns o ID3, CARTID3, CART,, C4.5, entre outros.
C4.5, entre outros. A biblioteca scikit-learn que estamos usando para os métodos deA biblioteca scikit-learn que estamos usando para os métodos de machine learning machine learning
implementa uma versão da árvore CART na API. Para
implementa uma versão da árvore CART na API. Para entender melhor como funciona uma árvore entender melhor como funciona uma árvore dede decisão ou regressão veja o seguinte vídeo
decisão ou regressão veja o seguinte vídeo https://www.youtube.com/watch?v=gYSWrUP4aB0 https://www.youtube.com/watch?v=gYSWrUP4aB0..
33Análisis de crédito bancario por medio de redes neuronales y árboles de decisión: una. Revista de Administração daAnálisis de crédito bancario por medio de redes neuronales y árboles de decisión: una. Revista de Administração da
Universida
Universidade de São de de São Paulo, p225 - 234.Paulo, p225 - 234.
44http://wwwp.coc.ufhttp://wwwp.coc.ufrj.br/teses/doutorarj.br/teses/doutorado/inter/2005/Teses/do/inter/2005/Teses/CARVALHO_DR_05_t_D_CARVALHO_DR_05_t_D_int.pdfint.pdf 55Data Mining and Knowledge Discovery: A Review of Issues and Multistrategy Approach. Data Mining and Knowledge Discovery: A Review of Issues and Multistrategy Approach. In: R. In: R. Michalski, I. Bratko,Michalski, I. Bratko,
and M. Kubat, Machine Learning and Data Mning:
and M. Kubat, Machine Learning and Data Mning: Methods and Applications (pp. p71-112). Methods and Applications (pp. p71-112). London: John Wiley andLondon: John Wiley and Sons.
Sons.
66O uso de árvores de decisão na descoberta de conhecimento na área da saúde. In: SEMANA ACADÊMICA, 2000.O uso de árvores de decisão na descoberta de conhecimento na área da saúde. In: SEMANA ACADÊMICA, 2000.
Rio Grande do Sul: Universidade Federal do Rio Grande do Sul, 2000. Rio Grande do Sul: Universidade Federal do Rio Grande do Sul, 2000.
77http://www.liacc.uhttp://www.liacc.up.pt/~jgama/Mestradp.pt/~jgama/Mestrado/ECD1/Arvores.htmlo/ECD1/Arvores.html 88https://dx.doi.org/10.5935/0103-104.20140016https://dx.doi.org/10.5935/0103-104.20140016
Figura 2.7:
Figura 2.7: Representação da estrutura de uma árvoreRepresentação da estrutura de uma árvore
2.3.2
2.3.2
Introdução
Introdução ao R
ao Random Fo
andom Forest
rest
Random Forest ou floresta aleatória é caracterizado por sua fácil utilização, flexibilidade e por Random Forest ou floresta aleatória é caracterizado por sua fácil utilização, flexibilidade e por conseguir trabalhar com poucos dados. Pode, assim como a árvore de decisão/regressão, ser usada conseguir trabalhar com poucos dados. Pode, assim como a árvore de decisão/regressão, ser usada para a regressão e para
para a regressão e para a classificaçãoa classificação 9 9..
Figura 2.8:
Figura 2.8: Representação de uma floresta aleatória com Representação de uma floresta aleatória com divdiversas árvoresersas árvores
O algoritmo de Random Forest consiste-se na criação e combinação de várias árvores de decisão O algoritmo de Random Forest consiste-se na criação e combinação de várias árvores de decisão para obter uma predição mais estável e com maior precisão
para obter uma predição mais estável e com maior precisão 10 10.. Ou seja, o algoritmo tenta encontrar Ou seja, o algoritmo tenta encontrar as melhores características em um subconjunto de características em uma grande diversidade de as melhores características em um subconjunto de características em uma grande diversidade de dados, o que
dados, o que resulta em um resulta em um modelo melhormodelo melhor..
O modelo de Random Forest consiste-se basicamente nos seguintes passos
O modelo de Random Forest consiste-se basicamente nos seguintes passos1111:: (i) definir o número (i) definir o número
de árvores que haverá na floresta; (ii) para cada uma das árvores aplicar uma amostragem com de árvores que haverá na floresta; (ii) para cada uma das árvores aplicar uma amostragem com
99https://cdn-images-1.medium.com/max/800/0*tG-IWcxL1jg7RkT0.pnghttps://cdn-images-1.medium.com/max/800/0*tG-IWcxL1jg7RkT0.png 10
10https://medium.com/machina-sapiens/o-algoritmo-da-floresta-aleatória-3545f6babdf8https://medium.com/machina-sapiens/o-algoritmo-da-floresta-aleatória-3545f6babdf8 11
22..3 3 O O AApprreennddiizzaaddo o SSuuppeerrvviissiioonnaaddo o 1199
reposição do tamanho da sua base de treinamento (processo
reposição do tamanho da sua base de treinamento (processo bootstraping bootstraping); (iii) escolher um número); (iii) escolher um número
m
m menor ou igual ao número de variáveis explicativas; (iv) para cada uma das árvores escolher menor ou igual ao número de variáveis explicativas; (iv) para cada uma das árvores escolher m
m ( (randomizingrandomizing) variáveis explicativas de forma aleatória para cada uma das árvores; (v) fazer as) variáveis explicativas de forma aleatória para cada uma das árvores; (v) fazer as
árvores crescerem até uma profundidade pré-definida ou até
árvores crescerem até uma profundidade pré-definida ou até quando não der mais; (vi) quando não der mais; (vi) levlevando emando em consideração todas as predições de um indivíduo
consideração todas as predições de um indivíduo jj, realizar uma votação (pela maioria) no caso da, realizar uma votação (pela maioria) no caso da
classificação ou uma média na caso da
classificação ou uma média na caso da regressão para obter a predição final.regressão para obter a predição final. Como visto anteriormente, as técnicas de
Como visto anteriormente, as técnicas de Machine Learning Machine Learning são divididas em aprendizado são divididas em aprendizado
supervisionado e não supervisionado. Dentro do aprendizado supervisionado podemos subdividir as supervisionado e não supervisionado. Dentro do aprendizado supervisionado podemos subdividir as abordagens em Classificação e
3. Aprendizado de Máquina Supervisionado
3. Aprendizado de Máquina Supervisionado
3.1
3.1
Modelos
Modelos de
de Regressão
Regressão
O problema de regressão na campo do Aprendizado de Máquina comporta diversas empreitadas O problema de regressão na campo do Aprendizado de Máquina comporta diversas empreitadas nas quais os
nas quais os objetiobjetivos compreendvos compreendem o em o cálculo de um cálculo de um valovalor de r de saída com saída com qualidqualidade quantitatade quantitativiva.a. Assim sendo, problemas de regressão no campo do
Assim sendo, problemas de regressão no campo do AprendizadAprendizado de o de Máquina comportaMáquina comportam situaçõesm situações como por exemplo de predição de preços de imóveis, salários de indivíduos, a quantidade de chuva como por exemplo de predição de preços de imóveis, salários de indivíduos, a quantidade de chuva em um determinado dia (em
em um determinado dia (em mm mm) ou mesmo o peso das pessoas dadas algumas pistas de seus estilos) ou mesmo o peso das pessoas dadas algumas pistas de seus estilos
de vida. Existem diversos métodos para a resolução de problemas de regressão e não existe um que de vida. Existem diversos métodos para a resolução de problemas de regressão e não existe um que sempre se sobressairá sobre os outros, portanto é muito importante sempre fazer uma comparação sempre se sobressairá sobre os outros, portanto é muito importante sempre fazer uma comparação dos resultados obtidos por diversos modelos.
dos resultados obtidos por diversos modelos.
3.1.1
3.1.1
Regressão
Regressão Linear
Linear
A Regressão Linear é um
A Regressão Linear é um modelo muito conhecido e usado no mundo da Estatística e modelo muito conhecido e usado no mundo da Estatística e do Machinedo Machine Learnin
Learning, pela g, pela sua simplicidsua simplicidade, facilidade de interpretação e ade, facilidade de interpretação e poder preditipoder preditivo. vo. Usamos modelosUsamos modelos de Regressão Linear quando queremos resolver problemas de regressão, ou seja, quando temos de Regressão Linear quando queremos resolver problemas de regressão, ou seja, quando temos umum conjunto de dados dotados de características e queremos prever que número real está associado conjunto de dados dotados de características e queremos prever que número real está associado àquelas características.Por exemplo, podemos querer prever qual o salário de uma pessoa dadas suas àquelas características.Por exemplo, podemos querer prever qual o salário de uma pessoa dadas suas característic
características pessoais e as pessoais e característicacaracterísticas do s do ambiente no qual as ambiente no qual as pessoas estão inseridas.pessoas estão inseridas. Especificação matemática
Especificação matemática Os modelos padrão de
Os modelos padrão de regressão linear geralmente são definidos da seguinte maneira:regressão linear geralmente são definidos da seguinte maneira:
y
yii = = b b++ww11 x x11ii + +ww22 x x22ii + +...++wwk k x xkiki + +ε ε ii = = b b++xxiiTTww = = y yˆˆii + +ε ε ii (3.1)(3.1)
Na equação acima,
Na equação acima, y yii é é comumente conhecida como variável explicadcomumente conhecida como variável explicada (poderia ser a (poderia ser o salário, poro salário, por
exemplo) do indivíduo
exemplo) do indivíduo i i; o conjunto; o conjunto { { x x ji ji}} é o conjunto de características observáveis do indivíduo é o conjunto de características observáveis do indivíduo i i,,
que é
é também conhecido como coeficiente linear ou intercepto
é também conhecido como coeficiente linear ou intercepto 1 1;; por fim, por fim, ˆˆ y y
ii é a previsão de é a previsão de y yii feita pelo feita pelo
modelo e
modelo e ε ε ii é é o erro cometido pelo modelo, ou seja, a o erro cometido pelo modelo, ou seja, a parte não explicada pelos dados.parte não explicada pelos dados. A utilização de variáveis categóricas como explicativas no modelo
A utilização de variáveis categóricas como explicativas no modelo A inclusão de vari
A inclusão de variáveis conáveis contínuas (e.g. tínuas (e.g. altura, idade) no modelaltura, idade) no modelo é direta, ou seja, o é direta, ou seja, não há anão há a necessidad
necessidade de mudar sua e de mudar sua forma antes de incluí-las na equação a ser estimada. forma antes de incluí-las na equação a ser estimada. No entanto, quandoNo entanto, quando queremos inclui
queremos incluir variáveis categór variáveis categóricas (e.g. ricas (e.g. nível de escolaridadenível de escolaridade, , gênero) como explicatigênero) como explicativas évas é necessá
necessário fazer algumas mudançrio fazer algumas mudanças. as. Por exmeploPor exmeplo, , suponhsuponha que temos a a que temos a variávariávelvel python python, que, que
mede a habilidade das pessoas na programação em Python, com as seguintes categorias "Iniciante", mede a habilidade das pessoas na programação em Python, com as seguintes categorias "Iniciante", "Intermediário"e "Avançado". Sendo que "Iniciante"é representado pelo número 0, "Intermediário"é "Intermediário"e "Avançado". Sendo que "Iniciante"é representado pelo número 0, "Intermediário"é representado pelo número 1 e "Avançado"é representado pelo número 2. O padrão a ser seguido representado pelo número 1 e "Avançado"é representado pelo número 2. O padrão a ser seguido é:
é: criar 3 novas variáveis (uma para cada categoria), sendo que estas assumem 0 criar 3 novas variáveis (uma para cada categoria), sendo que estas assumem 0 ou 1, dependendoou 1, dependendo das respostas, sendo que 0 é negativo e 1 positivo para tal categoria. Após a criação das variáveis, das respostas, sendo que 0 é negativo e 1 positivo para tal categoria. Após a criação das variáveis, deve-se excluir uma delas
deve-se excluir uma delas 2 2 e incluir as restantes no equação a e incluir as restantes no equação a ser estimada.ser estimada.
A interpretação dos parâmetros estimados A interpretação dos parâmetros estimados
Suponha que você tenha um conjunto de indivíduos na sua base de dados os quais não têm seus Suponha que você tenha um conjunto de indivíduos na sua base de dados os quais não têm seus salários expostos. Então você gostaria de predizer quais seriam os salários dessas pessoas com base salários expostos. Então você gostaria de predizer quais seriam os salários dessas pessoas com base nas variáveis disponív
nas variáveis disponíveis em sua base de eis em sua base de dados: você tem acesso dados: você tem acesso aos anos de experiência e o nível deaos anos de experiência e o nível de inglês das pessoas, sendo que essa última variável tem as categorias "Básico"ou 0, "Intermediário"ou inglês das pessoas, sendo que essa última variável tem as categorias "Básico"ou 0, "Intermediário"ou 1 e
1 e "A"Avançavançado"ou 2. do"ou 2. Pelo o Pelo o que foi explicado anterioque foi explicado anteriormente, pelo fato de rmente, pelo fato de a variável expera variável experiênciaiência ser contínua, podemos incluí-la diretamente na equação. Em relação à outra variável, é necessário ser contínua, podemos incluí-la diretamente na equação. Em relação à outra variável, é necessário transformá-la antes de colocá-la na equação. Vamos então transformá-la em 3 variáveis binárias e transformá-la antes de colocá-la na equação. Vamos então transformá-la em 3 variáveis binárias e excluir uma delas. No caso, optei por excluir a variável relativa à categoria "Iniciante"e a equação excluir uma delas. No caso, optei por excluir a variável relativa à categoria "Iniciante"e a equação estimada foi:
estimada foi:
salar
salarii = = 100 100++1515∗∗expexpii + +9090∗∗intermintermii + +150150∗∗avancavancii (3.2)(3.2)
Vamos primeiramente começar com o
Vamos primeiramente começar com o b b, que nesse caso assumiu o , que nesse caso assumiu o valovalor 100. r 100. Nosso modeloNosso modelo
estimado está nos dizendo que se
estimado está nos dizendo que se todas as variáveis forem nulas, ou seja, todas as variáveis forem nulas, ou seja, a pessoa não tem a pessoa não tem experiênciaexperiência e tem um nível iniciante de inglês, seu salário predito é 100. Os parâmetros estimados também me e tem um nível iniciante de inglês, seu salário predito é 100. Os parâmetros estimados também me dizem que a cada
dizem que a cada ano adicional de experiência, é esperado ano adicional de experiência, é esperado que os indivíduos tenham 15 de acréscimoque os indivíduos tenham 15 de acréscimo em seu salário e que, em relação às pessoas que tem nível iniciante de inglês, ter nível intermediário em seu salário e que, em relação às pessoas que tem nível iniciante de inglês, ter nível intermediário aumenta o salário esperado em 90 e ter nível avançado de inglês aumenta o salário em 150. Se por aumenta o salário esperado em 90 e ter nível avançado de inglês aumenta o salário em 150. Se por um acaso omitíssemos a variável
um acaso omitíssemos a variável interm interm e não a que denota o nível iniciante, a equação estimada e não a que denota o nível iniciante, a equação estimada
seria: seria:
salar
salarii = = 190 190++1515∗∗expexpii−−9090∗∗inicinicii + +6060∗∗avancavancii (3.3)(3.3)
Isso acontece porque agora mudou-se o benchmark: como a categoria de inglês intermediário Isso acontece porque agora mudou-se o benchmark: como a categoria de inglês intermediário foi omitida dessa vez, os outros parâmetros dev
foi omitida dessa vez, os outros parâmetros devem mudar para em mudar para se adaptarem à essa se adaptarem à essa mudança. mudança. SeSe
11É uma constante geralmente compartilhada por diversos indivíduos da base de dados e que, no contexto do MachineÉ uma constante geralmente compartilhada por diversos indivíduos da base de dados e que, no contexto do Machine
Learning, aumento o poder de predição do modelo. Learning, aumento o poder de predição do modelo.
22Para evitar o problema da Multicolinearidade:Para evitar o problema da Multicolinearidade: https://en.wikipediahttps://en.wikipedia.org/wiki/Multicoll.org/wiki/Multicollinearityinearity,, que que
causa instabilidade nas predições. causa instabilidade nas predições.