Programação
Ementa
Ementa da disciplina PMR3508 - 2019:
Aulas serão às terças e quartas (11:10-12:50) na sala A5 do prédio de Engenharia Mecânica/Mecatrônica/Naval.
1) Introdução ao curso
Material apresentado em aula:
Tarefa pedida para segunda aula:
1) Ler artigo "The unreasonable effectiveness of data". Não é preciso entregar nada; quem entregar (na terceira aula) texto com um parágrafo resumindo as principais ideias do artigo receberá alguma pontuação extra para a nota de trabalhos.
2) Examinar os dados na base adult, ou no UCI Repository, ou no Kaggle (não é preciso entregar nada).
2) Definições básicas
Material apresentado em aula:
Durante este bloco de aulas, estude o Capítulo 2 do livro An Introduction to Statistical Learning (autores: Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani), disponível em
3) Revisão - Teoria de probabilidades
Material apresentado em aula:
Este bloco de transparências contém muito mais material do que abordado em aula e do que necessário para o curso: apenas as partes com título em amarelo são necessárias; as partes com título em branco oferecem material extra.
Ao fim desse bloco, estude o Capítulo 1 do livro Bayesian Reasoning and Machine Learning (autor: David Barber), disponível em
http://www.cs.ucl.ac.uk/staff/d.barber/brml/
Trabalho 1: Bases Adult e HouseholdIncome
1) Faça seu cadastro no Kaggle, seguindo as instruções a seguir:
Conforme indicado nessas instruções, você precisará de um código Hash, que está no seguinte arquivo (faça uma busca pelo seu número USP):
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5863999/hashes.pdf
2) Estude o processamento da base Adult (apresentado em aula) a partir do seguinte Jupyter notebook:
3) Analise a base Adult, produzindo um classificador para variável Target (ou seja, <=50K ou >50K). O classificador deve ser kNN com seleção de k por validação cruzada, e com cálculo do erro empírico na base de teste.
A base Adult está na seguinte área do Kaggle:
https://www.kaggle.com/c/adult-pmr3508
A base Adult também pode ser encontrada no UCI Repository; você pode usar a fonte que achar melhor.
Entregue um kernel produzindo como Jupyter notebook). Você pode se inspirar nas soluções apresentadas por colegas que fizeram a disciplinas anteriormente e que estão em:
https://www.kaggle.com/t/38c71b3b383c42af8a9ecfb2f269aae8
Na área do Kaggle você encontrará os dados e instruções sobre como submeter seu material via Kaggle; tente fazer isso e se você tiver dificuldades (em alguns casos o Kaggle tem travado na hora de inserir notebooks), envie por email seu notebook para o professor da disciplina (fgcozman@usp.br).Algumas dicas sobre como inserir seu notebook no Kaggle podem ser encontradas em
https://www.kaggle.com/daquisu/utilizando-notebooks-no-kaggle
4) Atividade extra: analise a base HouseholdIncome, em
https://www.kaggle.com/c/costa-rican-household-poverty-prediction/data
Produza um classificador para a variável Target (ou seja, extreme poverty / moderate poverty / vulnerable holseholds / non vulnerable holseholds). O classificador deve ser kNN com seleção de k por validação cruzada, reportando a acurácia obtida por validação cruzada. Insira sua solução no final do mesmo notebook submetido com a base Adult, indicando a análise e acurária via validação cruzada ou leaderboard (note que os dados de teste do kaggle não contém a variável Target pois a única maneira de acessar sua acurácia nos dados de teste é via leaderboard...). Note que nessa atividade é preciso se referir a household e não por indivíduos; use a função groupby do Python - entre as features tem chaves que identificam núcleos familiares individualmente.
Esta atividade não é obrigatória e levará a pontos extras.
5) Entrega: até 27/9/2019.
4) Naive Bayes: inferência e estimação
Material apresentado em aula:
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5864000/bn.pdf
Ao fim desse bloco, estude o Capítulo 10 do livro Bayesian Reasoning and Machine Learning (autor: David Barber), disponível em
http://www.cs.ucl.ac.uk/staff/d.barber/brml/
6) Redes neurais e aprendizado profundo
Material apresentado em aula pela Profa. Anna Reali:
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5864004/2019-ANN-DL.pdf
Lista de Exercícios 1
Lista com exercícios sobre conceitos fundamentais, kNN e Naive Bayes, e avaliação de classificadores:
12) Aprendizado por reforço
Material apresentado em aula pela Profa. Anna Reali:
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5903260/RL-1aula.pdf
14) Interpretabilidade
Material apresentado em aula:
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5903261/interp.pdf
Trabalho 2: Bases Adult e CaliforniaIncome
1) Este trabalho consiste em testar pelo menos três técnicas de classificação na base Adult, para verificar até onde é possível chegar em termos de acurácia (ou de outras métricas de desempenho que você julgar relevantes) e considerando aspectos como dificuldade de gerar o classificador, dificuldade de interpretar o funcionamento do classificador, tempo de processamento. Selecione classificadores dentre os vistos em aula ou variantes (por exemplo, há vários tipos de redes neurais, e vários tipos de algoritmos de boosting).
2) Assim como no primeiro trabalho, a base Adult está na seguinte área do Kaggle:
https://www.kaggle.com/c/adult-pmr3508
A base Adult também pode ser encontrada no UCI Repository; você pode usar a fonte que achar melhor.
3) Use os dados e crie um notebook Jupyter com seus testes e análises. Apresente acurácia e outras métricas; ao final do processo escreva um texto (no próprio notebook) conciso e direto, analisando os vários classificadores testados em vista dos resultados.
4) Insira o seu notebook no Kaggle usando como nome
PMR3508-2019-2-HASH
onde HASH é o mesmo código de hash usado no primeiro trabalho.
Em alguns casos o Kaggle tem travado na hora de inserir notebooks; se isso acontecer envie por email seu notebook para o professor da disciplina (fgcozman@usp.br).
4) Atividade extra: analise a base CaliforniaHousing na página do Kaggle:
https://www.kaggle.com/t/f21dfa0f3e0c421f8cc3692592ae66fa
Produza um regressor para prever o preço de uma casa, conforme instruções nessa página do Kaggle. Escolha a técnica da sua preferência, apresentando treino e teste no próprio notebook (após a discussão sobre a base Adult).
Esta atividade não é obrigatória e levará a pontos extras.
5) Entrega: até 8/12/2019.
Lista de Exercícios 2
Lista com exercícios sobre redes neurais, regressão (linear, ridge, lasso), regressão logística e LDA, árvores de classificação/regressão, random forests, boosting, SVMs, aprendizado não-supervisionado (PCA, agrupamento):https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5864013/lista2.pdf
Exercício Prático Extra: Deteção de Spam
1) Analise a base Spambase na página do Kaggle:
https://www.kaggle.com/t/dfcbe9741d8d462cbe99aeda2c0bc932
2) Produza um classificador de spam/ham a partir da Spambase, conforme instruções nessa página do Kaggle.
3) Este é um exercício extra, que não precisa ser entregue (apenas para treinar).
Exercício Prático Extra: MNIST
Este exercício lida com a base MNIST; veja a descrição da atividade em
https://www.kaggle.com/t/
cb72deee4f6b49e7a5872156e9b21b e9 Em resumo, você deverá criar um classificador de imagens com uma versão modificada da base MNIST. Lembre-se do tutorial sobre Keras:
https://edisciplinas.usp.br/pluginfile.php/4821094/course/section/5864011/Keras%20Tutorial.ipynb
Este é um exercício extra, que não precisa ser entregue (apenas para treinar).