Aprendizado de Máquina (CC)
2019.1
Sumário
Dados gerais sobre a disciplina
Código: QXD0176
Turma: Optativa
Turno: Manhã
Carga Horária: 64h
Local: Bloco 3 - Sala 2 (Segunda) / Bloco 1 - Lab 4 (Terça)
Horários: Segunda e Terça das 08:00h às 10:00h
Downloads
- Plano de Ensino ✓
- 00 - Apresentação da Disciplina ✓
- 01 - Introdução ao Aprendizado de Máquina ✓
- 02 - Redes Neurais (Perceptron / Adaline), Classificação ✓
- 03 - Medidas Estatísticas, Distribuições e Escalonamento de Features ✓
- 04 - Regressão Linear ✓
- 05 - Pre-processamento e Regularização ✓
- 06 - Validação / Split / Pipeline ✓
- 07 - Métricas para Classificação ✓
- 08 - k Vizinhos mais Próximos (kNN) ✓
- 09 - Medidas de Distância ✓
- 04 - Regressão Logística ✓
- 08 - Naive Bayes ✓
- 09 - SVM - Support Vector Machine ✓
- 12 - Árvores de decisão e técnicas derivadas como Bagging e Boosting ✓
- Material complementar muito bom: A Complete Tutorial on Tree Based Modeling from Scratch ✓
- 13 - Aprendizagem Não-Supervisionada: Clustering (k-Means, k-Means++, Clusterização Hierárquica, DBScan) ✓
Ainda reorganizando melhor slides abaixo:
- 02 - Aprendizado de Máquina - Visão Geral
- 04 - Regressão Logística
- 08 - Naive Bayes
- 09 - SVM - Support Vector Machine
- 10 - Neurônios Artificiais - Perceptron / Adaline - Redes Neurais
- 12 - Árvores de decisão e técnicas derivadas como Bagging e Boosting
- Material complementar muito bom: A Complete Tutorial on Tree Based Modeling from Scratch
- 13 - Aprendizagem Não-Supervisionada: Clustering (k-Means, k-Means++, Clusterização Hierárquica, DBScan)
- 14 - Redução de Dimensionalidade (PCA, LDA, Kernel PCA)
GitHub / Jupyter Notebooks da Disciplina e do projeto Ciência de Dados na Prática
Links importantes
- Normalization x Standardization (About Feature Scaling and Normalization)
- STAT 479 -- Machine Learning (Fall 2018) - Sebastian Raschka
- Why One-Hot Encode Data in Machine Learning? - Jason Brownlee
Datasets
- Pima Indians Diabetes Database (link alternativo no Kaggle)
- UCI Machine Learning Repository
- Kaggle Datasets
Vídeos / Cursos Online
- Vídeos do nosso projeto sobre Ciência de Dados na Prática
- In-depth introduction to machine learning in 15 hours of expert videos (EXCELENTE!!!)
- Machine Learning | Coursera (Andrew Ng) (EXCELENTE!!!)
- Curso online gratuito de Machine Learning do Google
- Webinar Udacity - De aprendiz a mestre em Machine Learning com o brasileiro Gilberto Titericz, que foi e tornou a ser o Nº 1 no ranking do Kaggle.
Bibliografia Básica
- RASCHKA, Sebastian; MIRJALILI, Vahid. Python Machine Learning, 2nd Ed. Packt Publishing, 2017. (EXCELENTE!!!)
- GÉRON, Aurélien; Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. 1st Ed. O’Reilly, 2017.
- BURKOV, Andriy. The Hundred-Page Machine Learning Book. 2019.
- JAMES, G., WITTEN, D., HASTIE, T., & TIBSHIRANI, R. (2013). An introduction to statistical learning: with applications in R. Corrected edition. New York: Springer.
- HASTIE, Trevor; TIBSHIRANI, Robert; FRIEDMAN, Jerome. The elements of statistical learning: data mining, inference, and prediction. 2nd ed. New York, NY: Springer, 2009. xxii, 745 p. (Springer series in statistics). ISBN 9780387848570 (enc.).
- RUSSELL, Stuart J.; NORVIG, Peter. Inteligência artificial. Rio de Janeiro: Elsevier, Campus, 2004. 1021 p. ISBN 8535211772
- BISHOP, Christopher M. Pattern Recognition and Machine Learning. 1 ed. Springer, 2007. ISBN: 0387310738
- THEODORIDIS, Sergios; KOUTROUMBAS, Konstantinos. Pattern recognition. 4 ed. Academic Press, 2008. ISBN 1597492728
- COPPIN, Ben. Inteligência artificial. Rio de Janeiro, RJ: LTC, 2010. xxv 636 p. ISBN 9788521617297
- HAYKIN, Simon S. Redes neurais: princípios e prática. 2. ed. Porto Alegre: Bookman, 2001. xvii, 900 p. ISBN 0132733501 (broch).
Bibliografia Complementar
- MOLNAR, Christoph. Interpretable Machine Learning: A Guide for Making Black Box Models Explainable. Leanpub, 2019.
- DOWNEY, Allen B. Think Stats. 2nd Ed. O’Reilly, 2014.
- Excelente livro disponível gratuitamente em versão online e PDF: https://greenteapress.com/wp/think-stats-2e/
- MURPHY, Kevin P. Machine Learning: a Probabilistic Perspective. MIT Press, 2012. ISBN 0262018020
- DUDA, Richard O.; HART, Peter E.; STORK, David G. Pattern classification. 2nd. ed. New York: John Wiley, c2001.. xx, 654 p. ISBN 0471056693 (enc.).
- SCHALKOFF, R. Pattern Recognition: Statistical, Structural and Neural Approaches. John Wiley and Sons, 1992. ISBN 9780471529743
- CRISTIANINI, Nello; SHAEW-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods Cambridge University Press, 2000. ISBN-10: 0521780195. ISBN-13: 9780521780193.
- LARSON, Ron; FARBER, Betsy. Estatística aplicada. 4. ed. São Paulo, SP: Pearson Prentice Hall, 2010. xiv,637 p. ISBN 9788576053729 (broch.).
- CORMEN, Thomas H. RIVEST, Ronald L.; LEISERSON, Charles E. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 2002. xvii , 916 p. ISBN: 8535209263 (-ed 2012)
- DASGUPTA, Sanjoy; PAPADIMITRIOU, Christos H.; VAZIRANI, Umesh. Algoritmos. São Paulo, SP: McGraw-Hill, 2009. xiv, 320 p.
- HAIR, Joseph F. et al. Análise multivariada de dados. 6. ed. Porto Alegre: Bookman, 2009. 688 p. ISBN 9788577804023 (enc.).
- KLEINBERG, Jon; TARDOS, Éva. Algorithm design. Boston: Pearson/Addison Wesley, c2006. 838 p. :
Listas de Exercícios (a entrega deverá ser realizada pelo SIPPA)
Importante: enviar as resoluções das Listas, que precisem de resolução via programação, no formato .ipynb. Compacte e envie em um único arquivo todos os arquivos necessários para a execução completa do seu ipynb, inclusive os dados. Não enviar em formato PDF, DOC, TXT.
Lista de Exercícios 01 (prazo final para entrega: 25/02/2019 - segunda-feira )
- O que é Aprendizado de Máquina e para que serve?
- O que são dados rotulados (labels) e para que servem?
- Quais os problemas mais comuns de aprendizado supervisionado?
- Quais os problemas mais comuns de aprendizado não-supervisionado?
- Que tipo de algoritmo de Machine Learning (ML) você usaria para:
- a) Permitir um robô andar em diversos tipos de terreno?
- b) Segmentar clientes em múltiplos grupos?
- O que é um sistema de aprendizado online? Quais suas vantagens e desvantagens?
- O que significa aprendizado out-of-core?
- Que tipo de aprendizado usa medidas de similaridade para fazer predições?
- Em um modelo de ML, qual a diferença entre parâmetros e hiper-parâmetros?
- O que são e qual a diferença entre Underfitting e Overfitting? O que fazer para solucionar cada um desses problemas?
- Para que servem: conjunto de treino, conjunto de validação e conjunto de teste?
- O que significa validação cruzada e qual a vantagem de usá-la ao invés de usar um conjunto de validação?
Lista de Exercícios 02 (prazo final para entrega: 10/03/2019 - domingo)
- Crie um documento do Jupyter Notebook criar um modelo preciso de classificação para o Iris Dataset.
- Baixe e carregue os dados.
- Faça uma breve análise dos dados.
- Separe parte dos dados para treino (70%) e parte para teste (30%).
- Crie um modelo de aprendizado de máquina usando algum algoritmo de classificação sobre os dados de treino.
- Determine a acurácia do modelo sobre os dados de treino.
- Determine a acurácia do modelo sobre os dados de teste.
- OBS: Fique a vontade para usar NumPy, Pandas e Scikit-Learn.
- Em caso de dúvida, há um exemplo completo a ser seguido e adaptado por você no seguinte link. Por favor, tente entender cada passo e adapte a solução para o que estamos pedindo nesta lista. Discutiremos toda a solução na próxima aula.
Lista de Exercícios 03 (prazo final para entrega: 19/03/2019 - terça)
- Crie um documento do Jupyter Notebook criar um modelo preciso de classificação para o Iris Dataset.
- Baixe e carregue os dados.
- Faça uma breve análise dos dados.
- Separe parte dos dados para treino (5%) e parte para teste (95%). Esta divisão não é usual, mas vai nos permitir algumas análises. Considere somente as classes Setosa e Virgínica.
- Crie modelos de aprendizado de máquina com diferentes hiper-parâmetros usando Perceptron e Adaline-GD (Adaline com Gradiente Descendente).
- Calcule a acurácia dos modelos gerados e mostre qual o melhor deles, considerando esssa métrica.
- Em caso de dúvida, há um exemplo melhorado em relação à prática que realizamos em nossa última aula no laboratório. Esse exemplo está disponível no seguinte link. Por favor, tente entender cada passo e adapte a solução para o que estamos pedindo nesta lista.
Lista de Exercícios 04 (prazo final para entrega: 25/03/2019 - segunda)
Nesta lista vamos fazer a predição para saber se um tumor de mama é benigno ou maligno a partir do seguinte dataset "Wisconsin Diagnostic Breast Cancer (WDBC)". Informações detalhadas sobre o dataset podem ser obtidas no seguinte link.
Use 70% dos dados para treino e outros 30% para teste.
Crie modelos de aprendizado de máquina usando os seguintes algoritmos:
- Perceptron (mesmo usado na Lista 03)
- Adaline com Gradiente Descendente (mesmo usado na Lista 03)
- Adaline com Gradiente Descentente Estocástico
- Adaline com Gradiente Descendente Estocástico usando mini-batches de 20 elementos (mesmo do item anterior, mas agora com mini-batch).
- Dica: Use partial_fit (aprendizado online) para fazer o aprendizado a cada 20 amostras do dataset de treino (mini-batch).
- Perceptron do Scikit Learn
- Stochastic Gradient Descent (SGD) do Scikit Learn
- Logistic Regression do Scikit Learn
Compare os resultados obtidos entre os algoritmos acima usando a métrica acurácia.
Lista de Exercícios 05 (prazo final para entrega: 08/04/2019 - segunda)
Nesta lista vamos fazer a predição para obter o preço de venda de um imóvel a partir do seguinte dataset "Boston House Price Dataset". Informações detalhadas sobre o dataset podem ser obtidas no seguinte link. Use 70% dos dados para treino e outros 30% para teste.
Use 70% dos dados para treino e outros 30% para teste.
Crie modelos de aprendizado de máquina usando os seguintes algoritmos:
- Regressão Linear com Gradiente Descendente (implemente em um módulo Python externo ao Jupyter Notebook.
- Linear Regression do Scikit-Learn
- Stochastic Gradient Descent Regressor (SGDRegressor) do Scikit-Learn
Compare os resultados obtidos entre os algoritmos acima usando a métrica RMSE (implemente-a em um módulo Python externo ao Jupyter Notebook).
- Compare também os resultados usando os seguintes escalonamentos de features: Normalização e Standardization (implemente-os em um módulo Python externo ao Jupyter Notebook).
- Mais informações em: http://sebastianraschka.com/Articles/2014_about_feature_scaling.html
Lista de Exercícios 06 (prazo final para entrega: 14/04/2019 - domingo)
- Implemente as 2 classes a seguir e adicione à sua biblioteca de pre-processamento em Python no arquivo transform.py :
- Normalize
- Standardize
- Ambas devem ter os métodos fit(X) e transform(X).
- fit - percorre a matriz de entrada e obtém os valores necessários aos cálculos específicos de cada classe:
- Normalize obtém min e max.
- Standardize obtém mean e std.
- transform - altera os valores da matriz de entrada de acordo com a operação realizada (normalizadação ou estandardização)
- fit - percorre a matriz de entrada e obtém os valores necessários aos cálculos específicos de cada classe:
- Implemente uma função split_stratified_train_test para dividir os dados de treino e teste no arquivo resample.py a ser incluído em sua biblioteca Python. A função deve permitir:
- randomização dos dados.
- escolha de percentual dos dados usados para treino (o complemento desse percentual representa os dados usados para teste).
- estratificação dos dados (ver link).
- Assinatura: split_stratified_train_test(y, perc_train, seed)
- perc_train - percentual dos dados usados para treino.
- seed - semente para geração de números randômicos.
- y - labels de cada observação contendo a classe como valor.
- saída (output): array estratificado com os índices do dados de treino e array estratificado com os índices dos dados de teste.
- Exemplo de entrada: split_stratified_train_test(0.7, 42, y)
- Saída - 2 arrays com índices dos dados de treino (idx_train) e de teste (idx_test), respectivamente.
- Use as implementações acima para tratar o dataset de renda de americanos dos Estados Unidos, que tem como rótulo se a pessoa ganha ou não mais de 50.000 dólares por ano. Considere apenas o arquivo adult.data como dataset para resolver esta lista.
- O dataset contém dados categóricos e valores faltando.
- Faça o melhor pre-processamento possível para tornar tal dataset adequado para uso nos algoritmos de aprendizagem de máquina para classificação. Use 70% dos dados para treino e outros 30% para teste.
- Faça atribuição da média da coluna para valores faltantes, caso o percentual de valores faltantes da coluna não seja muito grande.
- Transforme categorias usadas nas features e label em números. Categorias que não possuem uma ordem implícita devem ser transformadas em features binárias.
- Compare os resultados obtidos entre os algoritmos acima usando a métrica accuracy (implemente-a no arquivo metrics.py de sua bliblioteca Python).
Lista de Exercícios 07 (prazo final para entrega: 29/04/2019 - segunda)
- Resolva o problema de classificação binária sobre o dataset "Wisconsin Diagnostic Breast Cancer (WDBC)".
- Use 80% do dataset para treino e 20% apenas para teste. Use estratificação baseada no label.
- Dica: usar train_test_split com stratify, shuffle e random_state.
- Aplicar Standardization nas features.
- Usar o seguinte algoritmo: Perceptron.
- Use modelos usando diferentes regularizações: Nenhuma, L1, L2, ElasticNet (penalty : None, ‘l2’ or ‘l1’ or ‘elasticnet’).
- Use também diferentes valores de alpha para ver como eles afetam os resultados na validação cruzada.
- Usar a seguinte métrica: Accuracy.
- Use modelos usando diferentes regularizações: Nenhuma, L1, L2, ElasticNet (penalty : None, ‘l2’ or ‘l1’ or ‘elasticnet’).
- Use K-Fold Cross Validation (cross_val_score) com k = 3 apenas sobre os dados de treino.
- Use validação cruzada estratificada (StratifiedKFold) com randomização dos dados (usar shuffle e random_state).
- Dica: instancie um objeto da classe StratifiedKFold e use-o no parâmetro cv do cross_val_score.
- Use validação cruzada estratificada (StratifiedKFold) com randomização dos dados (usar shuffle e random_state).
- Depois de obter o melhor modelo via cross-validation sobre o conjunto de treino, use os melhores hiper-parâmetros encontrados para treinar um modelo usando todo o dado de treino. Depois, avalie esse modelo usando os dados de teste.
Lista de Exercícios 08 (prazo final para entrega: 06/05/2019 - segunda)
- Implemente as seguintes métricas de classificação:
- As métricas devem funcionar para classificação binária ou mesmo para múltiplas classes. Dica: você pode usar a função confusion_matrix do Scikit Learn para construir uma matriz de confusão e facilitar os seus cálculos. As métricas devem retornar a média ponderada com pesos baseados no suporte.
- accuracy
- precision
- recall
- f1_measure
- As métricas devem funcionar para classificação binária ou mesmo para múltiplas classes. Dica: você pode usar a função confusion_matrix do Scikit Learn para construir uma matriz de confusão e facilitar os seus cálculos. As métricas devem retornar a média ponderada com pesos baseados no suporte.
- Divida de forma estratificada o Dataset Iris em apenas 10% para treino e 90% para teste. Essa divisão não é usual, mas vamos usar para tornar o problema mais desafiador.
- Faça a standardização dos dados.
- Crie um modelo preditivo de classificação multi-classe usando Logistic Regression.
- Dica: você pode usar os parâmetros: multi_class='auto', solver='lbfgs'
- Avalie usando suas implementações das métricas: accuracy, precision, recall e f1_measure.
- Calcule a métrica log_loss usando a implementação do sklearn.
- Observe exemplos sobre Métricas de Classificação no github da disciplina. Lá tem exemplos completos.
- Note que y_pred em log_loss, nós chamamos de y_score, que é a probabilidade de ocorrência de cada classe para aquela linha do dataset.
- Desenhe a curva ROC para a classe Iris-virginica usando a implementação do sklearn.
- use a função roc_auc_score(y_true, y_score).
- preste atenção que y_score é diferente de y_pred.
- Dicas: Observe exemplos sobre Métricas de Classificação no github da disciplina. Lá tem exemplos completos.
- use a função roc_auc_score(y_true, y_score).
- Calcule a métrica AUC (Area Under Curve) para a classe Iris-virginica usando a implementação do sklearn.
- Dica: Observe exemplos sobre Métricas de Classificação no github da disciplina. Lá tem exemplos completos.
Lista de Exercícios 09 (prazo final para entrega: 09/05/2019 - quinta)
- Implemente a classe KNNModel e suas subclasses KNNClassifier e KNNRegressor. Estas duas últimas classes devem ter interfaces semelhantes às suas respectivas implementações do scikit learn (KNeighborsClassifier e KNeighborsRegressor). Para simplificar, você somente precisa implementar o algoritmo de força bruta, como mostramos em laboratório (ver notebook no github).
- Dica: adapte a solução que fizemos no laboratório para implementar as suas classes.
- Crie e avalie modelos preditivos usando o kNN com o dataset iris. Compare os resultados da sua implementação com a implementação de kNN (KNeighborsClassifier) do scikit learn. Use k=[1, 3 e 5]
- Divida de forma estratificada o Dataset Iris em apenas 10% para treino e 90% para teste. Essa divisão não é usual, mas vamos usar para tornar o problema mais desafiador.
- Faça a standardização dos dados.
- Implemente as medidas de distância a seguir (ver Figura 1):
- minkowski_distance(X, row, p)
- euclidean_distance(X, row). Dica: usar minkowski_distance com p=2.
- manhattan_distance(X, row) Dica: usar minkowski_distance com p=1.
- chebyshev_distance(X, row)
- onde X é uma matriz e row é uma linha para calculo da distância entre X e esta linha (row).
- Veja exemplo de implementação da distância euclidiana neste jupyter notebook.
Lista de Exercícios 10 (prazo final para entrega: 27/06/2019 - segunda)
Suponha que a internet caiu no Campus Quixadá e você quer fazer uma consulta através de palavras chave sobre as reviews de filmes do IMDB. (1) Defina sua consulta (palavras chave), (2) consulte o dataset e (3) mostre as 10 reviews mais semelhantes à sua consulta.
- Dica: Vetorize as reviews usando CountVectorizer ou TF-IDF e raqueie a similaridade usando a distância cosseno ou Jaccard.
- Informações sobre o dataset e como transformá-lo para uso, podem ser obtidas no seguinte link.
- Há um csv compactado já com as reviews prontas para uso no link. O read_csv do pandas consegue lê-lo diretamente. Você nem precisa descompactá-lo antes.
- Veja também os jupyter notebooks que fizemos esta semana nas aulas de Laboratório.
Lista de Exercícios 11 (prazo final para entrega: 02/06/2019 - DOMINGO)
- O dataset de renda de americanos dos Estados Unidos tem como rótulo se a pessoa ganha ou não mais de 50.000 dólares por ano.
- O dataset contém dados categóricos e valores faltando.
- Faça o melhor pre-processamento possível para tornar tal dataset adequado para uso em diversos algoritmos de aprendizagem de máquina.
- Faça atribuição da média da coluna para valores faltantes, caso o percentual de valores faltantes da coluna não seja muito grande.
- Transforme categorias usadas nas features e label em números. Categorias que não possuem uma ordem implícita devem ser transformadas em features binárias.
- Use 5-Fold Cross Validation Estratificada para obter a Accuracy através do uso dos seguintes algoritmos: Perceptron, Adaline, Stochastic Gradient Descent (SGD), Logistic Regression, kNN, Naive Bayes, SVM e Árvore de Decisão (Decision Tree).
- Faça Standardization dos dados (fit para o conjunto de treino e transform para treino e teste).
- Compare os modelos e indique o melhor resultado obtido.
Lista de Exercícios 12 (prazo final para entrega: 16/06/2019 - DOMINGO - Não é necessário enviar ao professor - Correção na segunda dia 17/06/2019)
- Avalie o desempenho dos algoritmos DecisionTree, RandomForest e Gradient Boosting para o dataset "Wisconsin Diagnostic Breast Cancer (WDBC)". Separe os dados em treino (60%), validação (20%) e teste (20%).
- Use um valor constante para o parâmetro random_state e teste os resultados com as seguintes combinações de hiper-parâmetros para RandomForest e Gradient Boosting usando Grid-Search:
- learning_rate: 0.1, 0.05, 0.01 (somente para o Gradient Boosting)
- n_estimators: 50, 100, 200
- max_depth: 3, 5, 7
- Mostre a importância das features de acordo com o melhor modelo de classificação e o melhor modelo de regressão encontrados dentre os 3 usados nesta lista de exercícios (DecisionTree, RandomForest e Gradient Boosting).
- Use um valor constante para o parâmetro random_state e teste os resultados com as seguintes combinações de hiper-parâmetros para RandomForest e Gradient Boosting usando Grid-Search:
- Faça a clusterização do dataset deste link usando o algoritmo K-Means++.
- O dataset possui os seguintes dados de motoristas: a distância média dirigida por dia e a média percentual do tempo que um motorista estava 5mph acima do limite de velocidade.
- Portanto, agrupe os motoristas pela similaridade das features acima.
- Use o método do cotovelo (Elbow Method) para identificar o melhor valor de k para o K-Means++.
- Mostre o resultado graficamente.
- Use Clusterização Hierárquica no mesmo dataset da questão 2 usando "complete" como critério de ligação (linkage). Mostre o dendograma.
- Use o parâmetro n_clusters da função scipy.cluster.hierarchy.cut_tree para obter o número de clusters igual ao melhor resultado obtido com o K-Means (Questão 2). Exemplo:
...
distance_matrix = scipy.spatial.distance.pdist(X, metric='euclidean')
cluster_model = scipy.cluster.hierarchy.complete(distance_matrix)
dendogram = scipy.cluster.hierarchy.dendrogram(cluster_model)
sensor_cluster_list = scipy.cluster.hierarchy.cut_tree(cluster_model, n_clusters=8)
- Mostre o resultado graficamente.
4. Use o DBScan para clusterizar o mesmo dataset da questão 2 e mostre o resultado graficamente.
Trabalho Prático de Aprendizado de Máquina
Etapa 1 - Proposta - Prazo: 05/04/2019 - Sexta
- Submeta sua Proposta de Trabalho Prático da Disciplina através do preechimento do seguinte formulário.
- Sugestões de problemas a atacar:
- Plataforma Kaggle - Competições
- UCI - Machine Learning Repository
- Operação Serenata de Amor
- Inteligência Artificial (IA) para auditar contas públicas e auxiliar no controle social
- Crie e envie somente um documento texto com os detalhes do problema a ser resolvido e qual(is) dataset(s) será(ão) usado(s).
- Requisitos:
- Explique bem o Problema de Machine Learning que você pretende atacar. Aqui é importante você definir:
- Tipo de problema:
- Classificação, Regressão, Clusterização, Aprendizado por reforço (Reinforcement Learning), Recuperação de Informação, Recomendação, Processamento de Linguagem Natural, Visão Computacional, etc.
- Features que pretende usar.
- Output:
- O que você espera obter como resultado do uso de técnica(s) de Machine Learning.
- Tipo de problema:
- Recomenda-se (mas isso não é um requisito obrigatório), que o dataset principal tenha:
- no mínimo 50.000 observações (linhas).
- no mínimo 10 features (colunas), sem considerar os rótulos (labels).
- Explique bem o Problema de Machine Learning que você pretende atacar. Aqui é importante você definir:
- O trabalho pode ter relação com um ou mais dos seguintes assuntos / tópicos:
- Aprendizagem de Máquina (Machine Learning)
- Aprendizagem Supervisionada
- Aprendizagem Não Supervisionada
- Aprendizagem por Reforço (Reinforcement Learning)
- Deep Learning
- Processamento de Linguagem Natural (NLP - Natural Language Processing)
- Recuperação de Informação (Information Retrieval)
- Sistemas de Recomendação
- Visão Computacional
- Aprendizagem de Máquina (Machine Learning)
- Sugestões de problemas a atacar:
Etapa 2 - Resultados Preliminares - Prazo: 12/05/2019 (domingo)
- Apresentação Preliminar do Trabalho Prático
- A apresentação preliminar dos trabalhos finais será realizada por cada aluno no dia 13/05/2019 (segunda), valendo parte da nota do trabalho.
- Cada aluno terá 4 minutos para apresentar.
- A apresentação deve estar em um Jupyter Notebook compartilhado via Gist através do seguinte link.
Etapa 3 - Experimentos e Resultados - Prazo: 23/06/2019 (domingo)
- A apresentação deve estar em um Jupyter Notebook compartilhado através do seguinte link.
Sugestões do que deve conter o notebook do Trabalho Prático:
- Qual o problema geral a ser resolvido
- Quais são os datasets originais
- Volume de dados em tuplas e espaço de armazenamento
- Análise exploratória dos dados
- análise de atributos
- correlações
- histogramas
- Qual o tipo de problema de machine learning a resolver:
- Classificação, Regressão, Clusterização, Aprendizado por reforço (Reinforcement Learning), Recuperação de Informação, Recomendação, etc.
- Quais features (input) e label (output) serão usados
- Quais métricas de avaliação de resultado serão usadas
- Aplicação das técnicas de machine learning usando diferentes algoritmos e hiper-parâmetros
- Exibição dos resultados preferencialmente de forma gráfica e/ou tabular
- Apresentar conclusões sobre o trabalho:
- Dificuldades, Aprendizados, Possíveis melhorias futuras
- Importante
- usar bastante markdown para criar títulos e explicações a cada passo dos experimentos
- evitar linhas desnecessárias que não ajudem no entendimento do trabalho
- Exemplo: ao mostrar um dataframe, exibir apenas algumas poucas linhas
- Recomenda-se comparar com outras resoluções (kernels) ou artigos que resolvem o mesmo problema.
- tentar obter resultados mais próximos ou melhores do que eles.
- aproveitar e usar as boas ideias que eles possam fornecer.
Workflow típico para resolução de problemas
- Definição do problema
- Carregamento do dataset
- Análise e visualização dos dados
- Preparação dos dados
- Limpeza dos dados
- Transformação dos dados
- Geração e treinamento dos modelos
- Avaliação dos modelos
- Apresentar os resultados (tabelas, gráficos)
Cronograma Final da Disciplina
- 04/06 (terça) - 2ª Avaliação Parcial
- 18/06 (terça) - 3ª Avaliação Parcial
- 24,25 / 06 - Apresentação Final do Trabalho Prático