install.packages(c("mrl3", "tensorflow", "keras"))
Ementa
Apresentação
Este curso introduz um conjunto de ferramentas que nos permitem usar dados de diferentes formatos para responder questões substantivas sobre política. Com ênfase em aprendizado de máquina – i.e., modelos que aprendem a fazer generalizações a partir do reconhecimento de padrões em amostras –, seu objetivo principal é capacitar alunos(as) a aplicar noções de Ciência de Dados e de programação em problemas concretos de classificação, predição e descoberta, o que lhes permitirá construir aplicações como classificadores de texto e de imagem, detectores de outliers ou modelos flexíveis de MrP.
A abordagem do curso será principalmente prática. Na maior parte do tempo, estudaremos tópicos por meio da resolução de exercícios e da replicação de papers, dentro e fora de sala de aula. De início, após cobrirmos noções úteis de programação de revisarmos a aplicação de modelos de regressão, estudaremos os diferentes tipos de problemas em Ciência de Dados; tipos de aprendizagem e seus principais algoritmos; estratégias de validação e de tuning; e, finalmente, realizaremos projetos que servirão para testar conhecimentos adquiridos. Concluído este percurso, a expectativa é que alunos e alunas obtenham a experiência necessária para incorporar skills de Ciência de Dados em suas rotinas de pesquisa ou de trabalho.
Objetivos
São estes os principais objetivos de ensino do curso:
Desenvolver habilidades de programação. Embora este não seja um curso que ensinará programação diretamente – a como uma forma de aplicar aprendizado de máquina –, alunos e alunas terão a oportunidade de praticar a escrita de código para resolver problemas de pesquisa.
Aprender a conduzir projetos básicos de Ciência de Dados de ponta a ponta. Entre outros, alunos e alunas apreenderão a estruturar perguntas em Ciência de Dados, organizar dados necessários e definir estratégias para respondê-las – o que incluirá criar pipelines, estabelecer métricas de avaliação, validar e ajustar modelos e algoritmos, entre outros.
Estimular o trabalho colaborativo em pesquisa científica. Por conta da dinâmica do curso, que envolverá trabalhos em duplas e desenvolvimento de papers, alunos e alunas serão desafiados a identificar produções recentes na literatura internacional; e a redigir textos que os(as) ajudem a preparar teses, dissertações ou artigos para publicação.
Pré-requisitos
O curso pressupõe conhecimentos de estatística, modelos de regressão e análise de dados. Formalmente, o pré-requisito é já ter cursado a disciplina FLS 6183 Métodos Quantitativos II.
Também é esperado que alunos(as) tenham familiaridade com R
ou Python
. Como escolher entre as duas linguagens? Se você já trabalha com R
e seus interesses são acadêmicos, seguir com essa escolha é o melhor; por ser mais demandado no mercado e ser mais usado em áreas conexas, como a engenharia de dados, Python
pode ser interessante para quem deseja se qualificar profissionalmente, mas é necessário já ter um nível de programação para além do básico para conseguir acompanhar o curso. Em qualquer caso, recursos didáticos serão disponibilizados em ambas as linguagens, ainda que a minha capacidade de fornecer ajuda seja consideravelmente maior em R
.
Leituras
Embora tenhamos poucas leituras analíticas, manuais serão usados para cobrir a implementação de modelos e estudo de conceitos. São eles:
Logística
Nossas aulas terão dois blocos. No inicial e menor deles, teremos uma exposição dos temas abordados e discussão dos trabalhos de leitura indicada. Encerrada esta parte, teremos sessões nas quais alunas e alunos aplicarão conhecimentos vistos. Para facilitar essa parte, usaremos pair programming, prática que consiste no trabalho em duplas no qual há uma parte que principalmente escreve código e, a outra, o revisa e comenta em tempo real.
Avaliação
O aproveitamento no curso de cada estudante será avaliado de três formas: exercícios, que serão realizados dentro e fora de sala; dois pequenos projetos; e um working paper final. A nota final no curso será dada pela soma aritmética das notas de cada tarefa avaliativa.
Exercícios (15%)
Em cada aula teremos uma lista de exercícios para praticar o conteúdo visto. Estes serão apresentados em cada aula e deverão ser realizados em duplas seguindo o sistema de pair programming para serem entregues até a aula seguinte. A entrega pontual e regular dos exercícios e o esforço aplicado para resolvê-los serão os critérios de avaliação.
Projetos (35%)
Também teremos dois pequenos projetos que deverão ser entregues individualmente no formato de notebooks (feitos com Rmarkdown ou Jupyter). A ideia é que ambos os desafios não apenas testem conhecimentos, mas, também, ofereçam ideias de uso de aprendizado de máquina para pesquisas em Ciência Política. Nestes, a avaliação levará em conta a capacidade de aplicar o conhecimento visto ao longo do curso e a capacidade de cumprir os objetivos propostos.
Projeto 1 – Classificador de discursos presidenciais (15%)
No primeiro projeto, o objetivo será treinar um modelo de classificação de textos para identificar a autoria de uma amostra de discursos presidenciais no Brasil. Para tanto, será necessário pré-processar textos, transformá-los em bag of words e, finalmente, selecionar modelos mais adequados. Com o trabalho, deverá ser possível derivar probabilidades de um dado discurso ter sido proferido por cada um e cada uma dos presidentes brasileiros incluídos na amostra.
Projeto 2 – Classificador de imagens de satélite (20%)
No segundo projeto, que corresponderá a 20% da nota final do curso, extraíremos imagens de satélite de locais de votação georreferenciados no Brasil para, usando redes neurais convolucionais, os classificarmos em determinadas categorias. O resultado final deverá ser uma pipeline que permita gerar diferentes esquemas de classificações de imagens de satélite de locais de votação (ou de outras localidades georreferenciadas) no Brasil.
Working paper (50%)
Finalmente, os(as) alunos(as) deverão entregar um working paper a título de avaliação final. Este deverá aplicar algum dos métodos que veremos no curso e ter entre 10 e 15 páginas. Idealmente, será possível aproveitar essa oportunidade para rascunhar um capítulo de tese ou dissertação, ou um artigo para publicação futura. Para estimular o trabalho colaborativo, serão aceitos trabalhos finais realizados em dupla. Criatividade, aplicação correta de noções vistas no curso e estrutura dos textos (i.e., boas motivações, seções adequadas de metodologia e de resultados) serão avaliados.
Na última aula, alunos e alunas apresentarão suas ideias e resultados parciais para obterem feedback e tirar dúvidas. A datas de entrega da avaliação será combinada no decorrer do curso.
Política de Gênero
Em aulas de metodologia, homens frequentemente monopolizam a participação. Para evitar isso, seguiremos três protocolos neste curso: no uso de computadores nas atividades de pair programming, mulheres serão priorizadas; para intervir, é necessário estender a mão; quando mulheres falam, colegas não as interrompem.
Atendimento a Necessidades Especiais
Alunas(os) com quaisquer necessidades ou solicitações individuais não devem exitar em procurar auxílio, tanto por e-mail quanto pessoalmente.
Ferramentas
Para resolver tarefas e praticar em casa, certifique-se de ter as ferramentas que usaremos devidamente instaladas em seu computador ou notebook. Para quem usará R
, isso inclui tê-lo instalado e, também, o Rstudio. É possível encontrar tutoriais na internet cobrindo os passos necessários. Já para quem pretende usar Python
, minha recomendação é usar Python 3 e alguma IDE como VScode ou spyder para escrever e gerenciar scripts e repositórios.
Para além destes softwares, será necessário instalar algumas das libraries. Em Python
, usaremos principalmente o biblioteca Scikit-learn, que oferece um conjunto de ferramentas de pré-processamento, construção de pipelines, seleção e validação de modelos, para além uma ampla gama de algoritmos supervisionados e não-supervisionados; e a biblioteca Keras, que é uma suíte para a construção de modelos de deep learning via Tensorflow. A depender do seu sistema operacional e da disponibilidade de pré-requisitos em seu computador, ambas as bibliotecas podem retornar erros durante a instalação, caso no qual eu posso tentar ajudar em sala ou por e-mail. Também é recomendado utilizar um ambiente virtual antes de fazer qualquer coisa (aqui uma explicação).
Para instalar os pacotes que precisaremos, basta executar do terminal:
pip install --upgrade pip
pip install tensorflow scikit
Em R
, o equivalente mais próximo do Scikit-learn é a biblioteca mlr3, que também oferece um conjunto de ferramentas e adota princípios de programação orientada a objetos (discutiremos isso em aula). Keras e Tensorflow, por sua vez, já têm versões em R
. Para instalar todos os pacotes que usaremos, basta rodar o seguinte código no R
:
Isso feito, é preciso instalar o Tensorflow
propriamente dito, o que pode ser feito com:
library(tensorflow)
install_tensorflow()
Plano das Aulas
Aula 1 – Apresentação do curso
- Leituras sugeridas:
- Salganik (2019)
Aula 2 – Introdução à Ciência de Dados & Revisão de Programação
Aula 3 – Aprendizado Supervisionado: Classificação
Aula 4 – Aprendizado Supervisionado: Modelos Lineares
Aula 6 – Aprendizado Supervisionado: Modelos Não-Lineares
- Leituras:
- ITSL, Cap. 7