---
presentation:
theme: beige.css
slideNumber: true
width: 1024
height: 768
---
## Aprendizado de Máquina
##### Prof. Ronaldo Cristiano Prati
[ronaldo.prati@ufabc.edu.br](mailto:ronaldo.prati@ufabc.edu.br)
###### Bloco A, Sala 513-2
### Desempenho
- Quando treinamos um algoritmo de aprendizado, geralmente queremos otimizar o desempenhos (e.g., minimizar o erro)
- Podemos pensar que um erro pequeno é bom, mas isso não necessariamente significa um bom modelo
- Podemos estar causando um **overfitting** nos dados
- O modelo se sai bem nos dados de treino, mas não generaliza bem
### Conjunto de teste
- Uma abordagem comum para avaliar o desempenho é utilizar um conjunto separado de teste
- Uma estratégia comum é dividir o nosso conjunto de dados em duas partes:
- Uma parte é o **conjunto de treino**
- Segunda parte é o **conjunto de teste**
- Uma divisão típica é 70%:30% (treino:teste), ou 2/3:1/3
### Validação cruzada
- Usar uma única divisão de treino e teste pode ter alguns problemas:
- O éxemplo só é usado ou para treinar ou para testar
- E se no conjunto de teste só aparecerem exemplos "fáceis"?
- Alguns exemplos "importantes" podem não ser vistos pelo algoritmo.
- O modelo é robusto a variações nos dados?
### Validação cruzada
- Validação cruzada visa contornar esses problemas:
- Validação cruzada em $k$ pastas ($k$-fold cross validation)
- Dividir o conjunto de dados em $k$ partes
- Repetir o treinamento/teste $k$ vezes
- A cada iteração, umsar uma parte diferente para testar, e as outras $k-1$ para treinar
- O desempenho é calculado como a média das $k$ repetiçoes
### Validação cruzada K-fold
![Validação cruzada](kfold.png)
### Bias e variância
- Quando analizamos o desempenho de um modelo de predição, é importante entender as fontes de erro
- Existe um compromisso entre duas fontes: **bias** e **variância**
- Bias: erro sistemático devido à suposições feitas pelo algoritmo
- Variância: erro devido à características particulares dos dados de treinamento
- Erro irredutível: erros "inerentes" ao problema (por exemplo, devido a falta de informação relevante nos dados)
### Bias e variância
### Bias e variância
- Um modelo com alto bias pode ser muito simples para o problema
- Um modelo com alta variância tende a super ajustar aos dados de treinamento, e não generalizar o suficiente para novos dados
![Bias Variance](bias_var_model.png)
### Bias e variância
![Bias Variance](bias_var_performance.png)
### Exemplo - regressão linear
![Bias Variance](rlinear-biasvar.png)
### Exemplo - regressão linear
- Usar uma função linear temos **underfitting** (alto bias). O modelo não é bom
- Usar um polinômio 2o. grau funciona bem para esse problema em particular
- Polinômio 4o. grau o modelo super-ajusta aos dados de treino **overfitting** (alta variância)
### Exemplo - regressão logística
![Bias Variance](rlogistic-biasvar.png)
### Exemplo - regressão logística
- A função sigmoide não se ajusta bem aos dados
- Um polinômio de grau 2 funciona bem para esse problema em particular
- Um polinômio de grau maior superajusta aos dados
### Lidando com overfitting
- Em problemas reais, nem sempre é possível visualizar os dados para verificar se está ocorrendo overfitting
- Em geral, temos muitos atributos (não é só um problema de ajustar o grau do polinômio)
- Se temos poucos exemplos, o problema pode ser mais difícil de lidar
### Lidando com overfitting
1. Reduzir o número de atributos:
- Manualmente selecionar quais atributos manter
- Usar algum procedimento de seleção de atributos (voltaremos a esse ponto mais adiante)
- Eventualmente pode descartar informação relevante
2. Regularização
- Manter todos os atributos, mas controlar a magnitude dos parâmetros $\theta$
- Limita a contribuição de cada atributo na predição de $y$
### Regularização
- Ideia: alterar a função de custo para que alguns valores $\theta$ sejam pequenos
- Por exemplo, se adicionarmos uma penalização a $\theta_3$ e $\theta_4$ ao ajustar um polinômio de 4o. grau, esses coeficientes ficarão perto de zero, e teremos uma função quase quadrática
$$\min_\theta\frac{1}{2m}\sum_{i=1}^m (h\theta(x) - y)^2 + 1000 (\theta_3^2 + \theta_4^2) $$
![Bias Variance](reg_ex.png)
### Regularização
- Valores pequenos para parâmetro correspondem a hipóteses mais simples (eventualmente, alguns termos desaparecem)
- Uma hipótese mais simples é menos sucetível a overfitting
### Regularização
- Como escolhemos quais parâmetros penalizar?
- Em geral, adicionamos um termo que penaliza todos os parâmetros
- Por convenção, $\theta_0$ geralmente não é penalizado (mas terá pouco impacto se você incluir esse termo na regularização)
- Adicionamos um termo extra ao final da função de custo:
$$J(\theta) = \frac{1}{2m}\sum_{i=i}^m (h\theta(x^i) - y^i)^2 + \lambda \sum_{j=1}^n \theta_j $$
### Regularização
- $\lambda$ é um parâmetro de regularização
- Ele controla o compromisso entre
1. Criar um bom modelo para o conjunto de dados
2. Manter os valores the $\theta$ baixos
- Se $\lambda$ for muito alto, penalizamos todos os parâmetros (todos os $\theta$ próximos a zero) e podemos ter underfitting
- Se $\lambda$ for muito baixo, a regularização tem pouca efitividade e podemos ter overfitting
### Regressão linear regularizada
- O gradiente da função regularizada é dado por:
$$
\frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m} \sum_{i=1}^m(h\theta(x^i) -y^i)x_j^i + \frac{\lambda}{m}\theta_j
$$
- O que nos leva a uma atualização de $\theta$:
$$
\theta_j := \theta_j (1-\alpha\frac{\lambda}{m}) - \alpha \frac{1}{m} \sum_{i=1}^m(h\theta(x^i) -y^i)x_j^i
$$
### Regressão linear regularizada
- Qual é o efeito da regularização?
- O termo $(1 - \alpha\frac{\lambda}{m})$ geralmente é um número ligeiramente menor que 1. $m$ é geralmente grande, e $\alpha$ e $\lambda$ são geralmente pequenos. Então temos (1 - número pequeno). Então esse termo gira em torno de 0.95 a 0.99, tipicamente.
- Isso faz com que o termo $\theta_j$ decresça um pouco de uma iteração para outra.
- O outro termo é exatametne igual ao gradiente descendente original
### Regressão linear regularizada
- Equação Normal, adiciona um termo extra $\lambda$ multiplicado pela (n+1) matriz identidade:
$$
\theta = \left(x^\intercal x + \lambda
\begin{bmatrix}
0 & \dots & 0 & 0 & 0 \\
0 & 1 & 0 & \dots & 0 \\
& & \dots & \\
0 & \dots & 0 & 0 & 1
\end{bmatrix}
\right)^{-1} x^\intercal y
$$
### Regressão logistica regularizada
- É similar ao caso da regressão linear, mas usando a função de custo da regressão logística
$$J(\theta) = \frac{1}{2m}\sum_{i=i}^m Cost(h_\theta(x),y) + \lambda \sum_{j=1}^n \theta_j$$
- em que:
$$ Cost(h_\theta(x),y) = -ylog(h_\theta(x)) - (1-y)log(1-h_\theta(x)) $$
- A derivada tem um formato parecido com a regressão linear (com a devida função de custo)
### Tentativas para melhorar o modelo
- Aumentar o conjunto de dados
- Tentar selecionar os melhores atributos
- Buscar novos atributos
- Realizar transformações nos dados (e.g., atributos polinomiais)
- Combinar atributos
- Ajustar o valor de $\lambda$
### Curva de aprendizado
- Pode ser útil para identificar a causa dos erros
![Curva de aprendizado](learning_curve.png)
### Curva de aprendizado
- Outras opções:
- Erro x tamanho do conjunto de treino
Temos um problema de variância?
- Erro x $\lambda$
Temos um problema de bias?
### Curva de aprendizado