--- presentation: theme: beige.css slideNumber: true --- ## Aprendizado de Máquina ##### Prof. Ronaldo Cristiano Prati
[ronaldo.prati@ufabc.edu.br](mailto:ronaldo.prati@ufabc.edu.br) ###### Bloco A, Sala 513-2 ## Tópicos da Aula - Aplicações de Aprendizado de Máquina - Definição - Tipos de aprendizado - Introdução à regressão linear e ao algoritmo de descida do gradiente ### Alguns exemplos - AM tem atraído grande atenção devido ao grande volume de dados sendo gerados - Dados web (click-stream ou click through data) - Entender melhor os usuários - Dados médicos - Melhorar o conhecimento sobre doenças a partir de prontuários eletrônicos - Dados biológicos - Algoritmos de AM tem fornecido um melhor entendimento sobre dados genéticos - TICs/IoT - Dados de sensores, logs de serviços, fotos, etc. #### Quando usar? - Situações em que não podemos/sabemos programar manualmente - VANTs (veículos autonomos não tripulados) - carro autônomo do google - Reconhecimento de escrita manual - por exemplo, roteamento de cartas pelos correios - Processamento de língua natural (NLP) - assistentes pessoais de smartphones - Visão computacional - reconhecimento de faces no FACEBOOK #### Quando usar? - Programas que se adptam automaticamente interagindo com o usuário - Netflix - Amazon - iTunes genius - Facebook feed - Incorporar uso de informação e comportamento do usuário para se auto-adaptar ### O que é aprendizado de máquina? - Não existe uma definição única - Alguns exemplos de como alguns pesquisadores definiram Aparendizado de máquina como ### Samuel (1959) > Arthur Samuel (1959) definiu Machine learning como: "Campo de estudo que permite que computadores tenham a capacidade de aprender ser ser explicitamente programados" Ele criou um jogo de damas em que o computador jogavaEd contra si mesmo 10.000 vezes, e encontrava quais posições eram boas ou ruins ### Mitchel (1999) > Tom Mitchel (1999) fez uma definição de aprendizado de máquina como um [problema bem-posto](https://pt.wikipedia.org/wiki/Problema_bem-posto): "Um programa de computador aprende a partir de experiência $E$, com respeito a uma classe de tarefas $T$ e uma medida de desempenho $P$ se o seu desempenho na tarefa $T$, medida por $P$, melhora com a experiência $E$." No exemplo do jogo de damas - $E$ = 10.000 jogos - $T$ é jogar damas - $P$ é se você ganha ou não o jogo ### Tipos de aprendizado - **Aprendizado supervisionado** - **Aprendizado não-supervisionado** - Aprendizado por reforço - Sistemas de recomendação ### Aprendizado Supervisionado - Provavelmente o problema mais comum em aprendizado de máquina - Vamos começar com um exemplo - Como podemos prever o preço de casas e como eles estão relacionados com o seu tamanho? ### Problema Exemplo Baseado nesses dados, se temos uma casa de 750 $ft^2$, qual seria o preço de venda? ![house-prices](house_prices.png "house-prices") ### Problema Exemplo - Que abordagem podemos usar para resolver o problema? - Uma linha reta pelos dados? Talvez $150 000 - Um polinômio de segunda ordem? Talvez $200 000 - Como escolhemos entre uma linha reta ou uma curva? - Cada uma dessas abordagens representa uma maneira diferente de aprendizado supervisionado ### Problema Exemplo - Qual é a ideia geral? - Fornecemos ao algoritmo um conjunto de dados com a "resposta correta" - Para esse conjunto, nós sabemos qual é o preço real das casas - A ideia é que podemos aprender a relação entre o preço e a metragem a partir do conjunto de treino - O algoritmo deve então prover qual é a resposta para novos dados que não sabemos o preço ainda - Esse problema é chamado de **regressão** ### Outro exemplo Podemos predizer o tipo de tumor de mama como maligno ou benigno baseado no tamanho do tumor? ![cancer_size](cancer_1.png "cancer-size") ### Outro exemplo Analizando os dados: - Cinco de cada tipo - Podemos estimar o tipo de tumor baseado do seu tamanho? - Esse é um problema de **classificação** - Classificar os dados em uma das duas classes discretas: maligna ou benigna - Em problemas de classificação, também podemos ter mais de duas classes: - 0 - benigno - 1 - Tipo 1 - 2 - Tipo 2 - 3 - Tipo 3 ### Outro exemplo - Também podemos ter mais de um atributo. Por exemplo, podemos usar o tamanho do tumor e a idade do paciente ![cancer_size](cancer_3.png "cancer-size") ### Outro exemplo - Podemos tentar definir a separação entre as classes desenhando uma linha reta entre os dois grupos - Também podemos criar uma função mais complexa para cada um dos grupos (veremos exemplos mais afrente no curso) - Então, quando tivermos um novo indivíduo com um tumor de certo tamanho e com uma certa idade, podemos usar essa informação para prever o tipo de tumor ### Outro exemplo Também podemos considerar outros atributos: - Expessura da aglomeração das células - Uniformidade do tamanho da célula - Uniformidade to formato da célula Alguns algoritmos tem a capacidade de lidar com um número infinito de atributos! Para isso, usamos um truque matemático das SVMs (que iremos tratar mais adiante). ## Resumo - Em aprendizado supervisionado usamos um conjunto de treino com dados com o valor e o valor correto da variável a ser predita para criar um modelo para novas entradas cujo valor dessa variável é desconhecido - Problema de regressão: variável alvo contínua - Problema de classificação: variável alvo discreta ### Aprendizado não Supervisionado - Segundo maior tipo de problema - Nesse caso, os dados não são acompanhados do rótulo real (não rotulados) - Temos apenas o conjunto de dados, e queremos estruturá-lo de alguma maneira - Uma das maneira de fazer isso é organizar os dados em grupos - Esse é um **problema de agrupamento** ### Agrupamento - Exemplos Dados de Microarray - Dados um grupo de individuos - Para cada um, medir a expressão de alguns genes - Rodar um algoritmo de agrupamento para agrupar indivídos em tipos de pessoas ![microarray](microarray.png "microarray") ### Agrupamento - Exemplos - Google news Agrupar noticias em grupos correlatos - Organizar clusters de computadores Identificar pontos fracos em potencial ou redistribuir as terefas eficientemente - Análise de redes sociais Grupos de consumo em potencial - Dados atronômicos Agrupar informações para descobrir novos sistemas planetários ### Em resumo - Podemos gerar automaticaticamente estrutura a partir dos dados? - Como não fornecemos o rótulo de cada entrada, é um **aprendizado não supervisionado** ### Regressão Linear - Problema do preço das casas usado anteriormente - Problema de aprendizado supervisiondo de regressão - Por onde começamos? - Conjunto de treinamento - Notação (usada durante o curso): $m$ = número de exemplos de treinamento $x$ = variáveis de entrada $y$ = variável de saída (variável meta) $(x,y)$ = um exemplo de treinamento (genérico) $(x_i,y_i)$ = um exemplo de treinamento específico $i$ é um índice do conjunto de treinamento ### Regressão Linear ![treino](treino.png "Dados de treino") ### Regressão Linear - Com o nosso conjunto de treino definido, como o usamos? - Pegamos o conjunto de Dados - Usamos ele para alimentar um algoritmo de aprendizado - Algoritmo dá como saída uma função (denotada $h$, de hipótese) - Essa função tem como entrada um novo dado (por exemplo, o tamanho de uma nova casa) - E gera como saída uma estimativa do valor de $y$ ### Regressão Linear - Vamos representar a hipótese $h$ por \[ h_\theta(x) = \theta_0 + \theta_1 x \] - O que isso significa? $y$ é uma função linear de $x$! - $\theta_i$ são parâmetros: - $\theta_0$ e o termo independente - $\theta_1$ é o gradiente - Esse tipo de função é uma regressão linear com uma única variável, também chamada de regressão linear univariada. ## Em resumo - Uma hipótese é criada sobre as variáveis de entrada - Usa parâmetros para determinar o sistema de Aprendizado - Dá como saída uma predição baseada na entrada ### Regressão Linear - função de custo - A função de custo nos ajuda a guiar em como ajustar a melhor linha reta para nossos dados: - Encontrar os valores de $\theta_i$ (parâmetros) - Diferentes valores nos fornece diferentes funções - Se $\theta_0$ é $1.5$ e $\theta_1$ é 0, então temos uma linha reta paralela ao eixo $x$ ao longo de 1.5 em $y$ Se $\theta_1 > 0$, então temos uma inclinação positiva ### Regressão Linear - função de custo - Baseado em nosso conjunto de treino, queremos gerar parâmetros que geram a linha reta - Temos que escolher esses parâmetros tal que $h_\theta(x)$ é próxima a $y$ para nossos exemplos de treino. - Basicamente, temos que usar os $x$'s do conjunto de treino em que $h_\theta(x)$ dá estimativas para $y$ o mais próximo possível - Pense em $h_\theta(x)$ como um "imitador de $y$" - ele tenta converter the $x$ em $y$, considerando que já temos $y$ podemos avaliar como $h_\theta(x)$ se comporta ### Regressão Linear - função de custo - Para formalizar isso - Queremos resolver um problema de minimização em minimizamos \[ (h_\theta(x) - y)^2\] - i.e., minimizar a diferença entre $h_\theta(x)$ e $y$ para cada um dos Exemplos - Somar essa diferença em todo o conjunto de treino $$ \frac{1}{2m} \sum_i^m (h_\theta(x) - y)^2$$ ### Regressão Linear - função de custo - Minimizar a diferença (ao quadrado) entre o valor predito e o valor real da casa - $\frac{1}{m}$ significa que calculamos a média - $\frac{1}{2m}$ o $2$ torna a matemática um pouco mais fácil, e nós não modificamos os valores dos parâmetros que obtemos (isto é, metado do valor mínimo ainda é o valor mínimo) - Minimizar $\theta_0$ e $\theta_1$ significa que encontramos valores que, na média, produzem a menor diferença entre o valore real e o predito. ### Regressão Linear - função de custo - Mais precisamente, essa é uma **função de custo** $$ J(\theta_0,\theta_1) = \frac{1}{2m} \sum_i^m (h_\theta(x) - y)^2$$ - E queremos minimizar essa função de custo - Nossa função de custo está (por causa da somatória) inerentemente olhando **TODOS** os dados no conjunto de treino - Essa função é também chamada de função de custo de erro quadrático - Provavelmente a função de custo mais usada ### Regressão Linear - função de custo Se fizermos um gráfico da função de custo em função de $\theta_0$ e $\theta_1$, teremos algo como ![cost_function](cost_function.png "Função de Custo") ### Regressão Linear - função de custo Para simplificar, podemos refazer esse gráfico usando um gráfico de contornos ![cost_function](contour_plot.png "Contour plot") ### Algoritmo da descida do gradiente - É usado para minimizar a função $J$ - É usado em vários algoritmos de machine learning para minimizar funções. ### Algoritmo da descida do gradiente - Inicie com um valor qualquer - inicie com 0,0 (ou um valor aleatório) - Modifique os valores de $\theta_0$ e $\theta_1$ um pouco para tentar reduzir $J(\theta_0, \theta_1)$ - Cada vez que você reduzir os parâmetros, selecione o gradiente que reduz $J(\theta_0, \theta_1)$ o mais possível - Repita o processo até que você convirga para um mínimo local - Dependendo da função de custo, onde você inicia determina qual o mínimo você vai obter ### Algoritmo da descida do gradiente ![cost_function](gradiente.png "Contour plot") ### Algoritmo da descida do gradiente - Mais formalmente, use a regra de atualização \[ \theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta_0, \theta_1)\] a cada iteração para $j \in \{0,1\}$ até convergir - $\alpha$ é um número chamado de **taxa de aprendizado** - Ele controla o "tamanho do passo" - Se $\alpha$ é grande, temos uma descida agressiva do gradiente - Se $\alpha$ é pequeno, dá passos pequenos ### Algoritmo da descida do gradiente para regressão Linear - Qual é o gradiente da nossa função de custo? $$ \frac{\partial}{\partial\theta_j} J(\theta_0,\theta_1) = \frac{\partial}{\partial\theta_j} \left( \frac{1}{2m} \sum_i^m (h_\theta(x^i) - y^i)^2 \right) $$ - substituindo $h_\theta(x)$ por $\theta_0 + \theta_1 x$ $$ = \frac{\partial}{\partial\theta_j} \left( \frac{1}{2m} \sum_i^m (\theta_0 + \theta_1 x^i - y^i)^2 \right) $$ ### Algoritmo da descida do gradiente para regressão Linear - Agora derivando parcialmente: $$ j = 0 : \frac{\partial}{\partial\theta_0} J(\theta_0,\theta_1) = \frac{1}{m} \sum_i^m (h_\theta(x^i) - y^i)$$ $$ j = 1 : \frac{\partial}{\partial\theta_1} J(\theta_0,\theta_1) = \frac{1}{m} \sum_i^m (h_\theta(x^i) - y^i) x^i$$ ### Algoritmo da descida do gradiente para regressão Linear - Como a função de custo da regressão linear é convexa, ela tem um único mínimo - O método da descida do gradiente **sempre** encontrará o melhor valor de $\theta_0$ e $\theta_1$ - Um único ótimo global ### Algoritmo da descida do gradiente para regressão Linear ![cost_function](global.png "Contour plot") ### Algoritmo da descida do gradiente para regressão Linear - Existe um algoritmo numérico para encontrar a solução que minimiza a função. - Método da Equação normal - O gradiente descendente é melhor para conjuntos de dados grandes - Usado em vários contextos e em aprendizado de máquina