- Hipótese sobre os dados:
- O que faz:
- Pontos fortes:
- Pontos fracos:
- Como otimiza/tuna:
- O que entra/sai:
- Hipótese sobre os dados:
- Supõe que a target pode ser represetada por uma combinação linear das features (relação linear entre features e target, target é um hiperplano sobre as features)
- Supõe que o noise nos dados é constante (não há heteroelasticidade)
- O que faz:
- Calcula a reta (hiperplano) que minimiza o RMSE para os dados, com método direto (mínimo global, método direto)
- Pontos fortes:
- Parâmetros interpretáveis (módulo maior, mais importante para a feature)
- Fit e predict rápidos
- Pontos fracos:
- Instável quanto à outlier (custam mais ao RMSE, deslocam a reta)
- Não tem hiper-parâmetro para tunar
- Como otimiza/tuna:
- Regularização
- Remoção de outlier
- Aplicar log nas features (ajuda na heteroelasticidade e pode deixar os dados "mais lineares")
- O que entra/sai:
- Entram features numéricas e saem predicts numéricos
- Categórico pode virar dummy
- Hipótese sobre os dados:
- Relação linear entre features e target
- Parâmetros dentro de uma bola na métrica l2 (raio dado pelo
$\lambda$ )
- O que faz:
- Encontra parâmetros que minimizam RMSE +$\lambda||\beta||_2$
- Pontos fortes:
- Predict e inferência rápidos
- Menos sucetível à interferência de outlier
- Parâmetros mais interpretáveis (importância das features mais clara)
- Pontos fracos:
- Não zera parâmetros sem importância
- Como otimiza/tuna:
- Precisa normalizar features para regularização fazer sentido
- Testa
$\lambda$ para regularizar parâmetros
- O que entra/sai:
- Entram features numéricas e saem predicts numéricos
- Categórico pode virar dummy
- Hipótese sobre os dados:
- Relação linear entre features e target
- Parâmetros dentro de uma bola na métrica l1 (raio dado pelo
$\lambda$ )
- O que faz:
- Encontra parâmetros que minimizam RMSE +$\lambda||\beta||_1$
- Pontos fortes:
- Inferência rápida
- Menos sucetível à interferência de outlier
- Parâmetros mais interpretáveis (features não importantes vão ser 0)
- Pontos fracos:
- Algoritmo de fit pode precisar de muitas iterações
- Como otimiza/tuna:
- Precisa normalizar features para regularização fazer sentido
- Testa
$\lambda$ para regularizar parâmetros
- O que entra/sai:
- Entram features numéricas e saem predicts numéricos
- Categórico pode virar dummy
- Hipótese sobre os dados:
- Relação das features com target dada pela função escolhida (target é uma hipersuperficie sobre as features)
- O que faz:
- Cria features aplicando funções não lineares às features/ multiplicando features e fita uma regressão linear sobre esse espaço
- Pontos fortes:
- Consegue capturar colaboração entre features e relções não lineares
- Parâmetros possivelmente interpretáveis
- Pontos fracos:
- Variância maior, não muito estável
- Pode overfittar, parâmetros ficam enormes
- Como otimiza/tuna:
- Escolhe bem as funções e composições
- Best ou Stepwise Foward/Backward/Mixed selection
- Regulariza os parâmetros
- Lasso e Ridge
- Escolhe bem as funções e composições
- O que entra/sai:
- Entram features numéricas e saem predicts numéricos
- Mesmo que seja regressão logística, a saída é um número de [0,1] que sugere probabilidade
- Categórico pode virar dummy
- Entram features numéricas e saem predicts numéricos
- Hipótese sobre os dados:
- Supõe que a kernel aplicada as features permita que a target seja colocada entre dois hiperplanos
- O que faz:
- Transforma as features usando a função do kernel (não faz isso mesmo, usa kernel trick pra calcular os produtos internos, sendo mais eficiente que a regressão não linear) e faz duas SVM's para "classificar" o noise acima e abaixo da target
- Pontos fortes:
- Não precisa transformar as features, sendo mais eficiente
- Transformação do Radial Kernel teria dimensão infiníta e seria literalmente impossível de fazer com regressão
- Não precisa transformar as features, sendo mais eficiente
- Pontos fracos:
- Parâmetros não interpretáveis
- Como otimiza/tuna:
- Z scaling, para "aglutinar" os dados bem próximos de maneira regular (mais facil de separar do noise)
- Escolhe a kernel
- Tuna os parâmetros C e
$\varepsilon$
- O que entra/sai:
- Entram features numéricas e saem predicts numéricos
- Categórico pode virar dummy
- Hipótese sobre os dados:
- target tem mesma média em regiões retangulares nas features
- Algoritmo guloso consegue encontrar tais regiões e médias
- O que faz:
- A cada iteração(nó), seleciona a feature com maior variância na target e separa no meio, tendo cada região restante a estimativa como a média dos targets de treino que ficaram naquela região(folha da árvore)
- Pontos fortes:
- Consegue capturar diversos tipo de relação entre features e não lineares
- Fit e predict rápido
- Resulta numa árvore de decisão muito clara
- Gini permite entender relevância das variáveis
- Gini próximo de 0 indica que a maioria dos exemplos naquele nó é da mesma classe (puro)
- Pontos fracos:
- Variância relativamente alta, pode mudar um tanto conforme amostra
- Algorirtmo de fit pode não conseguir encontrar boa separação pelo paradigma guloso
- Como otimiza/tuna:
- Limita profundidade máxima pra evitar overfit
- Coloca combinação, aplica função nas features, rotaciona o espaço (PCA, Partial Least Squares)
- Boosta (adaboost e xgboost) arvores pequenas pra aumentar diminuir a loss
- Bootstrap/randomforest para arvores profundas para reduzir variância
- Contudo, se perde a interpetabilidade de ter somente uma árvore
- O que entra/sai:
- Entra: features numéricos, categoricos encodados
- Saída:
- No caso de regressão, média das features em cada folha
- No caso de classificação, pode ser voto majoritário
- Calibrar curva ROC
- Hipótese sobre os dados: Supõe que existe k tal que a média dos k vizinhos mais próximos (métrico então depende da norma e da escala) de um exemplo é igual ao seu target
- O que faz:
- Calcula a média/voto majoritário dos k vizinhos mais próximos
- Pontos fortes:
- Altamente adaptavel (variância altíssima e bias pequeno)
- Não tem muito fit
- Pontos fracos:
- Nada interpretável
- Indeciso quanto á dados próximos de fronteira/derivada grande
- Depende fortemente da amostra (variância alta)
- Dados longe de clumps não tem muito parâmetro
- Como otimiza/tuna:
- Seleciona K (validação cruzada, como para tunar qualquer parâmetro)
- Normaliza features
- Alteração no espaço das features distorce a métrica e pode piorar ou melhorar
- Pega mais dados
- Maior densidade de dados permite médias mais "locais"
- Bagging talvez funcione
- Trata a variância extrema do modelo
- Troca de modelo
- O que entra/sai:
- Entra dado numérico (mesmo que encoder de classe) e sair qualquer coisa
- Hipótese sobre os dados:
- Supõe que os target pode ser descrito pela função de ativação aplicada na composição linear (função afim pois tem o termo independente/bias) das features e repetido o processo em cada cada, a depender da topologia da rede
- O que faz:
- Roda o algoritmo de backpropagate para fazer descida de gradiente e minimizar a loss
- Backpropagate calcula a derivada de cada camada, começando da última e usando a regra da cadeia pra calcular das próximas até calcular a derivada da rede toda
- Usa um otimizador não-linear para buscar um mínimo local
- Roda o algoritmo de backpropagate para fazer descida de gradiente e minimizar a loss
- Pontos fortes:
- Adaptável à dados não estruturados (imagens)
- Paralelizável (stockastical gradient descent), então pode ficar rápido com gpu
- Pontos fracos:
- Precisa de muitos dados pra convergir
- Muitos parâmetros
- Totalmente black box, nada interpretável
- Precisa de muitos dados pra convergir
- Como otimiza/tuna:
- Função/funções de ativação
- Inicialização dos pesos
- Algoritmo de descida de gradiente e learning rate
- Topologia da rede/arquitetura
- O que entra/sai:
- Depende da rede
- Hipótese sobre os dados:
- Supõe que uma combinação linear das features passadas pela função logística caracteriza a probabilidade de pertencer àquela classe
- Se baseia na distribuição/probabilidade à posteriori
- O que faz:
- Fita a função logística baseado nas features (distribuição conjunta). Fronteira não linear
- Pontos fortes:
- Não importa se houver correlação entre features
- Simples de interpretar
- Retorna probabilidade então dá pra calibrar curva ROC
- Pontos fracos:
- classes precisam estar bem separadas entre si, e dados da mesma amostra próximos
- Só duas classes
- para multiclass, one vs all ou one versus one
- Como otimiza/tuna:
- Regularização (l1 e l2)
- maximo de iterações
- Feature selection
- Feature engeneering
- Hipótese sobre os dados:
- Supõe que todas as classes são distribuídas de Gaussianas com mesma matrix de covariância, variando a média entre si
- O que faz:
- Encontra a matriz de covariância e as médias, gerando uma fronteira de decisão linear
- Pontos fortes:
- Estima prob, dá pra calibrar ROC
- Funciona multiclasses
- Resultados interpretáveis
- Fit e predict rápidos
- Pode ter classe com poucos dados, sua média pode ser enviesada mas a matriz de covariância usa todos os dados
- Pontos fracos:
- Hipótese limitada, muito bias
- Dados precisam estar bem separados
- Como otimiza/tuna:
- bagging, ensemble
- Regularização dos parâmetros Shrinkage
- Tem que normalizar features
- Hipótese sobre os dados:
- Supõe que todas as classes são distribuídas de Gaussianas com a média e a matrix de covariância variando entre si
- O que faz:
- Encontra as matrizes de covariância e as médias, gerando uma fronteira de decisão não-linear (quadrática)
- Pontos fortes:
- Estima prob, dá pra calibrar ROC
- Simples e interpretável
- Funciona multiclasses
- Fit e preditct rápidos
- Pontos fracos:
- Precisa de uma quantidade de dados por classe, pois precisa, pra cada uma, estimar média e matriz de covariância
- Como otimiza/tuna:
- bagging, ensemble
- Hipótese sobre os dados:
- Feature são independentes entre si (nem sempre são na realidade)
- Usa para calcular a probabilidade à priori, baseado nas distribuições condicionais à posterioris
- Supõe que
- Bernoulli: features vieram de distribuições de Bernoulli (0 ou 1) (útil para onehot encoder)
- Gaussiano: Assume que features foram amostradas de distribuição normal
- Feature são independentes entre si (nem sempre são na realidade)
- O que faz:
- Usa a distribuição à posteriori para estimar a probablidade à priori usando o Teorema de Bayes da probabilidade condicional $$ P(y|x) = \frac{P(x|y)P(x)}{P(y)}$$
- Pontos fortes:
- Multiclass
- Tem método para só incrementar os parâmetros, bom para escalar
- Estima probablidade, dá pra tunar ROC
- Pontos fracos:
- Classes precisam estar bem separados
- Precisa entender a distribuição das features
- Correlação entre features
- Como otimiza/tuna:
- PCA para tentar deixar features independentes (?)
- Feature selection
- Encontra qual distribuição se assemelha aos dados
- Boosting, bootstaping
- Hipótese sobre os dados:
- Supõe que, ao trasnformar as features pela função kernel, as classes possam ser "bem" separadas por um hiperplano
- "bem" entre parenteses pois depende de C para definir quantas falhas podem ocorrer nessa separação
- Supõe que, ao trasnformar as features pela função kernel, as classes possam ser "bem" separadas por um hiperplano
- O que faz:
- Transforma as features usando a função do kernel (não faz isso mesmo, usa kernel trick pra calcular os produtos internos, sendo mais eficiente que a regressão não linear) e encontra o hiperplano com maior margem entre as duas classes
- Pontos fortes:
- Distância da margem indica "confiança" na predição
- Melhor que jogar features não lineares em outros modelos, por conta do kernel trick
- Transformação do kernel radial teria dimensões infinitas, sendo impossível de calcular
- Pontos fracos:
- Binário, para multiclass precisa de one vs all ou one versus one
- Como otimiza/tuna:
- Scalar
- Testa kernel
- Parâmetro C
- Mede separação entre duas distribuições
- Separação perfeita -> 1
- Mesma distribuição -> 0
- Somente classificação binária
- Pode fazer OnevOne ou OnevRest
- Para dados desbalanceados?
- Mostra a "impureza" nos dados
- Quão mal estão distribuidos em uma feature
- Quão misturados os dados estão
- Pode enviesar a base
- Missing pode conter informação
- Pode funcionar se proporção for pequena ou for falta proporcional
- Colocar uma flag ou settar o valor como 0, como a média da feature
- A média numa regressão linear seria o equivalente à ignorar a feature, o que pode ser positivo
- A depender do modelo que vai ser utilizado pode interferir
- Pode se criar uma dummy de missing. Uma árvore pode conseguir capturar a info
- Modelo composto, pode ser desnecessariamente complexo
- Mas pode só tapar os buracos muito bem, um modelos simples para poucos dados.
- Se existir uma coluna fortemente correlacionada, pode fazer sentido ignorar a feature, pois pode carregar pouca informação e atrapalhar com os dados faltantes
- Pode remover dados que atrapalham o modelo
- Regressão linear pode ser bom
- Pode retirar dados que contem informação
- Knn seria péssimo, melhor manter
- Aplicar a função log para tentar deixar os valores menores
- Pode deixar mais difícil de separar algumas classes, mas reduz a variância
- Uma árvore poderia decidir melhor por qual feature separar
- Colocar ">=5000"
- A rigor é uma transformação
- Em dados lineares, seria péssimo, aumentaria muito a loss principalmente pq os dados mais extremos pesam mais na loss
- Caso a target desse grupo seja próxima, pode ajudar uma árvore a melhorar
- Se poucos valores únicos, pode valer a pena fazer dummy
- Pode juntar, com método não supervisionado, em grupos
- Pode juntar por faixas, intervalos de mesmo tamanho
- Pode juntar, com método não supervisionado, em grupos
- Pode juntar por faixas, intervalos de mesmo tamanho ou intervalos que crescem para agrupar os grandes juntos
- Pode ajudar a balancear as classes
- Encontra o hiperplano no qual a projeção dos dados tem a maior variância. Portanto, o vetor normal desse hiperplano descreve os dados, sendo a combinação linear de features.
- Essencialmente, junta features que carregam a mesma informação (pois são correlacionadas)
- Pode ajudar o modelo à não ter que escolher entre dar prioridade à uma ou outra feature.
- Buscar trazer features mais independentes, no sentido de serem LI, enquanto reduz variância dos dados
- Reduz a variância dos dados, podendo evitar overfit
- Quanto mais vetores, melhor explica a variância dos dados, melhor representa os dados