O algoritmo 3 apresenta os principais passos da etapa de geração da metabase do segundo método proposto, o EMR-3ML.
Pseudo-Código 3 Algoritmo de geração das metabases para o ERML-3ML
1: procedure ERM-3ML
2: Input: dataset DS
3: Open Size Meta-base file: MBS
4: Open Classifier Meta-base file: MBC
5: Open Aggregator Meta-base file: MBA
6: poolSize ← Vector with ensemble sizes
7: poolClassifier ← Vector with classifier models
8: poolAggregator ← Vector with aggregator models
9: DCT ← dataset_characterization_tool(DS)
10: Results[] ← 0
11: i ← 0
12: para each Size in pool_Size faça
13: para each Classifier in poolClassifier faça
14: para each Aggregator in poolAggregator faça
15: Result[i] ← EnsembleComite(DS, Size, Classifier, Aggregator)
16: S[i] ← Size 17: i ← i + 1 18: fim para 19: fim para 20: fim para 21: BestSize ← S[index(max(Result[])]) 22: MBS ← Concatenate (MBS, DCT, BestSize ) 23: Results[] ← 0 24: i ← 0
25: para each Classifier in poolClassifier faça
26: para each Aggregator in poolAggregator faça
27: Result[i] ← EnsembleComite(DS, BestSize, Classifier, Aggregator)
28: C[i] ← Classifier 29: i ← i + 1 30: fim para 31: fim para 32: BestClassifier ← C[index(max(Result[])]) 33: MBC ← Concatenate (MBC, DCT, BestClassifier ) 34: Results[] ← 0 35: i ← 0
36: para each Aggregator in pool_Aggregator faça
37: Result[i] ← EnsembleComite(DS, BestSize, BestClassifier, Aggregator)
38: A[i] ← Classifier
39: i ← i + 1
40: fim para
41: BestAggregator ← A[index(max(Result[])])
42: MBA ← Concatenate (MBA, DCT, BestAggregator )
43: Close Size Meta-base file: MBS
44: Close Classifier Meta-base file: MBC
45: Close Aggregator Meta-base file: MBA
46: fim procedure
Os passos do método proposto no Algoritmo 3 devem ser executados para cada nova base de dados, e podem ser descritos como:
1. Linhas 1 a 9, abrimos a nova base de dados DS a ser treinada, definimos as possíveis recomendações dos principais parâmetros da estrutura do comitê:
• poolSize : número de classificadores;
Capítulo 4. Proposta 32
• poolAggregator : agregadores.
Através da ferramenta DCT, extraímos as características desejadas da base de dados
DS.
2. Linhas 10 a 20, definimos um modelo de comitê de classificadores, para cada uma das i possíveis possibilidades de tamanhos (Size), classificadores (Classifier ) e agregadores (Aggregator ). Treinamos e validamos usando 10 k-fold cross-validation, e armazenamos o resultado da acurácia no vetor Result[i], e o tamanho do comitê no vetor S[i], para cada um dos i comitês,
3. Linhas 21 e 22, definimos o melhor tamanho a ser recomendado, aplicando uma função para identificar o índice da ocorrência do primeiro maior valor de acurácia presente no vetor Result[], que indexará o vetor S[] e armazenará o valor resultante na variável BestSize,. Esta será considerada a melhor recomendação de tamanho para uma base de dados que teve as suas meta-características extraídas na linha 9. As informações referentes às características da base de dados de treinamento, juntamente com a recomendação do melhor tamanho serão armazenadas na metabase
M BS.
4. Linhas 23 a 31, definimos um modelo de comitê de classificadores, para cada uma das possíveis possibilidades de melhor tamanho (que é único, e já foi definido na linha 21 - BestSize), classificadores Classifier, e agregadores Aggregator. Treinamos e validamos cada um dos i comitês, usando 10 k-fold cross-validation, e armazenamos o resultado da acurácia no vetor Result[i], e o modelo de classificação do comitê no vetor C[i].
5. Linhas 32 a 33, seguirão os mesmos passos descritos nas linhas 21 e 22, só que agora será responsável pela recomendação do tipo de classificador a ser usado no comitê, armazenando as informações referentes às características da base de dados de treinamento, juntamente com a recomendação do melhor classificador
BestClassif ier, na metabase M BC
6. Linhas 34 a 40, definimos um modelo de comitê de classificadores, para cada uma das possíveis possibilidades de melhor tamanho (que é único, e já foi definido na linha 21 - BestSize), melhor classificador (que também é único, e já foi definido na linha 32 - BestClassif ier), e agregadores Aggregator. Treinamos cada um dos i comitês, e armazenamos o resultado da acurácia no vetor Result[i], e o modelo de agregação do comitê no vetor A[i].
Capítulo 4. Proposta 33
7. Linhas 41 a 42, seguirão os mesmos passos descritos nas linhas 21 e 22, só que agora será responsável pela recomendação do tipo de agregador a ser usado no comitê, armazenando as informações referentes às características da base de dados de treinamento, juntamente com a recomendação do melhor agregador BestAggregator, na metabase M BA. Finalmente, as informações da característica da base de dados e a melhor recomendação de tamanho (M BS), a melhor recomendação de classificador (M BC) e a melhor recomendação de agregador (M BA) estarão disponíveis para serem usadas na etapa de generalização, ou serem ampliadas com metacaracterísticas de outras bases de dados de treinamento.
Para também ilustrar de forma mais clara o funcionamento do algoritmo, um pequeno exemplo será apresentado. E será usada a mesma base íris, composta por 150 instâncias com 4 atributos e 3 classes. Assim sendo, teríamos:
1. Linhas 1 a 9
• poolSize = [5,40]; % Tamanhos do comitê definidos pelo usuário.
• poolClassifier = [KN,DT]; % Classificadores base definidos pelo usuário.
• poolAggregator = [HV,SV,LR]; % Agregadores definidos pelo usuário.
• DCT = [5,0,4,150,3,0.33333,0,0,0.30426,3.02951,0,668.941,20,0.95,3.119,0.991472, 0.984858,0.023525,545.577322,1.5850,-1,-1,-1,-1,-1] % Resultado da ferramenta DCT.
2. Linhas 10 a 20
• Result = [0.967,0.960,0.947,0.960,0.960,0.967,0.960,0.947,0.953,0.967,0.967,0.953]; % Resultados das 12 acurácias de cada uma das combinações de poolSize (2) x poolClassifier (2) x poolAgregator (3) = 2 * 2 * 3 = 12.
• Size = [5,5,5,5,5,5,40,40,40,40,40,40]; % Tamanhos do comitê usados em cada uma das 12 iterações do modelo
• BestSize = [0]; % Índice da primeira melhor acurácia encontrada no vetor Result, neste caso é 0.967.
• MBS = [5,0,4,150,3,0.33333,0,0,0.30426,3.02951,0,668.941,20,0.95,3.119,0.991472, 0.984858,0.023525,545.577322,1.5850,-1,-1,-1,-1,-1,5]; % instância da metabase MBS, com os 26 atributos representando as 26 metacaracterísticas, e a classe indicando a melhor recomendação de tamanho do comitê, que neste caso é: Tamanho do comitê = 5.
Capítulo 4. Proposta 34
3. Linhas 23 a 33
• Result = [0.967,0.940,0.960,0.960,0.953,0.953]; % Resultados das 6 acurácias de cada uma das combinações de BestSize (1) x poolClassifier (2) x poolAgregator (3) = 1 * 2 * 3 = 6.
• Classifier = [KN,KN,KN,DT,DT,DT]; % Classificadores base usados em cada uma das 6 iterações do modelo
• BestClassifier = [0]; % Índice da primeira melhor acurácia encontrada no vetor
Result, neste caso é 0.967.
• MBC = [5,0,4,150,3,0.33333,0,0,0.30426,3.02951,0,668.941,20,0.95,3.119,0.991472, 0.984858,0.023525,545.577322,1.5850,-1,-1,-1,-1,-1,5,KN]; % instância da me- tabase MBC, com os 26 atributos representando as metacaracterísticas, o melhor tamanho do comitê, que neste caso é 5, e a classe indicando a melhor recomendação de classificador base, que neste caso é: Classificador = KN.
4. Linhas 34 a 42
• Result = [0.967,0.960,0.947]; % Resultados das 3 acurácias de cada uma das combinações de BestSize (1) x BestClassifier (1) x poolAgregator (3) = 1 * 1 * 3 = 3.
• Aggregator = [HV,SV,LR]; % Agregadores usados em cada uma das 3 iterações do modelo
• Bestaggregator = [0]; % Índice da primeira melhor acurácia encontrada no vetor
Result, neste caso é 0.967.
• MBA = [5,0,4,150,3,0.33333,0,0,0.30426,3.02951,0,668.941,20,0.95,3.119,0.991472, 0.984858,0.023525,545.577322,1.5850,-1,-1,-1,-1,-1,5,1,HV]; % instância da meta- base MBA, com os 26 atributos representando as metacaracterísticas, o melhor tamanho do comitê, que neste caso é 5, o melhor classificador base, que neste caso é o KN = 1 (ver Tabela 3), e a classe indicando a melhor recomendação de agregador, que neste caso é: Agregador = HV.