• Nenhum resultado encontrado

2.4 Classificação de dados com distribuição não estacionária

2.4.1 Aprendizado incremental

Muitas aplicações reais requerem classificação em tempo real (incremental), no qual o sistema classificador precisa processar novas instâncias de dados no momento em que são apresentados (Yang e Zhou, 2008). Dentre vários outros exemplos, estão detecção de intrusos (Lane e Brodley, 1998) detecção de fraude em sistemas de cartão de crédito (Wang et al., 2003), problemas relacionados a finanças (Last, 2002), inspeção ultrassônica de solda (Polikar et al., 2004), separação de sinais acústicos (Murata et al., 2002).

Giraud-Carrier (2000) diferencia tarefa incremental de algoritmo incremental, de forma que, uma tarefa de classificação é incremental quando as instâncias de treinamento, us- adas em sua representação, são disponibilizadas ao longo do tempo, geralmente uma de cada vez.

Um algoritmo é incremental se para uma sequência de instâncias de treinamento,

x1, . . . , xN o algoritmo produz uma sequência de classificadores diferentes, que depende

do classificador anterior e das instâncias adicionadas. Em outras palavras, a adição de conhecimento, provindo de um novo exemplo de dado, altera o classificador, sendo que a alteração no classificador depende de como este está organizado internamente.

Note que ambas as definições não fazem restrição quanto ao número de instâncias processadas por vez, i.e. individualmente ou em conjuntos. No entanto, alguns au- tores consideram o processamento individual de instâncias de dados como aprendizado em tempo real. De fato, não há um consenso geral sobre tais nomenclaturas, neste texto será considerada a distinção feita por Minku et al. (2010), que considera o termo apren- dizado incremental como termo geral que não faz restrições quanto à tarefa em questão - portanto vale as definições previamente citadas. Já o termo, aprendizado em tempo real, é considerado mais específico e refere-se somente à classificação onde o processamento (adição de conhecimento) de novas instâncias é realizado de maneira individual.

Vale ressaltar que, em princípio, qualquer tarefa incremental pode ser resolvida, por qualquer algoritmo estático. A solução trivial consiste em retreinar o classificador toda vez que novos exemplos são disponibilizados ou a cada determinado período de tempo. No entanto, esta prática apresenta ao menos três empecilhos, (i) retreinar um classifi- cador, por completo, em geral é um processo custoso computacionalmente (ii) aceitando a proposta de retreinar o classificador, o problema é definir o espaço de tempo para que a substituição do classificador, onde espaço curto implica em maior gasto com treino e frequente perda de dados para classificação, ao passo que longos espaços entre a troca de classificador economiza tempo computacional mas torna-se mais vulnerável à mudança de conceito, o que deteriorará o desempenho do classificador. (iii) determinar o momento da

troca do classificador. i.e. eliminar o classificador corrente por um novo classificador, sem considerar o conjunto em que este será treinado. A taxa de acertos não é confiável para esta tarefa uma vez que esta pode variar se ocorre uma mudança de conceito.

De acordo com Widmer e Kubat (1996), para que o aprendizado incremental seja efi- ciente em ambientes com mudanças de conceito, um algoritmo de aprendizado deve ser capaz de detectar automaticamente mudanças no conceito, recuperar rapidamente o de- sempenho de classificação, ajustar-se ao novo contexto e fazer uso de experiências prévias em situações onde conceitos antigos reaparecem. Geralmente, um algoritmo de apren- dizado incremental precisa de, 1) operadores que permitam alterar o conceito corrente; 2) a habilidade de decidir quando e quantos conceitos antigos devem ser esquecidos e 3) uma estratégia para manter armazenado conceitos corrente e acessá-los quando necessário.

Algoritmos de aprendizado incremental podem ser categorizados com relação à maneira que a memória é utilizada no tratamento de instâncias de dados antigos. Segundo Reinke e Michalski (1988) pode-se estabelecer três categorias. 1) Sem armazenamento de instâncias - algoritmos incrementais que não armazenam os exemplos de dados na forma que são apresentados, tais como, os algoritmos STAGGER (Schlimmer e Granger, 1986), VFDT (Domingos e Hulten, 2000), VFDTc (Gama et al., 2003), entre outros. Geral- mente, algoritmos baseados em redes neurais (Saad, 1999), naive bayes, etc., que não armazenam as instâncias propriamente, mas as utilizam para construir o classificador; 2) armazenamento total de instâncias - métodos que armazenam todas as instâncias apresen- tadas, tais como, o IBk (Aha et al., 1991), GEM (Reinke e Michalski, 1988), o ID5 Utgoff (1988), ITI (Utgoff et al., 1997), entre outros e; 3) armazenamento parcial de instâncias - métodos que armazenam alguns dos exemplos já apresentados, tais como, métodos basea- dos em janelas, o LAIR (Elio e Watanabe, 1991), o AQ11-PM (Maloof e Michalski, 2004) e FLORA (Widmer e Kubat, 1996).

Além da categorização quanto à manutenção da memória com relação a exemplos de dados, Maloof e Michalski (2000) e Maloof e Michalski (2004) prepuseram categorizar os algoritmos incrementais com relação ao armazenamento da descrição de conceitos passados. Por descrição de conceito entende-se algum tipo de estrutura que sintetiza um conceito, assim como um nó em uma árvore de decisão, ou uma regra em um sis- tema especialista. Esta segunda categorização, também pode ser dividida em três, a saber, 1) sem memória de conceito - algoritmos que não armazenam conceito, por ex- emplo, alguns algoritmos baseados em instâncias, tais como IB1 e IB2 Aha et al. (1991), não formam uma descrições de conceitos que generalizam as instâncias pertencentes a este conceito; 2) memória de conceito total - refere-se a sistemas iterativos, como o ITI (Utgoff et al., 1997), descrevem os conceitos por meio dos conjuntos de treinamento, que permanecem na memória até que outro conjunto seja apresentado. Por último, 3) os algoritmos de memória parcial de conceito, no qual armazenam parte dos conceitos apre- sentados, em geral desfazem-se de conceitos antigos. Por exemplo, o algoritmo FAVORIT (Kubat e Krizakova, 1992) induz árvores a partir dos dados, mas mantém um peso para

cada nó da árvore. Esses pesos são atualizados com a chegada de novos dados de treina- mento, e dependem desse reforço para manterem-se na árvore, pois esses pesos sofrem um decréscimo com a passagem do tempo e são retirados da árvore quando decrescem abaixo de certo limiar.

Note que as categorizações são distintas e referem-se a dois critérios diferentes para classificar algoritmos incrementais. Uma abordagem mais profunda sobre essas catego- rias,bem como, outros algoritmos que nestas se encaixam, pode ser encontrado no trabalho de Maloof e Michalski (2004).