Experimentos para o artigo WITCC'08

De LCAD
Revisão de 13h26min de 6 de maio de 2008 por Bzmelotti (discussão | contribs) (Experimentos com as novas métricas)
Ir para: navegação, pesquisa

Experimentos para o artigo WITCC'08

Questões a serem discutidas


  • Questões a serem discutidas
    • Schapire (2000) que propôs o Boostexter, adota 3-fold cross validation. Será que não seria o caso de fazermos o mesmo por questões de tempo? O problema de adotarmos 3-fold cross validation (ao invés de 10-fold) é que teríamos apenas 3 avaliações de cada método de categorização para um teste estatístico de comparação dos métodos
    • Parece que o Boostexter exige um número imenso de rounds para atingir o ponto de convergência (a partir do qual um aumento no número de rounds não produz melhoras de desempenho).
      • Precisamos fazer uma estimativa de tempo e qualidade dos resultados das métricas com 1.000, 5.000 e 10.000 rounds, por exemplo, a fim de avaliarmos a viabilidade do uso de Boostexter sobre a coleção do SCAE no nível de subclasses

Configuração dos experimentos


1. Coleção

  • Conjuntos de treino e teste
    • Conjunto CNAE: Tabela CNAE_110_SUBCLASSE, campo DESCRICAO_SUB, linhas 0 a 1182
    • Conjunto VIX: Tabela DADOS_VITORIA_SUB_110, campo OBJETO_SOCIAL, linhas 0 a 3280
  • Pré-processamento
    • Usar o dicionário completo corrigido
    • Remover do vocabulário as 6 seguintes categorias gramaticais: artigo, conjunção, contração, interjeição, preposição e pronome
    • Computar pesos dos termos usando tfidf

2. Configuração dos Experimentos

  • Testar os seguintes métodos de categorização
    • WNN e WNN_COR
      • Parâmetros a serem ajustados: número de neurônios e número de sinapses
      • Nos experimentos de validação, experimentar redes com 8x8, 8x16, 16x16, e 32x16 neurônios e 256 e 512, 1024 sinapses
    • VS
      • Não tem parâmetros (que maravilha!!! :-))
    • ML-KNN
      • Parâmetros: número de vizinhos mais próximos. Deixar os outros parâmetros com o valor padrão (smooth=1)
      • Nos experimentos de validação, experimentar 6, 8, 10, 12 e 14 vizinhos mais próximos
    • Boostexter
      • Parâmetros: número de rounds
      • Nos experimentos de validação, experimentar ? rounds
  • Avaliar os categorizadores através das seguintes métricas:
    • One-error
    • Ranking loss
    • Coverage
    • Average precision
    • Hit rate
  • Usar a abordagem k-fold cross validation, com k=10, para testar cada um dos métodos de categorização
    • O conjunto VIX deverá ser particionado em k subconjuntos. Dos k subconjuntos, um único subconjunto deverá ser retido para testar o modelo, e os k-1 subconjuntos restantes deverão ser usados como dado de treino. O processo de cross-validation deverá ser repetido k vezes (folds F1, F2, ..., Fk), com cada um dos k subconjuntos usados exatamente uma vez como dado de teste. Os k resultados dos folds serão então combinados para produzir uma única estimativa, ou seja, serão reportadas as médias dos k valores produzidos para cada uma das métricas.
    • Usar o conjunto CNAE como dado de treino em cada fold Fi
    • Salvar os valores de todas as métricas para cada fold Fi de teste num arquivo de texto com o seguinte formato: cada linha corresponde a um fold Fi de teste; e cada coluna corresponde a uma métrica de avaliação
      • Por exemplo, se os melhores parâmetros para o WNN for 16x16 neurônios e 512 sinapses, o arquivo wnn_test_16x16_512.txt com resultados de teste do WNN seria:
        • 16 16 512 x1 y1 z1 m1 n1
        • 16 16 512 x2 y2 z2 m2 n2
        • . . .
        • 16 16 512 x10 y10 z10 m10 n10
        • onde 16 na primeira coluna e 16 na segunda coluna indicam 16x16 neurônios; 512 na terceira coluna indica 512 sinapses; e xi, yi, zi, mi, e ni indicam os valores de one-error, ranking loss, coverage, average precision e hit rate
    • As médias dos k valores produzidos (pelos k folds) para cada uma das métricas serão calculadas a partir desse arquivo.
  • Usar a abordagem k-fold cross validation, com k=10, para validar cada um dos métodos de categorização. A validação consiste em encontrar, para cada um dos métodos de categorização, os parâmetros que produzem os melhores resultados
    • O fold F1 deverá ser particionado em k subconjuntos. Dos k subconjuntos, um único subconjunto deverá ser retido para validar o modelo, e os k-1 subconjuntos restantes deverão ser usados como dado de treino. O processo de cross-validation para validação deverá ser repetido k vezes (F11, F12, ..., F1k), com cada um dos subconjuntos F1j, 1<=j<=k, usados exatamente uma vez como dado de teste.
    • Usar o conjunto CNAE como dado de treino em cada fold F1j
    • Suponha que o método tenha dois parâmetros x e y, que podem assumir variados valores x_i e y_j. Os experimentos de k-fold cross validation deverão ser repetidos várias vezes, para variadas combinações de x_i e y_j (x_1, y_1; x_1, y_2; x_2 y_1; x_2, y_2). A combinação x_i e y_j que produzir os melhores resultados será escolhida para os experimentos de teste
    • Para cada combinação de parâmetros, salvar os valores de todas as métricas para cada fold F1i de validação num arquivo de texto com o seguinte formato: cada linha corresponde a um fold F1i de teste; e cada coluna corresponde a uma métrica de avaliação
      • Por exemplo, o arquivo wnn_validation_8x8_256.txt com resultados de validação do WNN com a combinação de parâmetros 8x8 neurônios e 256 sinapses seria
        • 8 8 256 x1 y1 z1 m1 n1
        • 8 8 256 x2 y2 z2 m2 n2
        • ...
        • 8 8 256 x10 y10 z10 m10 n10
        • onde 8 na primeira coluna e 8 na segunda coluna indicam 8x8 neurônios; 256 na terceira coluna indica 256 sinapses; e xi, yi, zi, mi, e ni indicam os valores de one-error, ranking loss, coverage, average precision e hit rate
    • Para cada combinação de parâmetros, as médias dos k valores produzidos (pelos k folds) para cada uma das métricas serão calculadas a partir desse arquivo


Experimentos Pré-liminares com WNN_CORE


O objetivo deste experimento é verificar o tempo de execução para realizar a otimização dos parâmetros número de sinapses e número de neurônios do WNN_CORE.

Os experimentos foram realizados com as bases CNAE_110_SUBCLASSE e DADOS_VITORIA_SUB_110 utilizando a técnica k-fold cross validation onmde k = 10. Foram realizados apenas 2 iterações do k-fold para verificar se a base CNAE_110_SUBCLASSE gera algum ruído para o classificador. O procedimento para realização desses experimentos foram:

  • A base DADOS_VITORIA_SUB_110 foi dividida em 10 partes, onde 9 partes foi para a base de treino e 1 parte foi para a parte de teste;
  • Geração do Lexicon com a seguinte configuração:
    • Remoção das classes gramáticais: artigo, conjução, contração, interjeição, preposição e pronome;
    • Utilizando as bases: CNAE_110_SUBCLASSE:0:1182 e DADOS_VITORIA_SUB_110:0:2952;
  • Para realizar a otimização dos parâmetros do CORE, a 9 partes de treino foi novamente dividida novamente em 10 partes, onde dessa divisão 9 partes foi para treino e 1 parte para validação. Então, a configuração dos limites para as duas iterações foram:
    • Iteração 1:
      • Treino: CNAE_110_SUBCLASSE:0:1182 DADOS_VITORIA_SUB_110:0:2657;
      • Validação: DADOS_VITORIA_SUB_110:2658:2952;
    • Iteração 2:
      • Treino: CNAE_110_SUBCLASSE:0:1182 DADOS_VITORIA_SUB_110:295:2952;
      • Validação: DADOS_VITORIA_SUB_110:0:294;
  • O WNN_CORE foi experimentado com os seguintes parâmetros:
    • 16x16 neurônios;
    • 256 e 512 synapses;

O tempo de execução para cada fase foram:

  • Interação 1:
    • 256:
      • Treino: 4m52s
      • Teste: 2m12s
    • 512:
      • Treino: 4m34s
      • Teste: 3m54s
  • Interação 2:
    • 256:
      • Treino: 4m30s
      • Teste: 3m31s
    • 512:
      • Treino: 4m45s
      • Teste: 3m55s

As métricas de desempenho para cada iteração foram:

Synpases Iteração Coverage Average Precision Ranking Loss One Error
256 1 39,56 0,65 0,11 0,28
512 1 29,42 0,72 0,09 0,19
256 2
512 2 38,59 0,67 0,12 0,25

Para verificar se a base CNAE_110_SUBCLASSE insere algum ruído para o classificador, realizou-se o seguinte procedimento:

  • Do experimento anterior, retirou-se a base CNAE_110_SUBCLASSE e manteve a base DADOS_VITORIA_SUB_110 com limites anteriores;
  • Realizou-se os experimentos com 16x16 neurônios e 512 sinapses para as duas iterações.

As métricas de desempenho para cada iteração foram:

Synpases Iteração Coverage Average Precision Ranking Loss One Error
512 1 34,49 0,66 0,16 0,24
512 2 39,44 0,60 0,20 0,30


Experimentos Pré-liminares com BOOSTEXTER_CORE


O objetivo deste experimento é verificar o tempo de execução para realizar a otimização do parâmetro número de rounds do BOOSTEXTER_CORE.

Os experimentos foram realizados com as bases CNAE_110_SUBCLASSE e DADOS_VITORIA_SUB_110 utilizando a técnica k-fold cross validation onmde k = 10. Foi realizado apenas 1 iteração do k-fold. O procedimento para realização desse experimento foi:

  • A base DADOS_VITORIA_SUB_110 foi dividida em 10 partes, onde 9 partes foi para a base de treino e 1 parte foi para a parte de teste;
  • Geração do Lexicon com a seguinte configuração:
    • Remoção das classes gramáticais: artigo, conjução, contração, interjeição, preposição e pronome;
    • Utilizando as bases: CNAE_110_SUBCLASSE:0:1182 e DADOS_VITORIA_SUB_110:0:2952;
  • Para realizar a otimização dos parâmetros do CORE, a 9 partes de treino foi novamente dividida novamente em 10 partes, onde dessa divisão 9 partes foi para treino e 1 parte para validação. Então, a configuração dos limites para as duas iterações foram:
    • Treino: CNAE_110_SUBCLASSE:0:1182 DADOS_VITORIA_SUB_110:0:2657;
    • Validação: DADOS_VITORIA_SUB_110:2658:2952;
  • O BOOSTEXTER_CORE foi experimentado para os seguintes valores de rounds: 50, 100, 500, 1000, 2500, 5000.

O tempo de execução e as métricas de desempenho para cada round foram:

Rounds Tempo

(Treino e Teste)

Coverage Average Precision Ranking Loss One Error
50 330m 134,71 0,44 0,045 0,478
100 328m 134,71 0,44 0,045 0,478
500 2598m 111,50 0,68 0,030 0,220
1000 3266m 111,75 0,68 0,029 0,227
2500 9850m 118,50 0,70 0,028 0,207
5000


Figura 1: Resultados dos experimentos de validação do Boostexter relativos ao primeiro fold.


Experimentos Pré-liminares com MLKNN_CORE


O objetivo deste experimento é verificar o tempo de execução para realizar a otimização do parâmetro número de vizinhos do MLKNN_CORE. O parâmetro smooth é utilizado o padrão, smooth = 1.

Os experimentos foram realizados com as bases CNAE_110_SUBCLASSE e DADOS_VITORIA_SUB_110 utilizando a técnica k-fold cross validation onmde k = 10. Foi realizado apenas 1 iteração do k-fold. O procedimento para realização desse experimento foi:

  • A base DADOS_VITORIA_SUB_110 foi dividida em 10 partes, onde 9 partes foi para a base de treino e 1 parte foi para a parte de teste;
  • Geração do Lexicon com a seguinte configuração:
    • Remoção das classes gramáticais: artigo, conjução, contração, interjeição, preposição e pronome;
    • Utilizando as bases: CNAE_110_SUBCLASSE:0:1182 e DADOS_VITORIA_SUB_110:0:2952;
  • Para realizar a otimização dos parâmetros do CORE, a 9 partes de treino foi novamente dividida novamente em 10 partes, onde dessa divisão 9 partes foi para treino e 1 parte para validação. Então, a configuração dos limites para as duas iterações foram:
    • Treino: CNAE_110_SUBCLASSE:0:1182 DADOS_VITORIA_SUB_110:0:2657;
    • Validação: DADOS_VITORIA_SUB_110:2658:2952;
  • O BOOSTEXTER_CORE foi experimentado para os seguintes valores de k vizinhos mais próximos: 6, 8, 10, 12 e 14.

O tempo de execução e as métricas de desempenho para cada k vizinhos foram:

k vizinhos Tempo

(Treino e Teste)

Coverage Average Precision Ranking Loss One Error
6 102,017 0,677 0,031 0,244
8 98,149 0,693 0,028 0,220
10 95,118 0,688 0,027 0,237
12 95,780 0,697 0,027 0,244
14 86,925 0,704 0,024 0,224
16 83,570 0,699 0,024 0,224
18 79,559 0,696 0,022 0,248
20 78,197 0,693 0,022 0,247
22 74,044 0,689 0,021 0,251
24 75,373 0,697 0,021 0,241



Experimentos com as novas métricas

Os experimentos foram realizados utilizando o dicionário completo corrigido. Para o WNN_COR e WNN_COR_COR os parâmetros utilizados foram: 16x16 o tamanho do neurônio e 512 o número de sinapses.

Testes de sanidade dos classificadores



CORE Base Peso dos termos Remoção de stopwords Limites treino Limites teste One error Ranking Loss Coverage Average Precision R-Precision Hamming Loss R-Hamming Loss
VS_CORE CNAE_110_SUBCLASSE TFIDF nenhuma 0 a 1182 0 a 1182
CNAE_110_SUBCLASSE TFIDF preposição 0 a 1182 0 a 1182
DADOS_VITORIA_SUB_110 TFIDF nenhuma 0 a 3280 0 a 3280 0,037489 0,000047 3,314538 0,455048 0,962511 0,000054 0,037489
DADOS_VITORIA_SUB_110 TFIDF preposição 0 a 3280 0 a 3280
WNN_CORE CNAE_110_SUBCLASSE TFIDF nenhuma 0 a 1182 0 a 1182
CNAE_110_SUBCLASSE TFIDF preposição 0 a 1182 0 a 1182
DADOS_VITORIA_SUB_110 TFIDF nenhuma 0 a 3280 0 a 3280 0,027735 0,161275 408,162750 0,840289 0,738725 0,002896 0,572133
DADOS_VITORIA_SUB_110 TFIDF preposição 0 a 3280 0 a 3280
WNN_COR_CORE CNAE_110_SUBCLASSE TFIDF nenhuma 0 a 1182 0 a 1182
CNAE_110_SUBCLASSE TFIDF preposição 0 a 1182 0 a 1182
DADOS_VITORIA_SUB_110 TFIDF nenhuma 0 a 3280 0 a 3280
DADOS_VITORIA_SUB_110 TFIDF preposição 0 a 3280 0 a 3280



Testes dos classificadores



CORE Base Peso dos termos Remoção de stopwords Limites treino Limites teste One error Ranking Loss Coverage Average Precision R-Precision Hamming Loss R-Hamming Loss
VS_CORE CNAE_110_SUBCLASSE

DADOS_VITORIA_SUB_110

TFIDF preposição 0 a 1182

0 a 1639

1640 a 3280


WNN_CORE CNAE_110_SUBCLASSE

DADOS_VITORIA_SUB_110

TFIDF preposição 0 a 1182

0 a 1639

1640 a 3280
WNN_COR_CORE CNAE_110_SUBCLASSE

DADOS_VITORIA_SUB_110

TFIDF preposição 0 a 1182

0 a 1639

1640 a 3280