Experimentos para o artigo WITCC'08
Índice
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
- WNN e WNN_COR
- 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
- 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:
- 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
- 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
- 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;
- Iteração 1:
- 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
- 256:
- Interação 2:
- 256:
- Treino: 4m30s
- Teste: 3m31s
- 512:
- Treino: 4m45s
- Teste: 3m55s
- 256:
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 |
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 |