Experimentos para o artigo WITCC'08

De LCAD
Revisão de 07h22min de 9 de abril de 2008 por Claudine (discussão | contribs)
Ir para: navegação, pesquisa

Experimentos para o artigo WITCC'08


  • 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
      • Claudine irá ler o livro Machine Learning de Tom Michell para verificar se existe apoio literário para usar diferentes valores de k nas fases de validação e teste
    • 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

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
    • 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,48
100 328m 134,71 0,44 0,045 0,48
500 2598m 111,50 0,68 0,03 0,22
1000
2500
5000


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
8
10 15m 105,72 0,72 0,02 0,21
12
14
16 15m 93,99 0,72 0,02 0,22
20 15m 86,58 0,72 0,02 0,20