Projeto Integrado em Aprendizado de M´ aquina
Visualiza¸c˜ao
Geanderson Esteves dos Santos
Pontif´ıcia Universidade Cat´olica de Minas Gerais
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
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)
Politica de Atraso: Cada dia de atraso ser´a descontado 20% da
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)
Entreg´aveis Projeto (17/12)
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
T´opicos
1. Visualizando os Resultados 2. Ferramentas Avan¸cadas 3. Busca por Parˆametros 4. Interpretabilidade 5. Recomenda¸c˜oes 6. Projeto
Visualizando os Resultados
Introdu¸c˜ao
Visualiza¸c˜ao ´e muito importante para chamar aten¸c˜ao de interessados sobre o seu resultado
Ferramentas mais utilizadas em Python:
- Matplotlib - Seaborn - Plotly - ggplot - entre outras
Matplotlib
Ferramenta foi baseada no MATLAB [1]
Muito utilizada para visualiza¸c˜ao de dados em Python
Ao mesmo tempo, ´e a ferramenta menos chamativa visualmente Funciona muito bem quando combinada com outras ferramentas (e.g., seaborn)
Matplotlib
Exemplo no Matplotlib
i m p o r t m a t p l o t l i b . p y p l o t as plt plt .p l o t([1 , 2 , 3], [4 , 5 , 2]) plt . s h o w ()
Seaborn
´E uma biblioteca baseada no Matplotlib que sobretudo extende suas funcionalidades
A maior diferen¸ca seria que a interface ´e mais atrativa e informativa
Integra¸c˜ao com pandas dataframes
Parametriza¸c˜ao ´e mais intuitiva do que no matplotlib
Exemplo Seaborn
i m p o r t s e a b o r n as sns
i m p o r t m a t p l o t l i b . p y p l o t as plt i r i s = sns . l o a d _ d a t a s e t (" i r i s ") sns . s w a r m p l o t ( x=" s p e c i e s ",
y=" p e t a l _ l e n g t h ", d a t a=i r i s )
plt . s h o w ()
Exemplo Seaborn
Plotly
´E uma biblioteca que afirma ser ofront-end para aprendizado de m´aquina
Em fun¸c˜ao de utilizar o JavaScript no back, plotly permite uma interatividade com os gr´aficos
Suporta todos os gr´aficos que Seaborn e Matplotlib utilizam Completamente open-source e gratuita
Exemplo Plotly
i m p o r t p l o t l y . e x p r e s s as px df = px . d a t a . t i p s ()
fig = px . bar ( df , x=" sex ",
y=" t o t a l _ b i l l ", c o l o r=" t i m e ") fig . s h o w ()
Exemplo Plotly
Ferramentas Avan¸ cadas
MLflow
MLflow ´e uma plataforma open-source para gerenciar o ciclo de vida de um projeto de aprendizado de m´aquina
Possui as seguintes funcionalidades:
- Experimentos - Reprodutividade - Deploy
- Registro do modelo
MLflow Uso
O MLflow suporta muitas frameworks que usamos na pr´atica Seu uso consiste em basicamente logar os parˆametros e m´etricas para serem exibidos na interface
m l f l o w . l o g _ p a r a m (" a l p h a ", a l p h a )
m l f l o w . l o g _ p a r a m (" l 1 _ r a t i o ", l 1 _ r a t i o ) m l f l o w . l o g _ m e t r i c (" r m s e ", r m s e )
m l f l o w . l o g _ m e t r i c (" r2 ", r2 )
MLflow Funcionalidades
A interface do MLflow permite que o cientista de dados acompanhe e compare diversos experimentos
Muito ´util para variar parˆametros e visualizar os resultados em um UI limpa
https://mlflow.org/
Busca por Parˆ ametros
Hyper-parˆametros
Busca por hyper-parˆametros ´e uma tarefa necess´aria para qualquer modelo
Por meio dessa busca vocˆe pode“tunar” o seu modelo e melhorar a predi¸c˜ao
Existem v´arias t´ecnicas para fazer essa busca:
- Grid Search - Random Search - Naive Bayes
Optuna
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 estruturas b´asicas:
- objective: uma fun¸c˜ao que queremos otimizar - study: corresponde a uma tarefa de otimiza¸c˜ao https://optuna.org/
Optuna Exemplo
i m p o r t o p t u n a
def o b j e c t i v e ( t r i a l ):
x = t r i a l . s u g g e s t _ u n i f o r m (’ x ’, -10 , 10 ) r e t u r n ( x - 2 ) ** 2
s t u d y = o p t u n a . c r e a t e _ s t u d y ()
s t u d y . o p t i m i z e ( o b j e c t i v e , n _ t r i a l s=100 ) s t u d y . b e s t _ p a r a m s
Interpretabilidade
Contexto
No mundo atual ter um modelo de aprendizado de m´aquina que apresenta uma acur´acia elevada n˜ao ´e o suficiente
Al´em disso, precisamos tentar entender as raz˜oes que levaram o modelo a fazer determinadas predi¸c˜oes
Os modelos de aprendizado de m´aquina s˜ao naturalmente vistos como “caixas-pretas”
O nosso modelo ganha muito valor quando qualquer interessado pode raciocinar sobre os resultados
Aplica¸c˜ao
Depura¸c˜ao de modelo → Por que meu modelo cometeu esse erro?
Detectando problemas de ´etica→ Meu modelo discrimina?
Coopera¸c˜ao Humano-IA→ Como posso entender e confiar nas decis˜oes do modelo?
Conformidade regulamentar→ Meu modelo atende aos requisitos legais?
Aplicativos de alto risco→ sa´ude, finan¸cas, judici´ario, etc
Interpretabilidade
Uma ´area relativamente nova que vem ganhando destaque ´e exatamente a interpreta¸c˜ao de modelos
Existem diversas t´ecnicas conhecidas para interpretar modelos:
- SHAP - InterpretML - Lime
Todas essas ferramentas s˜ao open-source e dispon´ıveis no GitHub
SHAP
SHAP (SHapley Additive exPlanations) [2] ´e uma ferramenta que aplica conceitos de teoria dos jogos para interpretar qualquer modelo
Assim, ele conecta ´otima aloca¸c˜ao de cr´edito com explica¸c˜oes locais usando o modelo cl´assico conhecido comoShapley values O modelo ´e agn´ostico no sentido de teoricamente conseguir explicar qualquer modelo de aprendizado de m´aquina
Exemplo SHAP - Titanic
Exemplo SHAP - Sum´ario da Explica¸c˜ao
SHAP em Resumo
O SHAP ´e uma das ferramentas mais importantes de interpretabilidade que existem no mercado
O desenvolvimento da ferramenta continua em alta Funciona com diversos algoritmos de aprendizado:
- Logistic Regression - Random Forest - XGBoost - Entre outros
Exemplo de Ferramenta usando SHAP
https://bit.ly/335O4U9
Recomenda¸ c˜ oes
Aprendizado de M´aquina em Python
Al´em de versionamento e ambientes de desenvolvimento Ferramentas de Python para engenharia de software:
- Gerenciar dependˆencias e ambientes com o (poetry) - Testes unit´arios com o pytest
- Testes de cobertura com oCoverage.py - Automa¸c˜ao dos testes com o Nox - Linter com oFlake8 ouBlack
- Checagem de tipo commypye mytype - Documente o c´odigo comdocstrings
Poetry
Permite o gerenciamento completo de ambientes e dependˆencias V´arios comandos pr´e-estabelecidos para facilitar o uso da
ferramenta
Cria um ambiente de desenvolvimento automaticamente Arquivopyproject.tomlorquestra todas as dependˆencias https://python-poetry.org/docs/
Pytest
Framework para desenvolver testes unit´arios em Python
def inc ( x ): r e t u r n x + 1 def t e s t _ a n s w e r ():
a s s e r t inc ( 3 ) = = 5
https://docs.pytest.org/en/stable/
Coverage.py
Framework para medir cobertura de c´odigo em Python
A ferramenta monitora seu programa para mensurar as partes do c´odigo que n˜ao foram executadas
Assim, ele melhora a eficiˆencia dos seus testes
Importante tentar garantir 100% de cobertura em qualquer sistema de software
https://coverage.readthedocs.io/en/coverage-5.3/
MyPy
Mypy ´e uma ferramenta que permite configurar tipos em Python
def fib ( n ): a , b = 0 , 1 w h i l e a < n:
y i e l d a
a , b = b , a+b
def fib ( n: int) - > I t e r a t o r[ int ] : a , b = 0 , 1
w h i l e a < n:
y i e l d a
a , b = b , a+b
http://mypy-lang.org/
Mytype
Mytype checa automaticamente e infere tipos em c´odigo Python
def f ():
r e t u r n " P y C o n "
def g ():
r e t u r n f () + 2 0 1 9
# p y t y p e : l i n e 4 , in g : u n s u p p o r t e d o p e r a n d t y p e ( s ) for +: ’ str ’
# and ’ int ’ [ u n s u p p o r t e d - o p e r a n d s ]
https://github.com/google/pytype
Nox
Framework para automatizar testes em Python
Praticamente uma expans˜ao do cl´assico Tox do Python
Executa todos os seus testes e fornece detalhamento da execu¸c˜ao https://nox.thea.codes/en/stable/
Docstrings
Documenta¸c˜ao do c´odigo ´e muito importante para facilitar o entendimento do envolvidos
def c o m p l e x(r e a l=0 . 0 , i m a g=0 . 0 ):
""" F o r m a c o m p l e x n u m b e r . K e y w o r d a r g u m e n t s :
r e a l - - the r e a l p a r t ( d e f a u l t 0 . 0 ) i m a g - - the i m a g i n a r y p a r t ( d e f a u l t 0 . 0 )
"""
Dicas
Procure um baseline para seu problema e use-o para comparar os resultados
Gaste mais tempo na etapa de modelagem do dado do que propriamente na cria¸c˜ao de modelos
Tente interpretar seus resultados para serem ainda mais ´uteis para os interessados
Procure sempre se atualizar, afinal a todo momento novas ferramentas e t´ecnicas est˜ao sendo propostas na comunidade
Projeto
Apresenta¸c˜ao aula do dia 17/12
Eu vou escalar cada grupo em uma janela de tempo de 30 minutos O ideal ´e que vocˆe gaste pelo menos 20 minutos apresentando, e o restante do tempo vamos usar para discutir os resultados
Todos os envolvidos devem estar presentes para avalia¸c˜ao No entanto, vocˆe n˜ao precisa atender a aula, apenas esteja presente no seu hor´ario
Vamos definir o escalonamento juntos agora
Apresenta¸ c˜ oes
Referˆencias Bibliogr´aficas
J. D. Hunter.
Matplotlib: A 2d graphics environment.
Computing in Science & Engineering, 9(3):90–95, 2007.
S. M. Lundberg and S.-I. Lee.
A unified approach to interpreting model predictions.
InAnnual Conference on Neural Information Processing Systems (NIPS), 2017.