Seleção dinâmica de one-class classifiers

Mesmo sendo desenvolvidos para problemas que tenham apenas dados de uma classe, one-class classifiers (OCCs) também podem ser usados para tarefas que possuem várias classes. Nesse caso, um OCC é treinado para cada classe. Logo, para uma tarefa com n classes, n OCCs serão treinados. A classificação de uma nova instância é realizada da seguinte forma: essa instância é fornecida como entrada para cada um dos OCCs e sua classe é definida como a classe do OCC que responder com maior certeza.

Entretanto, quando uma nuvem de instâncias é multimodal, ou seja, quando essa nuvem possui mais de um grupo, boa parte dos OCCs não consegue lidar com essa dificuldade. Suponha que os pontos vermelhos na figura (a) acima pertençam à classe target e os pontos verdes à classe outlier. Vale destacar que durante o processo de treinamento do OCC, apenas os pontos vermelhos estão disponíveis. Assim, os pontos em verde são mostrados na figura apenas para fins de ilustração. A elipse em preto representa o classificador OCC e engloba todos os pontos vermelhos, dividindo a área do espaço de características em duas: target (dentre da elipse) e outlier (fora da elipse). Nessa figura, é possível notar que vários exemplos da classe outlier estão localizados dentro da região delimitada pelo OCC e, por consequência, esses pontos são incorretamente classificados como pertencentes à classe target. Nota-se também que as instâncias em vermelho compõem uma classe multimodal, ou seja, formada por várias modas/grupos.

Uma alternativa para lidar com essa multi-modalidade é criar várias meta-classes, uma para cada grupo, e treinar um OCC por grupo. Logo, uma nuvem de pontos (uma classe) será representada por vários OCC, um para cada meta-classe ou grupo. O desafio é definir o número de grupos em uma nuvem de pontos e, para esse fim, pode-se usar cluster validity indices para estimar este número.

Entretanto, não existe um índice (cluster validity index) que consiga definir de maneira precisa todos os grupos de qualquer nuvem de pontos, pois tal tarefa depende da medida de distância usada, da estrutura dos dados e de outras características. Em outras palavras, um dado índice pode ser a melhor escolha para uma classe e não ser para outra. Logo, esse mapeamento, do melhor índice por classe, é um problema em aberto.  Além disso, quando os cluster validity indeces são aplicados a uma dada nuvem de pontos, eles podem separar essa nuvem de maneiras diferentes.  Por exemplo, o índice Silhouette pode indicar que a nuvem possui 3 grupos, enquanto o índice NbClust pode indicar 5 grupos.

Diante deste contexto, foi proposto o método One-class Classifier Dynamic Ensemble Selection for Multi-class problems (MODES) que é um sistema de seleção dinâmica de classificadores para tarefas multi-classe. O MODES usa vários índices e treina um OCC para cada grupo definido por cada um dos índices. Essa estratégia permite que a diversidade das informações extraídas pelos índices seja incorporada ao sistema através do treinamento de vários OCCs. Por exemplo: a figura (b) ilustra que um dado cluster validity index encontra dois grupos; assim, dois OCC são treinados, um para cada grupo. Já outros cluster validity indexes encontram 4 e 5 grupos, como mostrado nas figuras (c) e (d), respectivamente; e, mais nove OCCs são treinados. Assim, cada OCC torna-se um especialista em uma determinada área do espaço de caraterística e minimiza o erro de classificar um outiler como target, como ocorre na figura (a).

Vale destacar que no MODES cada classe é tratada individualmente, logo, desbalanceamento entre as classes não é uma preocupação. Além disso, estratégias que decompõem as classes, como é o caso do MODES, podem se apresentar como alternativas interessantes para incremental learning e para open-set recognition

O MODES propõe uma abordagem capaz de lidar com dados que possuem distribuições complexas usando uma estratégia que seleciona dinamicamente os OCCs mais competentes para cada uma das instâncias de teste.


Rogério CP Fragoso, George DC Cavalcanti, Roberto HW Pinheiro, Luiz S Oliveira. Dynamic selection and combination of one-class classifiers for multi-class classification. Knowledge-based Systems, 2021.

One-class classification

Os classificadores tradicionais, tais como árvores de decisão e multi-layer perceptrons, recebem como entrada instâncias de duas ou mais classes e dividem o espaço de características em regiões de forma que cada classe seja representada por uma ou mais regiões. Logo, instâncias de classes diferentes são usadas para melhor definir as bordas entre regiões.

De maneira diferente, one-class classifiers (OCCs) recebem instâncias de apenas uma classe e dividem o espaço de características em apenas duas regiões: target (instâncias que pertencem à classe-alvo) e outliers (instâncias que não pertencem à classe-alvo). Assim, o objetivo de OCCs é determinar se uma dada instância de teste pertence à classe-alvo.

A imagem acima mostra um OCC, representado pela curva em vermelho, que delimita a área do espaço de caraterísticas para a classe-alvo, formada por cajus. Ou seja, todas as instância que se encontram dentro desta região serão ditas cajus e todas as instâncias fora desta região serão classificadas como não-cajus. Logo, esse classificador é potencialmente capaz de distinguir cajus de quaisquer outras frutas e/ou objetos.

Vale ressaltar que em seu processo de treinamento, os OCCs não usam contra-exemplos, pois apenas instâncias da classe-alvo estão disponíveis. Desta forma, os OCCs não dispõem de informação entre as classes para melhor posicionar a fronteira de decisão (curva em vermelho na figura). Em contraste, como apenas uma classe é usada no treinamento, desbalanceamento não é um problema.

Uma maneira simples de construir um OCC é mostrada na figura acima. Nela, um OCC é representado por um círculo em azul. Este círculo foi definido da seguinte forma: primeiro, calcula-se o centro de massa das instâncias (cajus) e, em seguida, define-se um raio que pode ser ajustado de várias formas, por exemplo, como a distância do centro de massa ao caju mais distante.

Nesta figura, três cajus ficaram fora do círculo, logo, estes cajus são classificados como não-cajus, gerando erros de falsos negativos. Além disso, percebem-se espaços vazios dentro do círculo, pois a região de decisão não se ajustou tão bem aos dados de treinamento como no exemplo mostrado na primeira figura.

Um falso positivo ocorre quando uma instância se localiza dentro do círculo e esta instância é, por exemplo, um maracujá, ou seja, um não-caju. Logo, a definição do raio possui um papel fundamental para minimizar os erros de falso negativo e de falso positivo. Quanto menor o raio, maior o erro de falso negativo e menor o erro de falso positivo. Em contrapartida, quanto maior o raio, menor o erro de falso negativo e maior o erro de falso positivo. Assim, podemos pensar nestes dois erros como uma balança, quando um aumenta o outro diminui e vice-versa.

OCCs representam uma classe de classificadores composta por vários algoritmos de treinamento, entre eles: one-class support vector machine, support vector data description, auto-encoder neural network e isolation forest.

Aplicações

OCCs têm encontrado uso nas mais diversas aplicações, tais como: detecção de imagens e de eventos, biometria, detecção de falsificação, classificação de documento e detecção de mudança de conceito. A seguir são descritas três áreas mais abrangentes da aprendizagem de máquina que têm se beneficiado do emprego de OCCs.

OCCs podem ser usados para tarefas multi-classe de maneira que cada classe é modelada por um OCC. Assim, tem-se m OCCs, sendo m o número de classes da tarefa. A inferência da classe de uma instâncias de teste é realizada da seguinte forma: esta instância de teste é fornecida como entrada para cada um dos OCCs e o OCC com o maior grau de certeza indicará a classe.

Detecção de anomalia e de outliers são aplicações nas quais OCCs se apresentam como uma alternativa interessante. Nestas aplicações, deseja-se separar um conjunto de instâncias ditas “normais” de instância que não se encaixam nesta “normalidade”.

Em tarefas com múltiplas classes, open set recognition tem o objetivo de considerar que uma dada instância de teste pode não pertencer a nenhuma das m classes iniciais do sistema. Pode-se considerar este processo como a rejeição da instância de teste, pois a instância não é atribuída a nenhuma das m possíveis classes. Num futuro, este mesmo sistema pode aumentar o número de classes m para incorporar estas instâncias que diferiram das classes preexistentes.