Resumo de TACD

Taxonomy of ML

ML baseada nos tipos de dados:

  1. \(\textbf{Aprendizado supervisionado}\) (classificação e regressão): Olhamos para todos os dados incluindo o que queremos predizer.

  2. \(\textbf{Aprendizado não supervisionado}\) (clusterização e estimação de densidade): Só temos as entradas e não as saidas.

  3. \(\textbf{Aprendizado semi-supervisionado}\): Considerar pontos que não tem informação além do conjunto de traino.

  4. \(\textbf{Aprendizado por reforço}\): Um agente interrage com o ambiente por estados recebendo reward por cada ação.

ML baseada na facilidade de generalização

  1. \(\textbf{Aprendizado baseado em instância}\): Decidir uma classificação atravez de pontos proximos no conjunto de traino.

  2. \(\textbf{Aprendizado baseado em modelo}\): Usar os pontos de traino pra construir um modelo e pelo modelo classificar os novos pontos.

Key Concepts in ML

O problema de regressão (supervisionada)

  1. Escolher um modelo.

\[y(x, \textbf{w}) = w_0 + w_1 x + \ldots + w_M x^M = \sum_{j=0}^M w_j x^j\]

  1. Ajustar (aprender) os parametros do modelo usando os dados e uma função de erro (SSE or RMS).

  2. Usar o modelo ajustado para predição.

Linear Regression

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})\]

Funções classicas

\[\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)}\]

Regularized Least Squares (RLS)

é uma família de métodos para resolver o problema dos mínimos quadrados usando regularização para restringir mais a solução resultante.

Neural Networks - Part I

Linear models para regressão e classificação, são da forma

\[ y(\textbf{x}, \textbf{w}) = f \left( \sum_{j = 1}^{M-1} w_j \phi_j (\textbf{x}) \right) \]

Neural Networks, seguem os seguintes passos:

  1. Dado um conjunto m de vetores de dados de entrada \(\textbf{x} = x_1, \ldots, x_n\), construimos uma combinação linear da forma

\[ a_j = \sum_{i=1}^n w_{ji}^{(1)} x_i + w_{j 0}^{(1)} \]

  1. Cada combinação passa por uma função de ativação diferenciavel h

\[z_j = h(a_j)\]

  1. Refazemos o processo de 1 tomando z como o novo x

\[ a_k = \sum_{j=1}^m w_{kj}^{(2)} z_j + w_{k 0}^{(2)} \]

  1. E repetimos o processo …

Neural Networks - Part II

Funções de erro

Sendo

\[y = f \left( \sum_{j=1}^M w_{k j} z_j \right)\]

  1. Para regressão, queremos minimizar a função de erro sum of squares error (SSE) da forma

\[\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\]

  1. Para classificação no caso binario, a função de erro aqui é a Cross Entropy que é dada por

\[E(\textbf{w}) = - \sum_{n=1}^N t_n \ln y_n + (1 - t_n) \ln (1 - y_n)\]

  1. Para classificação no caso com k classificadores, a função de erro é a generalização da (2)

\[E(\textbf{w}) = - \sum_{n=1}^N \sum_{k=1}^K t_{nk} \ln y_{nk} + (1 - t_{nk}) \ln (1 - y_{nk})\]

  1. Para classificação no caso com k classificadores, mas excludentes

\[E(\textbf{w}) = - \sum_{n=1}^N \sum_{k=1}^K t_{nk} \ln y_{nk}\]

Achando uma solução pra redes

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

  1. \(\textbf{Gradient Descendent}\)

\[w^{(t+1)} = w^{(t)} - l \nabla E(\textbf{w}^{(t)})\]

Onde l é o learning rate.

  1. \(\textbf{Sequential gradient}\)

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.

Backpropagation: método eficiente de cálculo de derivadas para o gradiente descendente.

\[\delta_j = \frac{\partial E_n}{\partial a_j} = h\'(a_j) \sum_k w_{k j} (y_k - t_k)\]

Neural Networks - Part III

Error Backpropagation: algoritmo de propagação de erro.

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

  1. Aplique um vetor \(x_n\) para a rede e propage atraves dela;

  2. Avalie o \(\delta_k\) para todas as unidades de output;

  3. Use a formula de brackpropagation para propagar os \(\delta\)’s e obter \(\delta_j\) para as camadas ocultas;

  4. As derivadas requeridas são dadas por \(\delta_j z_i\), onde \(z_i\)é o i-ésimo input para o nó j.

Regularization

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 - Part I

Clustering é agrupar coisas que ‘’andam juntas’’.

Clustering Methods (Métodos de agrupamento)

Algoritmos de Clustering

Sendo os dados um grafo ponderado (da forma Pairwise)

  1. Selecionamos um limite t;

  2. Apagamos todas as arestas cujo limite é maior que t;

  3. As partes do grafo que ainda estão conectadas são os clusters, pois são os dados mais próximos.

  1. Seleciona K pontos de dados como centroides iniciais;

  2. Atribui a cada ponto o seu centroide mais proximo;

  3. Recalcula o centroide de cada cluster formado;

  4. Repete (2) e (3) até convergir.

Clustering - Part II

  1. Cada ponto de dados é um cluster;

  2. Toma os 2 clustes mais semelhantes e os junta em 1 cluster;

  3. Repete (2) …

Clustering - Part III

  1. 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.

  2. Cluster Merging: Candidatos a cluster semelhantes são agrupados no mesmo cluster.

  3. Cluster post-processing: Os candidatos a cluster são finalmente pós-processados usando críterios simples.

Para mais veja ClusterONE

Decision Trees - Part I

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:

  1. Dividir o conjunto de features \(X_1, \ldots, X_p\) em j regiões não sobrepostas \(R_1, \ldots, R_j\), de forma a minimizar o erro

\[\sum_{j=1}^J \sum_{i \in R_j} (y_i - \hat{y}_{R_j})^2\]

  1. Para cada dado na região \(R_j\), faça a mesma previsão, ou seja, tome todos os dados de \(R_j\) como iguais, atribuindo por exemplo, a média dos valores resposta para as observações na região \(R_j\).

Decision Trees - Part II

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.

Introduction to Random Forest

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.