\(\textbf{Aprendizado supervisionado}\) (classificação e regressão): Olhamos para todos os dados incluindo o que queremos predizer.
\(\textbf{Aprendizado não supervisionado}\) (clusterização e estimação de densidade): Só temos as entradas e não as saidas.
\(\textbf{Aprendizado semi-supervisionado}\): Considerar pontos que não tem informação além do conjunto de traino.
\(\textbf{Aprendizado por reforço}\): Um agente interrage com o ambiente por estados recebendo reward por cada ação.
\(\textbf{Aprendizado baseado em instância}\): Decidir uma classificação atravez de pontos proximos no conjunto de traino.
\(\textbf{Aprendizado baseado em modelo}\): Usar os pontos de traino pra construir um modelo e pelo modelo classificar os novos pontos.
\[y(x, \textbf{w}) = w_0 + w_1 x + \ldots + w_M x^M = \sum_{j=0}^M w_j x^j\]
Ajustar (aprender) os parametros do modelo usando os dados e uma função de erro (SSE or RMS).
Usar o modelo ajustado para predição.
Dado um conjundo de N observações (em geral, um vetor) e um conjunto de N valores para cada respectiva observação, queremos predizir o valor de uma nova observação.
\[y(\textbf{x}, \textbf{w}) = w_0 + w_1 x_1 + \ldots + w_D x_D = w_0 + \sum_{i = 1}^D w_i x_i\]
\[y(\textbf{x}, \textbf{w}) = w_0 + \sum_{j = 1}^{M - 1} w_j \phi_j(\textbf{x})\]
\[\phi_j(x) = x^j\]
\[\phi_j(x) = \text{exp} \left ( - \frac{(x - \mu_j)^2}{2 s^2} \right )\]
\[\phi_j (x) = \sigma \left ( \frac{x - \mu_j}{s} \right )\]
\[\sigma(a) = \frac{1}{1 + \text{exp}(-a)}\]
é uma família de métodos para resolver o problema dos mínimos quadrados usando regularização para restringir mais a solução resultante.
\[ y(\textbf{x}, \textbf{w}) = f \left( \sum_{j = 1}^{M-1} w_j \phi_j (\textbf{x}) \right) \]
\[ a_j = \sum_{i=1}^n w_{ji}^{(1)} x_i + w_{j 0}^{(1)} \]
\[z_j = h(a_j)\]
\[ a_k = \sum_{j=1}^m w_{kj}^{(2)} z_j + w_{k 0}^{(2)} \]
Sendo
\[y = f \left( \sum_{j=1}^M w_{k j} z_j \right)\]
\[\text{Para um output simples: } E(\textbf{w}) = \frac{1}{2} \sum_{n=1}^N (y_n - t_n)^2\]
\[\text{Para um vetor de output: } E(\textbf{w}) = \frac{1}{2} \sum_{n=1}^N \sum_{k=1}^K (y_{nk} - t_{nk})^2\]
\[E(\textbf{w}) = - \sum_{n=1}^N t_n \ln y_n + (1 - t_n) \ln (1 - y_n)\]
\[E(\textbf{w}) = - \sum_{n=1}^N \sum_{k=1}^K t_{nk} \ln y_{nk} + (1 - t_{nk}) \ln (1 - y_{nk})\]
\[E(\textbf{w}) = - \sum_{n=1}^N \sum_{k=1}^K t_{nk} \ln y_{nk}\]
Primeiro escolhemos um valor inicial para o vetor de pesos \(w^{(0)}\) e depois atualizamos para um valor melhor de acordo com a função de erro, para atualizarmos podemos usar
\[w^{(t+1)} = w^{(t)} - l \nabla E(\textbf{w}^{(t)})\]
Onde l é o learning rate.
Sendo
\[E(\textbf{w}) = \sum_{n = 1}^N E_n (\textbf{w})\]
onde \(E_n (\textbf{w})\), é o erro do dado n, então
\[w^{(t+1)} = w^{(t)} - l \nabla E_n(\textbf{w}^{(t)})\]
Onde l é o learning rate, o que faz uma atualização com base em um ponto de dados por vez.
\[\delta_j = \frac{\partial E_n}{\partial a_j} = h\'(a_j) \sum_k w_{k j} (y_k - t_k)\]
O Error Backpropagation fornece uma maneira de treinar redes com qualquer número de unidades ocultas dispostas em qualquer número de camadas, seguindo os seguintes passos
Aplique um vetor \(x_n\) para a rede e propage atraves dela;
Avalie o \(\delta_k\) para todas as unidades de output;
Use a formula de brackpropagation para propagar os \(\delta\)’s e obter \(\delta_j\) para as camadas ocultas;
As derivadas requeridas são dadas por \(\delta_j z_i\), onde \(z_i\)é o i-ésimo input para o nó j.
Evitar overfitting do modelo, ou seja, limitar a quantidade de parametros (detalhes clique aqui), um regularizador simples é o quadratico, dado por
\[\widetilde{E}(\textbf{w}) = E(\textbf{w}) + \frac{\lambda}{2} \textbf{w}^T \textbf{w}\]
Clustering é agrupar coisas que ‘’andam juntas’’.
\(\textbf{Statistical}\): assume que os dados são gerados por um certo modelo probabilistico.
\(\textbf{Pairwise}\): defini-se uma função de similaridade entre os dados (distancia por exemplo) e então formula um críterio de otimalidade que o agrupamento deve otimizar.
Sendo os dados um grafo ponderado (da forma
Pairwise
)
Selecionamos um limite t;
Apagamos todas as arestas cujo limite é maior que t;
As partes do grafo que ainda estão conectadas são os clusters, pois são os dados mais próximos.
Seleciona K pontos de dados como centroides iniciais;
Atribui a cada ponto o seu centroide mais proximo;
Recalcula o centroide de cada cluster formado;
Repete (2) e (3) até convergir.
Cada ponto de dados é um cluster;
Toma os 2 clustes mais semelhantes e os junta em 1 cluster;
Repete (2) …
Cluster Growth
: Os candidatos a cluster são grown
(cultivados) a partir de nós de sementes selecionados, independentemente
um do outro. O crescimento é impulsionado pela maximização gananciona de
uma função objeto.
Cluster Merging
: Candidatos a cluster semelhantes
são agrupados no mesmo cluster.
Cluster post-processing
: Os candidatos a cluster são
finalmente pós-processados usando críterios simples.
Para mais veja ClusterONE
Uma Decision Tree é modelo de decisões condicionais em forma de árvore para a classificação ou regressão de um certo conjunto de dados. Uma Decision Tree se baseia em 2 passos:
\[\sum_{j=1}^J \sum_{i \in R_j} (y_i - \hat{y}_{R_j})^2\]
A questão é como sabemos que chegamos numa boa arvore? Um método para encontrar é fazer a maior árvore possivel (esperado que possa ter um dado em cada folha, ou seja, um dado em cada cluster), e depois Pruning (podar a árvore) removendo folhas da arvore e considerando o nó a baixo como a nova folha se essa poda melhorar o desempenho do modelo.
Também podemos apenas interromper o crescimento da árvore que é computacionalmente mais barato, porém, o método de crescer e depois podar aproveita melhor os dados, então é mais preferivel.
O algoritmo irá criar varias árvores de decisão, de maneira aleatória, formando uma floresta, onde cada árvore será utilizada na escolha do resultado final pela função de erro. Esse é um dos melhores algoritmos de aprendizagem.