Sistemas Inteligentes

Avisos

  • 31/05/2018, 12:00: trabalho 2 definido

Slides das aulas

Os slides usados são alguns do curso UC Berkeley CS188 Intro to AI.

Trabalho 2

Implementar classificadores de dígitos baseados em Regressão Linear e o Método dos Mínimos Quadrados.

Este Trabalho 2 é similar ao primeiro. A diferença entre ambos pode ser resumida à diferença no método para classificação a ser utilizado.

Duas alternativas devem ser consideradas:

  1. A variável de saída é um escalar. Neste caso, para uma observação $x \in \mathbb{R}^n$ (i.e., um vetor de $n$ valores representando um dígito), há um escalar correspondente, $y \in \{0, 1, \dots, 9\}$, que representa a classe desta observação. As classes das observações no conjunto de treinamento são conhecidas. Após o treinamento e a definição do vetor $\theta \in \mathbb{R}^{n+1}$. Será possível inferir a classe de uma observação $x’$ pelo produto escalar de $\theta$ e um vetor semelhante a $x’$ acrescido de um componente cujo valor é 1. A classe inferida é aquela a qual o escalar obtido mais se aproxima (e.g., $4.79 \to 5, -1.12 \to 0$).

  2. A variável de saída é um vetor binário. Já neste caso, para uma observação $x \in \mathbb{R}^n$ cuja classe é $y\in \{0, 1, \dots, 9\}$, é estabelecida a correspondência entre $x$ e um vetor binário $y’$, cujo número de dimensões é igual ao número de classes, 10. Todos os componentes de $y’$ valem 0, a não ser o $y$-ésimo componente, que vale 1. Por exemplo, se $y=3$, então o vetor binário correspondente é $y’ = \{0,0,0,1,0,0,0,0,0,0\}$. Após o treinamento, é definido uma matriz $\theta \in \mathbb{R}^{(n+1)\times10}$. A classe de uma observação $x’$ é inferida pelo seu produto por $\theta$, e pela identificação da componente de maior valor do vetor resultante deste produto.

Diferente do 1o trabalho, para este não será necessário binarizar as entradas, podendo estar serem tratadas como números reais como originalmente fornecidas. Considere como hiperparâmetros do modelo o tamanho do passo e o número de iterações no processo de otimização que leva a definição de $\theta$.

A conclusão do desenvolvimento do trabalho deve ser anunciada até 22/06/2018. Quando isto acontecer, será então agendada uma breve entrevista (não é uma apresentação; slides não serão utilizados) sobre o trabalho desenvolvido. O desempenho no Kaggle e na entrevista serão os critérios para a avaliação.

Trabalho 1

Implementar de um classificador de dígitos baseado em Naive Bayes.

Usaremos como plataforma para este trabalho o Kaggle. Vide este link.

O objetivo será obter a maior acurácia possível numa submissão feita ao site, sendo este valor considerado para avaliação de cada aluno. O número de submissões feitas não terá qualquer influência na avaliação.

Considere o tipo de suavização assim como sua configuração como hiperparâmetros do modelo.

Conforme pode ser notado, as entradas não são figuras em preto-e-branco, mas em escala de cinza. Estas deverão ser binarizadas, utilizando um critério que pode ser livremente escolhido (e.g., limiar fixo, limiar média, limiar mediana). Sendo assim, o processo de binarização é outro hiperparâmetro. Há diversas referências sobre binarização na Internet [1, 2, 3].

A conclusão do desenvolvimento do trabalho deve ser anunciada até 01/06/2018. Quando isto acontecer, será então agendada uma breve entrevista (não é uma apresentação; slides não serão utilizados) sobre o trabalho desenvolvido. O desempenho no Kaggle e na entrevista serão os critérios para a avaliação.

http://www.kdnuggets.com/2016/10/5-free-ebooks-machine-learning-career.html http://www.kdnuggets.com/2015/10/learning-machine-learning-quora.html
https://github.com/ZuzooVn/machine-learning-for-software-engineers
https://medium.com/learning-new-stuff/machine-learning-in-a-year-cdb0b0ebd29c http://www.kdnuggets.com/2016/04/top-10-ipython-nb-tutorials.html
http://openclassroom.stanford.edu/MainFolder/HomePage.php
http://ghyslain.me/bookshelf
http://dataconomy.com/2017/02/mathematics-machine-learning/
http://www.deeplearningbook.org/
http://cs109.org
https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
https://br.udacity.com/course/intro-to-artificial-intelligence--cs271/
https://www.cs.princeton.edu/courses/archive/fall16/cos402/
http://theopenacademy.com/content/artificial-intelligence
http://ai.berkeley.edu/lecture_slides.html
https://www.cs.duke.edu/courses/fall08/cps270/
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/index.htm
https://brohrer.github.io/how_to_interview.html
http://datasciencemasters.org/
https://github.com/PacktPublishing/Bayesian-Analysis-with-Python
http://www.stat.cmu.edu/~cshalizi/ADAfaEPoV/ADAfaEPoV.pdf
https://web.stanford.edu/~hastie/ElemStatLearn/
http://www-bcf.usc.edu/~gareth/ISL/
http://www.inf.pucrs.br/peg/pub/tr/TI1_Luciana.pdf
https://web.stanford.edu/~jurafsky/slp3/
http://bigdata-madesimple.com/20-free-books-to-get-started-with-artificial-intelligence/
http://cgi.di.uoa.gr/~stpatrec/