• Nenhum resultado encontrado

Projeto Integrado em Aprendizado de

N/A
N/A
Protected

Academic year: 2021

Share "Projeto Integrado em Aprendizado de"

Copied!
93
0
0

Texto

(1)

Projeto Integrado em Aprendizado de

aquina

Arquitetura

Geanderson Esteves dos Santos

(2)

Cronograma

17/09 - Conceitos Fundamentais

27/10 - Arquitetura + Ponto de Controle I

05/11 - Visualiza¸c˜ao + Ponto de Controle II 17/12 - Apresenta¸c˜ao Projeto Final

(3)

Distribui¸c˜ao de Pontos

15 - Ponto de Controle I (Aula 2) 15 - Ponto de Controle II (Aula 3) 20 - Apresenta¸c˜ao do Projeto (Aula 4) 20 - Parte Escrita (Aula 4)

30 - Entreg´aveis Projeto (Aula 4)

Pol´ıtica de Atraso: Cada dia de atraso ser´a descontado 20% da nota

(4)

Atividades Avaliativas

Ponto de Controle I (27/10) Parte Escrita Vis˜ao Geral

Ponto de Controle II (05/11)

Apresenta¸c˜ao Oral sobre a Prototipa¸c˜ao Apresenta¸c˜ao do Projeto (17/12) Parte Escrita (17/12)

(5)

Recursos Contato geanderson@dcc.ufmg.br Site da Disciplina http://homepages.dcc.ufmg.br/~geanderson/piam.html GitHub da Disciplina https://github.com/gesteves91/piam Canvas https://pucminas.instructure.com/courses/6899 4

(6)

T´opicos

1. Reportando os Resultados

2. Ferramentas para Aprendizado

3. An´alise Explorat´oria de Dados

4. Pipeline de Aprendizado de M´aquina

5. Ambiente de Desenvolvimento

6. Projeto do Curso

(7)
(8)

Breve Introdu¸c˜ao ao Tex

O formato tex foi proposto por Donald Knuth em 1978 Inicialmente, o tex foi proposto para facilitar a impress˜ao de equa¸c˜oes matem´aticas em sistemas computacionais

Considerado o sistema tipogr´afico mais sofisticado at´e os dias atuais

´

E um formato muito usado na academia, e n˜ao somente na computa¸c˜ao, mas em outras ´areas do conhecimento

(9)

Surgimento do Latex

A partir do tex, em 1984, surgiu o formato LATEX

Foi concebido como um sistema de software para prepara¸c˜ao de documentos

Ao contr´ario do formato .doc, onde “o que vocˆe ver ´e o que vocˆe tem”

No LATEX, vocˆe trabalha com o texto plano (“plain text”)

Muito utilizado devido a facilidade de usar templates pr´e-definidas Assim, evita a preocupa¸c˜ao com normas de escrita (ex. ABNT, APA, etc)

(10)

Comandos B´asicos do Latex Input: \documentclass{article} \begin{document} Hello World! \end{document} Output: Hello World!

(11)

Referˆencias para Utilizar Latex

Referˆencia Oficial:

https://www.latex-project.org/ Overleaf:

https://www.overleaf.com/project Tutorial:

https://www.latex-tutorial.com/

Sugiro fortemente utilizar o LATEX, se o seu projeto pode virar um

artigo ciˆent´ıfico

(12)
(13)

IPython

IPython ´e um terminal de linha de comando para computa¸c˜ao interativa

A vers˜ao baseada em navegadores ´e conhecida como interface de Notebook

− Suporte para visualiza¸c˜ao de dados interativos e uso de kits de ferramentas GUI

− Intera¸c˜ao interpret´avel e flex´ıvel − Ferramentas para computa¸c˜ao paralela

(14)

Jupyter Notebook

Uma ferramenta muito poderosa para desenvolver interativamente projetos de ciˆencia dos dados

O que ´e um notebook?

Um notebook integra c´odigo e sa´ıda em um ´unico documento que pode conter:

− Visualiza¸c˜ao − Narrativa de texto − Equa¸c˜oes matem´aticas − E outros tipos de m´ıdia

(15)

Jupyter Notebook

Uma ferramenta muito poderosa para desenvolver interativamente projetos de ciˆencia dos dados

O que ´e um notebook?

Um notebook integra c´odigo e sa´ıda em um ´unico documento que pode conter:

− Visualiza¸c˜ao − Narrativa de texto − Equa¸c˜oes matem´aticas − E outros tipos de m´ıdia

(16)

Jupyter Notebook

Notebooks s˜ao muito utilizados em todo processo de ciˆencia dos dados, mas principalmente no EDA

Jupyter foi pensado para as linguagens Julia, Python, e R ´

E um projeto open-source (como praticamente todos projetos nessa ´area)

(17)

Clientes Jupyter

Os clientes mais conhecidos s˜ao: − Jupyter Notebook (Local) − Jupyter Lab (Local)

− Google Colaboratory (Nuvem)

Vocˆe pode usar em editores conhecidos como: − PyCharm

− VS Code

(18)

Componentes do Jupyter

Um Jupyter Notebook possui duas estruturas principais: − C´elula: Um recipiente de texto ou c´odigo execut´avel que ´e

exibido em um notebook

− Kernel: O motor computacional que executa o c´odigo contido no notebook

(19)

C´elula de um Notebook

Uma c´elula pode conter duas entradas Python e Markdown: − Qualquer c´odigo em Python pode ser executado

interativamente em uma c´elula (.py)

− Qualquer escrita em Markdown pode ser executada em uma c´elula (.md)

A combina¸c˜ao dessas duas estruturas torna o notebook uma fonte muito rica de informa¸c˜ao

O notebook guarda a ordem de execu¸c˜ao das c´elulas

(20)

Markdown

Markdown ´e uma linguagem muito simples, f´acil de entender, e que formata texto puro

Sua sintaxe ´e muito parecida com HTML Guia oficial:

(21)

Jupyter Kernel

O Kernel ´e o respons´avel por executar as c´elulas ´

E poss´ıvel alterar o Kernel para suportar outros ambientes e at´e outras linguagens de programa¸c˜ao

O Kernel do Jupyter, atualmente, suporta mais de 100 linguagens de programa¸c˜ao

Um Kernel somente executa Notebooks considerados confi´aveis

(22)

Scikit-Learn

Extens˜ao do SciPy (Scientific Python) s˜ao conhecidas como Scikits Come¸cou com uma ideia no Google Summer Code (2007)

Caracter´ısticas do Scikit-Learn:

− Algoritmos supervisionados e n˜ao-supervisionados − Utiliza uma estrutura parecida com o Numpy − Python API interface

− ´E relativamente r´apida pois utiliza C no back-end − Open-source

(23)

Scikit-Learn Principais Funcionalidades

− Modelos lineares

− SVM, kNN, Bayes, ´Arvores de decis˜ao − Clusteriza¸c˜ao − Valida¸c˜ao Cruzada − Grid Search − Pipeline − Avalia¸c˜ao de Modelos − Transforma¸c˜ao do Dataset − etc 19

(24)
(25)

Scikit-Learn Estimator

Um estimador ´e um objeto que aprende do conjunto de dados Este objeto pode ser:

− Classificador − Regressor

− Algoritmo de Clusteriza¸c˜ao

− Transformador que extrai e filtra features relevantes

(26)

Scikit-Learn Uso B´asico

from sklearn import svm

estimator = svm.SVC(gamma=0.001) estimator.fit(X, y)

(27)
(28)

Pandas

Pandas ´e uma das ferramentas mais importantes para ciˆencia dos dados em Python

Uma biblioteca open-source, muito r´apida, e f´acil de usar Foi constru´ıda sobre a biblioteca NumPy

(29)

Pandas

Trˆes estruturas de dados: − series (1 dimens˜ao) − dataframe (2 dimens˜oes) − panel (3 dimens˜oes)

Prepara¸c˜ao de dados e limpeza de dados ´e um pouco lenta em Pandas

Crescimento muito elevado no comunidade a partir de 2011

(30)

Pandas Profiling

Gera um profiling de um dataframe

Basicamente, ele encapsula a fun¸c˜ao cl´assica de describe() do pandas

Adicionando novas funcionalidades e visualiza¸c˜ao

(31)

Pandas Profiling Essencial

O que podemos fazer com o Pandas Profiling: - Inferˆencia de tipo: detecta o tipo da coluna - Ocorrˆencia: valores ´unicos, valores faltantes

- Estat´ıstica descriptiva: m´edia, moda, desvio padr˜ao, etc. - Valores mais frequentes

- Histograma - Correla¸c˜oes - etc

(32)

Pandas Profiling (EDA)

https://github.com/gesteves91/piam/blob/master/ notebooks/01-pratica.ipynb

(33)
(34)

Pipelines

Geralmente, uma pipelinedescreve oumodelaum processo de aprendizado de m´aquina

− Escrever c´odigo

− Liberar os releases para produ¸c˜ao − Desempenhar extra¸c˜ao de dados − Treinar os modelos

(35)

Estrutura de um Pipeline Data EDA Cleaning Normalize Balance Training Evaluation 29

(36)

Escolha do Dado

Data

EDA

- An´alise explorat´oria - Distribui¸c˜oes - Correla¸c˜ao

- Come¸car a modelagem

(37)

Escolha da Estrutura e Fonte de Dados Data EDA Cleaning Normalize Balance

- Definir se ser´a criado um fluxo local ou cloud - Modelar os dados em algum banco de dados

Hadoop, SQL, NoSQL, etc ... - Organizar os dados para leitura - Disponibilizar os dados

- Os dados podem estar estruturados ou n˜ao

(38)

An´alise Explorat´oria e Modelagem Data EDA Cleaning Normalize Balance

• Utilizar alguma plataforma (ex. Colab) para importar os dados e explor´a-los

• Visualiza¸c˜ao de Dados

• Definir que tipo de an´alise ir˜ao utilizar − Algoritmo supervisionado

- Classifica¸c˜ao - Regress˜ao

− Algoritmo n˜ao-supervisionado - Clusteriza¸c˜ao

(39)

Aplica¸c˜ao de T´ecnicas de ML Data EDA Cleaning Normalize Balance Training Evaluation

− Aplicar um conjunto de t´ecnicas da classe escolhida

− Definir as m´etricas que mais fazem sentido - Classifica¸c˜ao: F1, Acur´acia, Precis˜ao,

Revoca¸c˜ao, Curva ROC

- Regress˜ao: R2, MSE, RMSE, MAE - Clusteriza¸c˜ao: An´alise de silhueta, Elbow − Definir quais m´etricas deveriam ser usadas:

e.g., ajustes de parˆametros, ajustes de entrada − Definir como entregar o modelo para os

interessados

(40)

Criar a Estrutura do Projeto Data EDA Cleaning Normalize Balance

− Classes abstratas e m´odulos estruturados

− Definir sistema de logs e como estrutur´a-los para o Cientista / Engenheiro de Dados poder dar manuten¸c˜ao

− Alertas: - Treino

- Leitura de dados - Acur´acia

− Definir onde os artefatos ser˜ao armazenados: - Modelo

- M´etricas - Encoding

(41)

Ferramentas para Pipelines

Duas ferramentas se destacam para cria¸c˜ao de Pipelines: − Scikit-Learn Pipeline https://scikit-learn.org/stable/modules/ generated/sklearn.pipeline.Pipeline.html − Kedro https://github.com/quantumblacklabs/kedro 35

(42)

Sklearn Pipeline

from sklearn.pipeline import Pipeline ... tfidf = TfidfVectorizer(max_features=max_features) lr = LogisticRegression() p = Pipeline([ ("tfidf", tfidf), ("lr", lr) ])

(43)

Pipeline

https://github.com/gesteves91/piam/blob/master/ notebooks/02-pratica.ipynb

(44)

Kedro

Kedro aplica conceitos de engenharia de software para ciˆencia dos dados

Utiliza para o workflow o conceito de Pipelines e Nodes Projeto open-source

(45)

Node do Kedro

from kedro.pipeline import node

def return_greeting(): return "Hello" return_greeting_node = node( func=return_greeting, inputs=None, outputs="my_salutation" ) 39

(46)

Pipeline do Kedro

from kedro.pipeline import Pipeline

# Assemble nodes into a pipeline

(47)
(48)

Conceito de Ambientes de Desenvolvimento

Muito importante para ciˆencia dos dados a medida que precisamos utilizar bibliotecas que n˜ao s˜ao padr˜ao do Python

Atualiza¸c˜oes podem causar falhas inesperadas no seu projeto N˜ao ´e poss´ıvel que uma instala¸c˜ao do Python seja utilizada para todas as aplica¸c˜oes em Python

(49)

Principais Ferramentas para Ambientes

Algumas ferramentas que podemos utilizar: − virtualenv

− conda − pipenv

− venv (nativo do Python) − Dentre Outras

(50)

Passo-a-Passo Ambientes de Desenvolvimento

Cria um ambiente chamado venv python3 -m venv venv

Ativa ambiente venv source venv/bin/activate

Salva os pacotes do ambiente venv pip3 freeze > requirements.txt

Instala os pacotes de um arquivo chamado requirements.txt pip3 install -r requirements.txt

(51)
(52)

Prototipa¸c˜ao do Projeto

Prototipa¸c˜ao com registro no GitHub

Apresentar o projeto e a estrutura definida em at´e 15 minutos

− Problema a ser abordado e objetivos do projeto − Classes ou fun¸c˜oes

− Estrutura do banco de dados − Descreva o fluxo do pipeline

− Algoritmos de aprendizado de m´aquina − Dificuldades e aprendizados

(53)

Ponto de Controle II

https://homepages.dcc.ufmg.br/~geanderson/listas/ piam/project.pdf

(54)
(55)

GitHub Princ´ıpios

GitHub ´e uma ferramenta baseada no Git, uma plataforma open-source de versionamento de c´odigo

Linus Torvalds ´e o criador do Git, assim como o Kernel do Linux

(56)

GitHub Conceitos

GitHub ´e uma plataforma de desenvolvimento colaborativo Possui concorrentes interessantes como o GitLab e BitBucket ´

E um conceito antigo na computa¸c˜ao, mas que ganhou mais for¸ca com desenvolvimento de software ´agil e colaborativo

N˜ao ´e recomendado fazer um projeto de ciˆencia de dados sem uso do GitHub (ou similares)

(57)

GitHub Conceitos

GitHub ´e uma plataforma de desenvolvimento colaborativo Possui concorrentes interessantes como o GitLab e BitBucket ´

E um conceito antigo na computa¸c˜ao, mas que ganhou mais for¸ca com desenvolvimento de software ´agil e colaborativo

N˜ao ´e recomendado fazer um projeto de ciˆencia de dados sem uso do GitHub (ou similares)

(58)

GitHub Repo

Um reposit´orio ´e um local onde todos os arquivos de um projeto s˜ao armazenados

Cada reposit´orio recebe um endere¸co ´unico (url)

Com este reposit´orio, podemos fazer diversas opera¸c˜oes: − Push

− Pull − Fork

(59)

GitHub Repo

(60)

GitHub Branch

Uma branch permite que vocˆe trabalhe em diversas vers˜oes do c´odigo

(61)

GitHub Commits

Um commit permite que vocˆe salve suas mudan¸cas no reposit´orio

Cada commit possui uma mensagem associada explicando porque a mudan¸ca ocorreu

A ideia seria que outros desenvolvedores possam entender a mudan¸ca

(62)

GitHub Pull Request

Uma Pull Request ´e o n´ucleo de uma colabora¸c˜ao no GitHub Quando vocˆe abre uma Pull Request, vocˆe est´a solicitando uma revis˜ao as suas mudan¸cas

Pull Requests mostram os diffs entre as suas mudan¸cas e o estado atual do reposit´orio

(63)

GitHub Merge

Uma Pull Request ´e “mergeada” no branch principal (geralmente master ou develop), ap´os as discuss˜oes sobre a mudan¸ca Depende do fluxo de desenvolvimento de cada empresa

Exemplo

Na Google uma PR precisa de no m´ınimo duas revis˜oes para merge

(64)

GitHub Merge

Uma Pull Request ´e “mergeada” no branch principal (geralmente master ou develop), ap´os as discuss˜oes sobre a mudan¸ca Depende do fluxo de desenvolvimento de cada empresa

Exemplo

Na Google uma PR precisa de no m´ınimo duas revis˜oes para merge

(65)

GitHub Fork

Uma forma de contribuir para projetos no GitHub, seria por meio de um fork

Um fork permite que vocˆe fa¸ca uma c´opia pessoal de um projeto Depois de fazer as suas mudan¸cas, vocˆe pode fazer um Pull Request para o projeto original

Esse fluxo ´e a base do mundo open-source!

(66)

GitHub Fork

Uma forma de contribuir para projetos no GitHub, seria por meio de um fork

Um fork permite que vocˆe fa¸ca uma c´opia pessoal de um projeto Depois de fazer as suas mudan¸cas, vocˆe pode fazer um Pull Request para o projeto original

(67)

GitHub Issues

Uma issue ´e uma requisi¸c˜ao de mudan¸ca/melhoria de um projeto Geralmente, times de ciˆencia dos dados usam as issues para guiar o desenvolvimento de software

Muito dependente do fluxo da empresa

(68)

GitHub Aspecto Social

GitHub implementa aspectos de redes sociais com elevado sucesso Vocˆe pode por exemplo:

− Seguir e ser seguido por um desenvolvedor de software

− Watch um projeto que tenha interessa (i.e., visualizar as PRs) − Star um projeto que tenha interesse

(69)

GitHub Comandos B´asicos

Salva as mudan¸cas git commit

Mostra as branches git branch

Combina duas branches git merge

Atualiza a branch com o estado da branch remota git pull

Atualiza a branch remota com as mudan¸cas locais git push

(70)

GitHub Flow

1. Cria um branch

2. Adicione os commits 3. Abra uma Pull Request 4. Discuta e revise o c´odigo 5. Merge o c´odigo

(71)

GitHub Flow

1. Cria um branch

2. Adicione os commits

3. Abra uma Pull Request 4. Discuta e revise o c´odigo 5. Merge o c´odigo

6. Deploy o c´odigo

(72)

GitHub Flow

1. Cria um branch 2. Adicione os commits

3. Abra uma Pull Request

4. Discuta e revise o c´odigo 5. Merge o c´odigo

(73)

GitHub Flow

1. Cria um branch 2. Adicione os commits 3. Abra uma Pull Request

4. Discuta e revise o c´odigo

5. Merge o c´odigo 6. Deploy o c´odigo

(74)

GitHub Flow

1. Cria um branch 2. Adicione os commits 3. Abra uma Pull Request 4. Discuta e revise o c´odigo

5. Merge o c´odigo

(75)

GitHub Flow

1. Cria um branch 2. Adicione os commits 3. Abra uma Pull Request 4. Discuta e revise o c´odigo 5. Merge o c´odigo

6. Deploy o c´odigo

(76)

GitHub Tricks

Recomendado usar o terminal para interagir com o GitHub (curva de aprendizado muito grande)

UI do GitHub fornece quase todas as funcionalidades do terminal Problemas muito complexos podem ser melhor resolvidos com ferramentas

(77)

GitHub Documenta¸c˜ao

GitHub usa a linguagem de markdown para documentar reposit´orios

Markdown ´e uma linguagem muito f´acil de usar Usada no GitHub Gists e Jupyter notebooks

Altamente recomendado aprender a usar a linguagem markdown (curva de aprendizado pequena)

(78)

GitHub Links Recomendados

https://guides.github.com/

(79)
(80)

O que ´e Detec¸c˜ao de Anomalia?

Detec¸c˜ao de anomalia (ou detec¸c˜ao de outliers) ´e a identifica¸c˜ao de eventos ou observa¸c˜oes que n˜ao seguem um o padr˜ao esperado O objetivo ´e encontrar essas instˆancias, que s˜ao conhecidas como anomalias

Normalmente, aplicamos esse passo no pr´e-processamento do modelo

(81)

Detec¸c˜ao de Anomalia

(82)

Premisas de Detec¸c˜ao de Anomalias

Existem mais dados “normais” do que “anormais” em qualquer dataset

Dois padr˜oes mais conhecidos para detec¸c˜ao: − Met´odos Estat´ısticos

(83)

Met´odos Estat´ısticos para Detec¸c˜ao de Anomalias

Assume um modelo param´etrico que descreve a distribui¸c˜ao dos dados

Aplica um teste estat´ıstico que depende do: − Distribui¸c˜ao dos dados

− Parˆametro da distribui¸c˜ao (m´edia, variˆancia, etc.) − N´umero de anomalias esperadas (limite de confian¸ca)

(84)

Met´odos de Dist˜ancia para Detec¸c˜ao de Anomalias

Dados s˜ao representados como um vetor de features Trˆes aproxima¸c˜oes mais utilizadas:

− Vizinho mais pr´oximo − Densidade

− Cluster

Vantagem de ser n˜ao supervisionado Pesado computacionalmente

(85)

Biblioteca para Detec¸c˜ao de Anomalias

No Python, uma biblioteca muito utilizada ´e o PyOD Algoritmos implementados por padr˜ao no PyOD:

− auto encoder − iforest − knn − mcd − pca − etc https://pypi.org/project/pyod/ 67

(86)
(87)

Ferramenta de Estrutura¸c˜ao

Uma ferramenta que vem ganhando popularidade ´e o Cookiecutter Prop˜oe uma estrutura b´asica para projetos de aprendizado de m´aquina

Importante para projetos comerciais principalmente https:

//github.com/drivendata/cookiecutter-data-science/

(88)
(89)

Engenharia de Features

Uma das tarefas mais importantes durante o pr´e-processamento de qualquer dataset ´e a engenharia de features

Vocˆe pode, por exemplo, usar o conhecimento espec´ıfico (de especialistas) para guiar a engenharia features

No entanto, em muitos casos, o seu problema pode ser muito complexo, sendo muito dif´ıcil criar um modelo generaliz´avel Uma ferramenta que pode auxiliar nesse momento ´e o Feature Tools

https://www.featuretools.com/

(90)

Featuretools Uso

Os dataframes s˜ao conhecidos como entidades no Featuretools entities = {

"customers" : (customers_df, "customer_id"), "sessions" : (sessions_df, "session_id"),

"transactions" : (transactions_df, "transaction_id") }

(91)

Featuretools Uso

´

E preciso definir os relacionamentos entre as entidades relationships = [("sessions", "session_id",

"transactions", "session_id")]

Assim a estrutura de Deep Feature Synthesis pode criar features As novas features s˜ao baseadas em primitivos

Exemplo

m´edia, moda, soma, etc.

(92)
(93)

Referˆencias Bibliogr´aficas

F. Pedregosa, G. Varoquaux, A. Gramfort, V. Michel, B. Thirion, O. Grisel, M. Blondel, P. Prettenhofer, R. Weiss, V. Dubourg, J. Vanderplas, A. Passos, D. Cournapeau, M. Brucher, M. Perrot, and E. Duchesnay.

Scikit-learn: Machine learning in Python.

Journal of Machine Learning Research, 12:2825–2830, 2011.

Referências

Documentos relacionados

Este trabalho, seguindo o método Design Science Research, fez uma revisão da literatura, uma análise bibliométrica e o estudo de uma empresa para encontrar os elementos da

VUOLO, J.H. Fundamentos da Teoria de Erros, Edgard Blucher Ltda, São Paulo, 1992 YIN, R.K. Estudo de caso: planejamento e métodos, Bookman, Porto Alegre, 2005.. Quando a

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27

De acordo com o Instituto Ethos (2013), a GRI foi criada com o objetivo de aumentar o nível de qualidade dos relatórios de sustentabilidade. O conjunto de diretrizes e indicadores da

Com relação ao CEETEPS, o tema desta dissertação é interessante por se inserir no Programa de Educação de Jovens e Adultos (PROEJA), sob a tutela da Coordenação de

Optuna ´ e uma framework agn´ ostica para busca de parˆ ametros Agn´ ostica no sentido de ser usada em modelos de aprendizado de m´ aquina e aprendizado profundo. Possui duas

vi) A proposta de modelos estruturais para os parˆ ametros do modelo probabil´ıstico com a finalidade de representar rela¸c˜ oes entre as ca- racter´ısticas (vari´ aveis)

Cientistas de diversas disciplinas est˜ ao sendo confrontados com conjuntos enormes de dados: sequenciamento gen´ etico, grandes arquivos de textos, dados astronˆ omicos,