{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introdução" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Machine Learning é uma área de estudo abrangente, em desenvolvimento vigoroso especialmente nessas duas últimas décadas. O escopo dessa área não está claramente definido, variando de acordo com quem tenta descrevê-lo. Há, no entanto, alguns elementos comuns nas diferentes descrições. Um deles são os dados (observações) coletados e as questões relacionadas com o processo de extração de informações relevantes ou a criação de conhecimento novo a partir deles. De forma bastante geral, podemos dizer que machine learning ocupa-se em desenvolver fundamentos, modelos, técnicas e métodos que ajudam a facilitar ou automatizar esse processo." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Aqui iremos considerar situações nas quais os dados são representados por dois espaços: um espaço de entrada $X$ e um espaço de saída $Y$. O espaço $X$ corresponde à representação dos objetos sob estudo enquanto o espaço $Y$ representa algum tipo de informação referente aos objetos em $X$. Tipicamente, assume-se que há uma distribuição conjunta $p(x,y)$ subjacente ao espaço $X \\times Y$, que estabelece uma relação entre os dois espaços. \"Descobrir\" essa relação a partir de algumas amostras do espaço $X \\times Y$ é um dos grandes interesses nesta era de grande volume de dados. Os exemplos a seguir ilustram alguns casos que podem ser modelados dessa forma." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exemplos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exemplo 1: Considere o conjunto de imóveis de uma região, cujos valores de comercialização são estabelecidos baseados em diferentes fatores (por exemplo, área da construção, idade do imóvel, número de cômodos, localização, entre outros). Os imóveis podem ser representados como elementos de um espaço $X$ (por exemplo, um elemento de $\\mathbb{R}^n$) e os possíveis valores dos imóveis como elementos de um conjunto $Y$ (por exemplo um intervalo $[min,max] \\subseteq \\mathbb{R}$, no qual $min$ e $max$ correspondem ao menor e maior valores possíveis). A relação entre um imóvel $x$ e seu valor $y$ pode ser representado por um par $(x,y)$.\n", "\n", "Suponha que dispomos de uma lista dos imóveis que foram comercializados nos últimos meses, e os seus respectivos valores. Essa lista pode ser representada por um conjunto $\\{ (x_i,y_i) : x_i \\in X, y_i \\in Y\\}_{i=1}^{N}$.\n", "\n", "Baseado nesses dados, gostaríamos de estimar o valor de um outro imóvel disponível para comercialização. Isto faz sentido, pois imóveis similares muito possivelmente têm valores similares. Podemos formular esse problema como o problema de determinar uma função $f: X \\to Y$ tal que $f(x)$ é o mais próximo possível de $y$.\n", "\n", "Note que o preço de venda de um imóvel pode não ser exatamente o mesmo valor de nenhum outro imóvel. Neste sentido, $Y$ é um conjunto de valores contínuos. Problemas de se estimar a relação entre $X$ e $Y$ na qual $Y$ é contínuo como neste exemplo são chamados de regressão.\n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exemplo 2: Muitos acervos digitais estão sendo contruídos digitalizando-se documentos e livros antigos. Enquanto a imagem em si pode ser importante para preservar o aspecto visual do documento, reconhecer o texto e outros elementos presentes no documento é fundamental para facilitar a organização (indexação, por exemplo) e busca de documentos por palavras-chave ou por conteúdo.\n", "\n", "Nesse contexto, um importante problema é o problema de reconhecimento de caracteres. Imagens de caracteres individuais são obtidos por técnicas de processamento de imagens e em seguida elas são classificadas, isto é, reconhecidas por um sistema OCR. Classificar ou reconhecer um caractere a partir de sua imagem consiste em identificar qual é o tipo ou a identidade do caractere retratado na imagem. No caso do alfabeto romano, ignorando-se a distinção entre maiúsculas e minúsculas, são 26 tipos de caracteres. Assim, se $x$ representa a imagem de um caractere, sua identidade pode ser representada por um rótulo $y$ numérico, entre 1 e 26. Um par $(x, 3)$, por exemplo, indicaria que $x$ é um exemplar da classe 3 (que corresponde à letra \"c\").\n", "\n", "Note que neste exemplo, diferentemente do exemplo anterior, $Y$ é um conjunto discreto, cujos elementos estão associados a rótulos que identificam classes ou categorias. Aqui também podemos especificar a associação de um rótulo $y$ a uma observação $x$ por meio de uma função $f: X \\to Y$. Neste caso, a função $f$ é denominada classificador. Espera-se que o classificador seja capaz de reconhecer todas as variações de um mesmo símbolo como tal. Note também que o conjunto de possíveis identidades dos símbolos é finito e fixo (supondo-se um alfabeto finito e fixo).\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exemplo 3: no caso de imagens de telescópios ópticos, o espaço $X$ pode ser formado pelas imagens de cada objeto propriamente, ou pelos dados do objeto em um catálogo. Em termos de \"saída\", podemos ter dois interesses em relação aos objetos observados:\n", "- identificar o tipo de objeto: trata-se de um problema de classificação\n", "- estimar o redshift: trata-se de um problema de regressão" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Aprendizado supervisionado $\\times$ aprendizado não supervisionado\n", "\n", "Acima comentamos sobre regressão e classificação. Em ambos os casos estamos supondo que amostras $(x,y)$ estão disponíveis. Pelo fato de termos $y$ associado às observações $x$, temos um cenário de aprendizado supervisionado. Por outro lado, há situações nas quais apenas amostras $x$ estão disponíveis, e o objetivo é encontrar alguma informação interessantes no conjunto de amostras. Esses correspondem aos cenários denominados de aprendizado não supervisionado. Um exemplo típico de técnica não-supervisionada para classificação é o cálculo de aglomerados (ou, clustering)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regressão" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dada uma entrada $x$, gostaríamos de predizer a saída $y$. Mais especificamente, gostaríamos de encontrar uma função $f: X \\to Y$ tal que $f(x)$ é o mais próximo possível de $y$. Selecionar uma família adequada de funções e definir a noção de proximidade adequada são questões importantes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Voltar para o menu principal
\n", "
Ir para: Introdução à regressão
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Classificação" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dada uma entrada $x$, gostaríamos de saber a qual classe ela pertence.\n", "Mais especificamente, gostaríamos de predizer a classe $y$ para cada entrada $x$, de forma a minimizar o erro de classificação. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Existe uma escolha/decisão ótima ?\n", "Vamos supor que a distribuição das classes em $Y$ é conhecida. Na falta de qualquer outra informação, dado um $x$ qualquer, um chute razoável seria escolher a classe de maior probabilidade, isto é, escolher $argmax_y \\{P(y)\\}$. Mas, dado que $x$ foi observado, faz muito mais sentido levar isso em consideração e escolher $argmax_y \\{P(y\\,|\\,x)\\}$. Pela regra de Bayes, supondo também $p(x\\,|\\,y)$ e $p(x)$ conhecidos, podemos calcular\n", "$$\n", "P(y\\,|\\,x) = \\frac{p(x\\,|\\,y) P(y)}{p(x)}\n", "$$\n", "Pode-se mostrar que o erro de classificação (perda 0-1) é minimizada ao se escolher a classe $y$ com a maior probabilidade a posteriori $P(y\\,|\\,x)$ dentre todos os $y\\in Y$.\n", "\n", "Logo, dado $x$, se tivéssemos conhecimento de $p(x\\,|\\,y)$, $P(y)$ e $p(x)$, poderíamos calcular $P(y\\,|\\,x)$ para todo $y \\in Y$ e fazer a escolha baseado nesses valores. Note que, de fato, bastaria o conhecimento de $p(x\\,|\\,y)$ e $P(y)$, pois $p(x)$ não depende de $y$ e, para um $x$ fixo, não afetaria a comparação." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### É possível calcular essa decisão ótima ?\n", "Na prática, as distribuições acima não são conhecidas. Pode-se portanto adotar uma das seguintes abordagens:\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Voltar para o menu principal
\n", "
Ir para: Introdução à classificação
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Função de custo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Em ambos os casos, recaímos em um problema de otimização. Tem-se uma função escalar de custo, definido sobre um espaço de parâmetros. Se a função for convexa, tem-se um problema de otimização relativamente simples. Caso contrário, o problema pode ser de difícil solução. Nos casos a serem vistos na seção sobre regressão e sobre classificação, as funções de custo consideradas são convexas, parametrizadas pelos pesos de uma função linear. Para a otimização delas usamos uma técnica conhecida por gradiente descendente. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Voltar para o menu principal
\n", "
Ir para: Gradiente descendente
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Voltar para o menu principal
\n", "
Ir para o próximo: Prévia Python para prática
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }