mineracao
MINERAÇÃO DE DADOS - 2/2016 - IPOL/UnB
(Última atualização: 04/12/2016)
ATENÇÃO! Aula de 5/12 cancelada em virtude recente invasão do IPOL. O feedback sobre cada paper será enviado via Slack.
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; computação em nuvem; 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:
- Segundas-feiras, das 18:00 às 19:50, no laboratório de informática do Instituto de Ciência Política.
Matrícula:
- É a turma A da disciplina Seminário em Ciência Política, da pós-graduação (mestrado & doutorado) em ciência política da UnB. Há um número limitado de computadores disponíveis, portanto a participação de alunos de outros programas e de ouvintes depende de eventual sobra de vagas.
Comunicação:
- A comunicação com o professor e com os demais alunos será por meio de time no Slack: https://mineracao.slack.com/signup Você pode se juntar ao time informando seu email @unb.br ou @aluno.unb.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 aluno pode usar quaisquer linguagens de programação desde que sejam open source. Sugestões: Python (veremos no curso), R, Octave, Julia, Scala.
- Os scripts usados deverão ser disponibilizados publicamente no GitHub.
- Os datasets usados deverão ser disponibilizados publicamente em um dos seguintes repositórios: OpenICPSR, DataVerse Network, DataCite ou AcademicTorrents. Os datasets deverão estar em formato não-proprietário (nada de .dta, .sav, etc). Datasets que contêm microdados confidenciais devem ser mascarados (conversaremos sobre isso em sala).
- O trabalho final deverá ser disponibilizado no SocArXiv ou no arXiv. O link p/ o trabalho final deverá ser postado no canal #general do nosso time no Slack (não é p/ enviar o arquivo do trabalho - .pdf, .tex, .docx, etc).
-
O prazo para postar o link p/ o trabalho final é 23:59 do dia 2/12. Não serão aceitos trabalhos entregues fora do prazo.
- Importante: tanto no arXiv quanto no SocArXiv as submissões levam alguns dias p/ serem processadas, portanto é preciso submeter o trabalho ao repositório escolhido com atencedência, para que o link esteja disponível até as 23:59 do dia 2/12.
- A comunidade open source trabalhou duro - e de graça - p/ criar os pacotes Python, R, etc, que você usou no seu trabalho. Retribua citando esses pacotes na bibliografia.
- Plágio resultará na reprovação do aluno, no encaminhamento do caso às áreas competentes da UnB 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)
- mercado de trabalho (médias salariais, etc)
- outline do curso (tópicos, material didático, avaliação)
- leitura obrigatória:
- slides
2. regressão linear
- leitura obrigatória:
- leitura opcional:
- slides (regressão linear simples)
- slides (regressão linear múltipla)
- dataset usado na aula
3. 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
4. pré-processamento
- pandas
- problemas comuns:
- int/float como str
- formatos inconsistentes
- missing data
- etc
- leitura obrigatória:
- datasets usados na aula:
- slides
5. discussão dos projetos (primeira rodada)
- alunos apresentam suas idéias p/ trabalho final
6. á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
7. árvores de decisão & validação II
8. máquinas de suporte vetorial & parameter tuning & seleção de modelos
9. clusterização
10. discussão dos projetos (segunda rodada)
- alunos apresentam suas idéias p/ trabalho final
11. mineração de textos
- bag of words
- matriz de termos-freqüências
- normalização
- TF-IDF
- pré-processamento
- leitura obrigatória:
- slides
12. 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
13. computação em nuvem
- supercomputadores de universidade vs AWS, GCP, etc
- Amazon Web Services
- SSH e PuTTY
- comandos Linux básicos
- ls, cd, mkdir, rm, cp, mv, less, cat, nano, clear, echo, etc
- comandos Linux p/ processamento de texto
- shell scripts (#!/bin/bash)
- variáveis de ambiente
- sudo
- chmod
- ./configure, make, make install
14. redução de dimensionalidade & extração de tópicos
- LSA
- LDA
- leitura opcional:
- slides
15. discussão dos projetos (terceira rodada)
- alunos apresentam suas idéias p/ trabalho final
16. SQL
- bases relacionais
- chaves primárias
- SELECT
- WHERE
- ORDER BY
- COUNT, SUM, etc
- LIKE
- NOT
- IN
- CASE
- GROUP BY
- JOIN
- subqueries
- wildcards
- interfaces (pyODBC, RODBC, etc)
- leitura obrigatória:
- leitura opcional:
17. “appificando” seu modelo
- como transformar um trabalho estático (paper, dissertação, etc) num trabalho dinâmico (aplicativo, visualização, interativa, etc)
- Google App Engine
- Plotly
- Shiny