Aprendizado de Máquina

Prof. Ronaldo Cristiano Prati
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: "Um programa de computador aprende a partir de experiência EE, com respeito a uma classe de tarefas TT e uma medida de desempenho PP se o seu desempenho na tarefa TT, medida por PP, melhora com a experiência EE."

No exemplo do jogo de damas

  • EE = 10.000 jogos
  • TT é jogar damas
  • PP é 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 ft2ft^2, qual seria o preço de venda?
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

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

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

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):
      mm = número de exemplos de treinamento
      xx = variáveis de entrada
      yy = variável de saída (variável meta)
      (x,y)(x,y) = um exemplo de treinamento (genérico)
      (xi,yi)(x_i,y_i) = um exemplo de treinamento específico
      ii é um índice do conjunto de treinamento

Regressão Linear

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 hh, 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 yy

Regressão Linear

  • Vamos representar a hipótese hh por

hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1 x

  • O que isso significa?
    yy é uma função linear de xx!
  • θi\theta_i são parâmetros:
    • θ0\theta_0 e o termo independente
    • θ1\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 θi\theta_i (parâmetros)
    • Diferentes valores nos fornece diferentes funções
    • Se θ0\theta_0 é 1.51.5 e θ1\theta_1 é 0, então temos uma linha reta paralela ao eixo xx ao longo de 1.5 em yy
      Se θ1>0\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θ(x)h_\theta(x) é próxima a yy para nossos exemplos de treino.

  • Basicamente, temos que usar os xx's do conjunto de treino em que hθ(x)h_\theta(x) dá estimativas para yy o mais próximo possível

  • Pense em hθ(x)h_\theta(x) como um "imitador de yy" - ele tenta converter the xx em yy, considerando que já temos yy podemos avaliar como hθ(x)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θ(x)y)2(h_\theta(x) - y)^2

  • i.e., minimizar a diferença entre hθ(x)h_\theta(x) e yy para cada um dos Exemplos

  • Somar essa diferença em todo o conjunto de treino

12mim(hθ(x)y)2\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
    • 1m\frac{1}{m} significa que calculamos a média
    • 12m\frac{1}{2m} o 22 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 θ0\theta_0 e θ1\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(θ0,θ1)=12mim(hθ(x)y)2J(\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 θ0\theta_0 e θ1\theta_1, teremos algo como

cost_function

Regressão Linear - função de custo

Para simplificar, podemos refazer esse gráfico usando um gráfico de contornos

cost_function

Algoritmo da descida do gradiente

  • É usado para minimizar a função JJ
  • É 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 θ0\theta_0 e θ1\theta_1 um pouco para tentar reduzir J(θ0,θ1)J(\theta_0, \theta_1)
  • Cada vez que você reduzir os parâmetros, selecione o gradiente que reduz J(θ0,θ1)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

Algoritmo da descida do gradiente

  • Mais formalmente, use a regra de atualização

θj:=θjαθjJ(θ0,θ1)\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta_0, \theta_1)

a cada iteração para j{0,1}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?
    θjJ(θ0,θ1)=θj(12mim(hθ(xi)yi)2)\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θ(x)h_\theta(x) por θ0+θ1x\theta_0 + \theta_1 x

=θj(12mim(θ0+θ1xiyi)2)= \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:θ0J(θ0,θ1)=1mim(hθ(xi)yi)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:θ1J(θ0,θ1)=1mim(hθ(xi)yi)xij = 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 θ0\theta_0 e θ1\theta_1
    • Um único ótimo global

Algoritmo da descida do gradiente para regressão Linear

cost_function

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