MO432 -Outros assuntos Multiclasse, multilabel, desbalanço
Binário - só duas classes
Multiclasse - 3 ou mais classes
Métricas como AUC, especificidade, sensitividade, F1 etc são definidas para 2 classes
Para multiclasse, acurácia funciona
É possível definir F1, por exemplo, considerando cada classe como positiva e as outras negativas (One-vesus-all OVA one-versus-rest OVR)
Mas há várias formas de combinar as medidas para cada classe (media, media proporcional ao tamanho das classes, outros)
Acurácia para multiclasse é normalmente menor que para binario
Nao funcionam diretamente
OVA/OVR - um classificador para cada classe contra as outras
C classes, C classificadores
cada classificador é meio desbalanceado
para testar um dado, passe ele pelos C classificadores, use a maior medida de confiança/probabilidade
OVO - um classificador para cada par de classes
C(C-1)/2 classificadores.
Para testar some as confianças em cada classe.
OVO:
Ha metodos intermediarios ente OVA e OVO (ECOC).
Há metodos hierarquicos - um subconjunto contra o resto, sub-subconjuntos contra o resto dentro de cada opçao.
Sklearn
SVMLinear com um problema multiclasse - OVR https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html multiclass
SVC - OVO https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC veja texto do decision-function-shape
LR tem uma opção de multinomial que eu nao sei bem o que significa. Também OVA https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html multi-class
Uma solução: OVA se confiança > 0.5 diga que pertence aquela classe
https://scikit-learn.org/stable/modules/multiclass.html
mais de uma propriedade, cada um com mais de uma classe
Binario mas uma classe (negativa) é muito maior que a outra.
1 para 3, até 1 para 1000 (classe positiva sobre a negativa)
Acuracia é enganadora pois sempre prever negativo resulta em uma acurácia super alta. Usa-se AUC ou F1 (ou outros). O problema é a sensitividade (taxa de acerto para positivos) que é super baixa.
modifica o threshold para a decisão. Cap 16.4 Isso nao muda o AUC mas permite ter uma melhor sensitividade
modifica os algoritmos de otimizaçao (internos aos classificadores) com pesos diferentes para os falso positivos e negativos (aumentar o custo de falsos negativos) Cap 16.8
veja class weight https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
oversampling - gere dados da classe positiva (SMOTE e varias alternativas) 16.7
downsampling - remove dados da classe negativa (majoritária) 16.7
ensemble de downsample - varios downsample aleatória - monte um bag
Nao ha sampling no sklearn mas há um pacote que estende o sklearn https://imbalanced-learn.readthedocs.io/en/stable/index.html
-qual é a melhor alternativa? Pouco claro. Minha resposta https://arxiv.org/abs/1810.07168