ipea
APRENDIZAGEM DE MÁQUINA USANDO PYTHON - 2/2017 - IPEA
(Última atualização: 04/12/2017)
Objetivo da disciplina:
- Ao final do curso o aluno deverá ser capaz de usar corretamente algumas das principais ferramentas de mineração de dados: regressão, classificação e clusterização; Python.
Pré-requisitos:
- Não há pré-requisitos. Algum conhecimento de estatística básica de cálculo pode ser útil mas não é necessário nem esperado.
Dia, horário e local:
- Terças e quintas, das 9:00 às 11:00, de 14/11 a 14/12, no laboratório de informática do 6o andar do edifício-sede do IPEA.
Comunicação:
- A comunicação com o professor e com os demais alunos será por meio de time no Slack: https://join.slack.com/t/ipea-ml/signup Você pode se juntar ao time informando seu email @ipea.gov.br
- Uma vez no time você pode postar dúvidas, respostas, pedaços de código, etc, no canal #general, que é visível a todos os participantes. Também é possível enviar mensagens privadas dentro do time.
- Não use o time p/ postagem de piadas, correntes, etc.
- O Slack é o único canal de comunicação com o professor. Emails provavelmente serão ignorados.
Avaliação:
- Trabalho final. O trabalho deverá consistir na aplicação de uma ou mais técnicas aprendidas no curso (classificação, clusterização, regressão) a problema concreto de interesse do aluno. O problema deverá ser previamente discutido com e aprovado pelo professor.
- O trabalho é individual.
- O trabalho será avaliado com base: i) na adequação do(s) método(s) empregados(s) ao problema; ii) no uso e interpretação corretos do(s) método(s); iii) na clareza e precisão ao descrever o problema e o(s) método(s) empregado(s).
- O trabalho final não precisa ser um paper publicável. A idéia é apenas o aluno demonstrar domínio de pelo menos uma das ferramentas aprendidas ao longo do curso. Não há necessidade de revisão de literatura ou discussão teórica. Um trabalho final de ~5 páginas é perfeitamente aceitável.
- O trabalho final pode ser em português ou em inglês.
- O trabalho final deverá ser postado no canal #general do time no Slack. Dessa forma todo mundo verá o trabalho de todo mundo.
- Além do trabalho final o aluno deverá postar também os scripts e datasets utilizados.
-
O prazo para postar o trabalho final é 23:59 do dia 15/12. Não serão aceitos trabalhos entregues fora do prazo.
- Plágio resultará na reprovação do aluno, no encaminhamento do caso às áreas competentes do IPEA e na inclusão do nome do aluno no Cheaters Hall.
Plano de aulas:
1. motivação: para que serve mineração de dados?
- aplicações
- recommender systems (Amazon, Netflix)
- detecção de fraude (cartões de crédito, cartéis)
- AI (Siri, carros autônomos)
- mercado financeiro (seleção de ativos)
- textos (atribuição de autoria, classificação)
- outline do curso (tópicos, material didático, avaliação)
- leitura obrigatória:
- slides
2. introdução à programação
- Python
- str, int, float
- condicionais (IF/ELSE)
- operadores (AND/OR/NOT)
- FOR loops
- listas, conjuntos, dicionários
- funções
- pacotes
- leitura opcional:
- slides
3. pré-processamento
- pandas
- problemas comuns:
- int/float como str
- formatos inconsistentes
- missing data
- etc
- leitura obrigatória:
- datasets usados na aula:
- slides
4. árvores de decisão & validação
- árvores de decisão simples
- random forest
- validação de modelos
- métricas de desempenho: precisão, recall, etc
- validação cruzada
- leitura obrigatória:
- leitura opcional:
- slides
5. árvores de decisão & validação II
6. máquinas de suporte vetorial & parameter tuning & seleção de modelos
7. clusterização
8. mineração de textos
- bag of words
- matriz de termos-freqüências
- normalização
- TF-IDF
- pré-processamento
- leitura obrigatória:
- slides
9. redução de dimensionalidade & extração de tópicos
- LSA
- LDA
- leitura opcional:
- slides
10. raspagem de sites
- com APIs
- Vagalume, Twitter (Streaming API vs Search API), Facebook (Graph API)
- diferença entre usar HTTP diretamente e usar pacotes
- metadados
- JSON
- limites por minuto
- ‘while True’ p/ contornar erros
- sem APIs
- HTML, CSS, JavaScript: o código-fonte da página
- BeautifulSoup
- Selenium
- captchas (http://www.deathbycaptcha.com)
- expressões regulares
- resultado é probabilístico (time.sleep(), try/catch)
- leitura obrigatória:
- webscraping with Selenium (partes 1, 2, 3, 4 e 5)
- raspa_vagalume.py
- raspa_twitter.py
- raspa_scielo.py
- raspa_scielo_2.py
- regex.py
11. regressão linear
- leitura obrigatória:
- leitura opcional:
- slides (regressão linear simples)
- slides (regressão linear múltipla)
- dataset usado na aula