Please enable JavaScript.
Coggle requires JavaScript to display documents.
Aprendizado de máquina - Coggle Diagram
Aprendizado de máquina
Modelos de classificação
Regressão logística
Ideia: Usar do modelo linear que já existe para regressão linear, para realizar classificação
Lógica: Como a função linear retorna um valor numérico e não uma classe, para usá-lo em problemas de classificação, calculá-se a probabilidade do dado ser de tal classe por meio de uma função logística.
- Função logística(sigmoide):
1/ (1 + e^(-w^t*xi), onde w^t é a matriz de coeficientes transposta
Problema da otimização: Mesma lógica da regressão linear, porém com os termos ajustados para a regressão logística.
Vantagens:
- Simples e interpretável: Devido a possibilidade de visualiização dos coeficientes do modelo.
- Eficiente: Consegue convergir rapidadamente.
- Saída probabilística: Com isso pode-se definir quando tornar tal predição para uma classe, favorencendo a tomada de decisão e avaliação de risco
- Amplamente utilizado e consolidado
Desvantagens:
- Suposição de linearidade: Assume que a relação entre as variáveis e as razão de chances são lineares
- Expressividade limitada: Não é adequada para relações que não sejam lineares
- Alta necessidade de engenharia de atributos
KNN de classificação
Ideia: Criar uma função que calcule baseado em um parâmetro k, qual a classe que tal dado analisado pertence
- Lógica: Calcula-se a distância do dado que queremos predizer para os k dados mais próximos.
- Critérios de decisão: voto simples, qual a classe que tem mais elementos dentre os k mais próximos, ou voto ponderado por distância, quando o peso é maior para os elementos das classes mais próximas do dado a ser predito
Hiperparâmetros:
- Quantidade de vizinhos K: hiperparâmetro que define quantos elementos vão ser levados em consideração para fazer a conta. Quando k é muito baixo, a função fica muito sensível a outliers e ruídos. Quando k é muito alto, o modelo tende a sofrer um underfitting
- Métrica de distância: hiperparâmetro que define qual vai ser a conta usada para calcular. Distância euclidiana, mais sensível a outliers, distância de manhattan, menos sensível a outliers
Vantagens:
- Fácil de implementar: poucos hiperparâmetros e contas mais simples
- Não requer uma etapa de treinamento: calcula a previsão com base na disposição atual dos dados. Necessita de normalização dos dados.
- **Ideal para conjuntos médios ou pequenos
Desvantagens:
- Sensível a atributos irrelevantes e redundantes: já que calclula quem está mais perto, se não existem muitas pessoas ele fica tendecioso.
- Alto custo computacional e armazenamento
Naive-bayes
Ideia: Utilizar o teorema de bayes para estimar a probabilidade de um dado pertencer a uma classe
- Teorema de bayes:
p(Ai/B) = p(Ai^B)/p(B)
- Algoritmo ingênuo: Sempre ao fazer a predição, devido a fórmula de probabilidade, ele presume que não há relação entre as características do dado, o que normalmente não é verdade, o que origina a classificação como ingênuo
Vantagens:
- Simples e rápido para treinar: Como é somente uma conta de probabilidade para cada feature, pegando a maior não tem muitos fatores a serem analisados
- Bom para dados com altas dimensionalidades: Trabalha com a probabilidade das classes, ou seja, a dimensão do plano não faz diferença para a classificação
- Lida com atributos e contínuos e categóricos
Desvantagens:
- Suposição de independência não é realista
- A acurácia pode cair se os atributos são altamente correlacionados: Como trabalha com probabilidade, se eles são altamente correlacionados, então a diferença de uma classe para outra é pequena, logo a previsão fica mais perto de um chute.
- Requer boas estimativas de probabilidade para eventos raros: Como ele maximiza as probabilidades, ele tende para a que possui a maior probabilidade, logo se o evento é raro existem poucas situações em que o algoritmo irá tender para os casos raros
Suavização de LaPlace: Resolução para o problema de um atributo nunca aparecer para uma classe, o que zera o produtório e consequentemente a sua probabilidade. Acrescenta-se um valor a para função de probabiliade para evitar esse problema
Árvore de decisão
Ideia: Imitar o processo de decisão humana. É criado uma função que "faz" uma série de perguntas para chegar a uma conclusão
Caracteríticas da árvore:
- Nó raiz: É o ponto de partida da árvore e representa aquela característica mais relevante para a predição, ou seja, a partir dela gera-se uma divisão mais exata para as classificações
- Nós internos: Condições/características do caminho que está sendo percorrido na árvore. Cada nó possui um ou mais filhos
- Nós folha: Ponto final da árvore, onde contém o resultado da predição do caminho escolhido
- Regra de decisão: Caminho da raiz até a folha
Procedimento da árvore de decisão:
- Cálculo de impureza: Importante para servir de base para o cálculo de ganho de informações
- Calcular ganho de informações de cada feature: para categóricas, calcular cada valor, para contínuas, encontrar o melhor threshold. Importante para definir a melhor feature para aquela etapa.
- Escolher a feature com maior ganho: define essa feature como nó daquele instante
- Dividir os dados com base na feature: Gera os próximos filhos daquele nó.
Tratamento de features contíuas:
- Discretização automática:
- Ordenar valores
- Identificar pontos de cortes
- Testar cada corte
- Calcular ganho de cada corte:
Critérios de parada:
- Nó puro: todas as amostras possuem a mesma classe. Isso ocorre quando todas as métricas dão 0. Nesse caso gera-se uma folha
- Amostras insuficientes: Caso o número de amostras seja muito pequeno, isso pode gerar um overfitting ao splitar e gerar um novo nó. Nesse caso gera-se uma folha
- Profundidade máxima: Ação que limita o crescimento da árvore. Isso tem o intuito de controlar a complexidade da árvore, o que contribui para diminuir a chance de gerar um overfitting. Nesse caso, gera-se uma folha ao atingir a profundidade definida como máxima
- Ganho insuficiente: Condição de parada que impede a divisão e geração de um novo nível quando o melhor ganho é menor que um ganho mínimo definido. Isso tem o objetivo de diminuir a complexidade e consequentemente a chance de gerar um overfitting
- Features esgotadas: Não se existem mais features para serem comparadas. Nesse caso cria-se uma folha com a classe majoritária. Obs: Existem algoritmos que reutilizam features e continuam a árvore.
Vantagens:
- Fácil de ser implementada
- Processo sistemático e interpretável que permite:
- Decisões viáveis: Cada predição pode ser rastreada => Regra de decisão
- Lógica clara: Cada nó é gerado por meio de um ganho de informação
- Auditabilidade: Permite aos reguladores examinar cada decisão
Desvantagens:
- Instabilidade e alta variância:
- Muito sensível a exemplos
- Efeito cascata: Uma mudança em um nível afeta todos os níveis abaixo dele**
- Tendência a overfitting
- Performance limitada
Overfitting em árvore de decisão:
- Árvore muito grande
- Memorização
- Performance ilusória
- Complexidade excessiva
Solução: Prunign
Pruning:
- Ideia: Remoção de subárvores com o intuito de reduzir a complexidade e aumentar a generalização do modelo
- 2 more items...
SVM
Ideia: Técnica de predição que, por meio da criação de um hiperplano, decidir a qual classe um certo dado pertence, ao calcular a sua distância para o hiperplano
Conjunto de dados linearmente separável:
- Fórmula do hiperplano de decisão: W*X + b = 0, onde
- W: Vetor de features
- X: Vetor dos pesos das features
- b: um bias, responsável por flexibilizar a posição do hiperplano
- Hiperplano de margem:
- Superior: W*X + b = 1
- Inferior: W*X + b = -1
- Margem de separação: d = 2/ ||W||
- Critério de escolha do melhor hiperplano: Aquele que maximiza a margem de separação entre as classes
Treinamento do SVM:
- Problema de otimização: Encontrar o hiperplano ótimo que maximize a margem de separação
- Restrições:
- Minimizar: (1/2)*||W||²
- Sujeito: yi(W*Xi + b) >= 1
- Processo completo:
- Resolver o problema dual para obter os valores de a
- **Identificar os support vectors
- **Calcular W com a expressão encontrada apenas nos support vectors
- Calcular b usando qualquer support vector ou a média deles
- **Verificar se a condição KTT é satisfeita
- *O hiperplano de decisão final será h(X) = W^tX
Multiplicadores de Lagrange:
- Fórmula: L(w, b, a) = f(w, b) + SOM(ai*gi(w, b))
- Aplicando a fórmula: L(w, b, a) = (1/2)||W||² + SOM(ai(1 - yi(W*Xi + b))
Condições de Karush-Kuhn-Tucker
- Gradientes nulos:
- delta(wL) = 0 => w - SOM(ai yi xi) => w = SOM(ai xi yi), logo o vetor w que define o hiperplano é uma combinação linear dos vetores de treinamento xi. *Vetores suporte: são os pontos com ai > 0.
- delta(b L) = 0 => -SOM(ai yi) = 0, logo a solução é balanceada entre as classes, não há vies sistemático para um classe específica
- Restrições primais satisfeitas:
- yi(Wxi + b) >= 1, para todo i
- Multiplicadores não negativos: ai >= 0, para todo i
- Condições de complementaridade: ai[yi(W*xi + b) - 1~= 0
Conjunto de dados não linearmente separáveis:
- Funções de kernel: São funções criadas para poder transformar o espaço original(não linearmente separável) para um espaço de maior dimensão onde ele passa a ser lineamente seprável. Essas funções não mapeam os dados para uma dimensão maior, ao invés disso eles fazem uma conta(produto interno)
- Kernel linear
- Kernel polinomial
- Kernel RBF
- Kernel sigmóide
SVM para multiclasse:
- One vs Rest: treina-se k classificadores, em que em cada classificador faz-se uma comparação de uma classe com as outras e no final, a classe a qual aquele dado analisado irá pertencer, será a que possuir o maior score na classificação
- Vantagens:
- Simples de implementar: Basta gerar os k classificadores
- Eficiente computacionalmente
- Desvantagens:
- Classes desequilibradas: compara-se 1 contra k - 1 classes
- Regiões de indecisão: Isso ocorre quando os scores são muito parecidos, logo não tem como se afirmar seguramente que aquele dado pertence aquela classe
- One vs One: Gera-se k*(k - 1)/2 classificadores e em cada um deles faz-se uma comparação de pares, onde uma classe é comparada a outra para saber qual a mais coerente dentre elas para o dado analisado. Ao final das classificações o dado será direcionado a classe que tive ganho mais "duelos"
- Vantagens:
- Classes balanceadas
- Mais robusto
- Desvantagens:
- Muitos classificadores: O(k²)
- Mais lento para treinar e predizer
Vantagens:
- Efetivo em altas dimensões: uso das funções de kernel
- Memória eficiente: usa somente os suppor vectors para predição
- Versatilidade dos kernels
- Fundamentação matemática sólida
Desvantagens:
- Não fornece probabilidade
- Sensível à escala dos dados: normalização obrigatória
- Seleção complexa de hiperparâmetros
- Perfomance ruim em datasets grandes: Demora para treinar
- Sensível a ruidos e outliers: pois os cálculos das margens dependem do cálculos das distâncias
Quando usar:
- Dados com muitas features
- Dataset pequeno/médio
- Precisão mais importante que interpretabilidade: SVM não é de fácil auditabilidade, não tem os coeficientes da regressão logística e os nós das árvores de decisão
- Relação não linear complexa
- **Problema bem definido
Quando não usar:
- Dataset muito grande: alto custo e tempo do svm
- Precisa de probabilidades narrativas
- Interpretabilidade crucial
- **Dados tem muitos ruídos
- Recursoso computacionais limitados
Modelos de regressão
Regressão linear
Ideia: Gerar uma função formada pelos valores de cada feature do que quer ser predito, multiplicado por um coeficiente mais um termo de erro.
Lógica: Para conseguir a melhor predição, tenta-se minimizar a soma dos ruídos que são gerados com a prediçã
OLS: Busca por meio da resolução da seguinte equação: (X^T X)' X^T * y.
Onde:
- X: é a matriz de coeficientes
- X^T: a sua transposta
- y: O alvo a ser predito
Vantagens:
- Solução analítica: Evita iterações, já que basta resolver uma equação
- Eficiente para conjuntos pequenos e médios: Para conjuntos grandes não é muito eficiente, já que o cálculo da matriz inversa e a multiplicação de matriz fica muito custoso
- Método padrão de regressão linear
Desvantagens:
- Sensível a outliers: Por ele estar fazendo uma conta, caso existam outliers eles irão influenciar drasticamente no valor da conta
- Custo da inversão da matriz: inviável para datasets grandes
Regressão Ridge:
- Definição: função criada para contornar possíveis correlações e overfittings no modelo, por meio da adição de uma penalidade que proporciona maior capacidade de generalização do modelo
- Quando usar?
- Quando há multicolinearidade entre os preditores
- Quando espera-se que todas as varíáveis sejam mantidas e tenham alguma influência
Regressão Lasso:
- Definição: Segue a mesma lógica da regressão ridge, porém ela pode reduzir coeficientes para zero, eliminando completamente sua influência no modelo de predição
Gradiente descendente: Método iterativo, que busca os parâmetros do modelo que geram o menor erro de predição, ou seja, eles vão gerando parâmetros e indo para direção que gera o menor erro até que haja convergência
- Fórmula: B^(t + 1) = B^t + N (1/n) (Somatório de i a n)(yi - ^yi)*xij
- Onde:
- N é a taxa de aprendizagem do modelo
-
Vantagens:
- Bom para grandes datasets
- Permite aprendizagem online e incremental
- Flexível e extensível para regularização de parâmetros
Resumo: Ele é mais flexível que o OLS
Desvantagens:
- Requer a definição e ajuste da taxa de aprendizagem
- Convergência pode ser lenta
- Pode ficar preso em mínimos locais
KNN de regressão
Lógica: Mesma do KNN de classificação, porém ele gera os rótulos com base na média dos dados que possuem o mesmo rótulo ou a média ponderada das distâncias de dados que possuem o mesmo rótulo
Árvore de regressão
Lógica: Mesma lógica da árvore de decisão, porém retorna valores e suas métricas de decisão para ganho de informação são MSE ou variância
SVR
Lógica: Continua a mesma do SVM padrão, porém, ao invés de separar classes, ele busca ajustar uma função contínua, ou seja, ele gera uma função que prediz um valor e tenta minimizar o erro dessa função dentro de uma faixa de tolerância
Rede Neural
McCulloch-Pitts
Ideia: Simular um neurônio de verdade, em que possui impulsos excitatórios e inibidores
Fórmula: O^(k + 1)
Onde:
- Wi: Impulso, que pode ser 1 ou -1
- Xi^k: Valor da feature, que pode ser 0 ou 1
- T: Valor de threshold que é definido arbitrariamente para saber quando vai ser 0 ou 1
-
-
OBS: Se um neurônio possui peso e threshold unitário, então o próximo valor gerado será igual ao anterior, gerando um registrador
-
Percepton de Rosemblatt
Ideia: Fazer uma combinação linear de inputs com suas próprias sinapses, mais um bias. O resultado é aplicado a um hard limiter que a partir dele irá decidir se a saída do neurônio é 1, se o input do hard limiter é positivo, -1 se negativo.
Caso considere-se o bias como uma entrada de valor fixo 1, a fórmula vira uma matriz entre os inputs e pesos
Objetivo do percepton: Classificar corretamente um estímulo externo em duas classes, ou seja, ele serve para classificações lineares.
Como ele faz: Ao ajustar os pesos com a percepton learning rule, ele gera um hiperplano que separa as duas classes e com base nele classifica os dados em uma das duas classes
Percepton learnign rule: Método de aprendizado supervisionado que permite ao percepton ajustar os pesos sináptico iterativamente
Processo:
- 1: Inicialização do vetor de pesos e do bias, com valores aleatórios pequenos e uma taxa de aprendizado que varia normalmente entre 0.1 1
- 2: Para cade exemplo de treinamento cálcula-se os seguintes valores
- Saída = w*x + b
- Erro: d - saída
- Ajuste nos pesos: o valor dos pesos para a próxima iteração é definida pelo: w(peso atual) + N(taxa de aprendizagem)ex. O mesmo é feito para o bias
- Repete o processo até convergir
Hebbian learning rule:
o que muda é a maneira de calcular o erro que é calculado. Nesse caso o erro é o próprio output do neurônio ao invés da diferença
Delta learnign rule:
- OBS: Somente válido para funções de ativação contínuas e método de treino supervisionado
- r = e(erro do percepton padrão) *f'(wx + b)
- **f'(wx + b) é a derivada de f(net)
Widrow-Hoff: least mean square learning rule
- r = d - wx
- Wk+ 1 = wk + nrx
-
Winner take-all
- Voltada para aprendizado não supervisionado
- Para definir a learning rule, encontra-se aquele neurônio que retorna o maior valor para o input x e somente o peso desse vetor é ajustado
w(m, k + 1) = w(m, k) + n(x - wm)
XOR Problem: Tipo de problema que derrubou a ideia do percepton de rosemblatt, pois é um problema não linear
Solução: Mais de uma camada de neurônios
- Profundidade: Permite representações mais complexas
- Backpropagation: Algoritmo necessário para o treinamento de multicamadas
- Funções de ativação não lineares
-
-