• Nenhum resultado encontrado

De acordo com o Algoritmo 3.2, o treinamento do classificador consiste na construção de vários grafos K-associados sequencialmente, incrementando K de um, até o ponto em que a taxa hGi/K do grafo K-associado for menor que a do grafo (K − 1)-associado. Portanto, o critério de parada depende do conjunto de treinamento, seu nível de ruído, número de classes e distribuição das classes. Assim, para determinar a complexidade do algoritmo, considere Kmax como o valor máximo de K quando o critério de parada fora

atingido. Note que Kmax não se configura como um parâmetro, trata-se apenas de um

valor estimado do valor de parada usado para determinar a complexidade computacional do algoritmo proposto. No geral, trata-se de um valor pequeno, por exemplo, em todos os experimentos realizados neste trabalho Kmax < 20. De acordo com o algoritmo KAOG,

a construção do grafo, bem como a do classificador, consiste nos seguintes passos: 1. Calcular a matriz de distância a partir do conjunto de treinamento;

2. Encontrar Kmax vizinhos mais próximos para o exemplo a ser classificado;

3. Para K = 1 até Kmax

(a) Construir o grafo K-associado correspondente;

(b) Encontrar todos os componentes no grafo K-associado atual; (c) Calcular a pureza para todos os componentes;

(d) Unir componentes, referentes aos grafos (K-1)-associados e ao grafo K-associado como mostrado na Equação (3.3).

Dessa forma, a ordem de complexidade dos passos mencionados corresponde à com- plexidade de construção do classificador. A complexidade para classificar um conjunto com M novos exemplos usando o classificador será analisado separadamente. Apesar de muitos dos passos poderem ser otimizados, a analise é conduzida considerando o uso de métodos básicos. Ao final desta seção, serão discutidas algumas abordagens e alguns métodos avançados que podem ser usados para melhorar a performance do algoritmo proposto.

Primeiramente, considere a análise da ordem de complexidade relativa à fase de con- strução do classificador. Dado um conjunto de treinamento no formato atributo-valor com N instâncias e p atributos, a complexidade para calcular a matriz de distância corre- spondente é N(N − 1)p que implica em uma ordem de complexidade de O(N2p). Para a

construção do grafo ótimo, é necessário determinar até Kmax vizinhos mais próximos para

cada uma das N instâncias de entrada. Considerando o uso de um simples algoritmo de ordenação como a ordenação por seleção (selection sort) (Cormen et al., 2009) e o fato de que Kmax << N, pode-se dizer que são requeridas N operações para encontrar um

único vizinho, consequentemente são necessárias KmaxN operações para encontrar Kmax

vizinhos. Sendo assim, a ordem de complexidade para encontrar Kmax vizinhos mais

próximos para as N instâncias é KmaxN2. O passo seguinte consiste em construir cada

um dos grafos K-associados. São necessárias KN operações, pois existem K tentativas de conexões para cada um dos N vértices (Algoritmo 2). Assumindo o uso de busca em largura para encontrar todos os componentes (função encontraComponentes() no Algo- ritmo 2), o algoritmo tem ordem de complexidade de O(|V | + |E|), no qual o número de vértices é igual ao número de instâncias no conjunto de treinamento |V | = N, no entanto o número de arestas |E| aumenta de acordo com K. Uma vez que Kmax << N,

tem-se que o grafo K-associado será esparso, ou seja |E| = O(N), dessa forma a or- dem de complexidade para encontrar todos os componentes em um grafo K -associado é

O(N ). Uma vez encontrados os componentes, a medida de pureza pode ser calculada

simplesmente através da soma do grau dos N vértices, o que tem ordem de complex- idade de O(N). Prosseguindo com a formação da rede, o próximo passo é decidir se componente atual - possivelmente resultado de união entre dois ou mais componentes do componentes do grafo (K-1)-associado, é preferível ao(s) componente(s) anterior(es). Para isso é necessário comparar a pureza do componente atual (da rede K-associado) com os componentes do último grafo ((K − 1)-associado) que o formaram. Sendo assim a ordem de complexidade é menor ou igual a O(N) - pois N é o número máximo de componentes. Para a construção do grafo ótimo varia-se os valores de K, de 1 a Kmax,

portanto, a complexidade do passo 3 é KmaxN. Juntando os três passos, a ordem de

complexidade é O(N2p + K

maxN2+ KmaxN ). Considere p << N e Kmax << N, a ordem

Com o objetivo de verificar a ordem de complexidade previamente estabelecida do algoritmo KAOG, considere o seguinte experimento de tempo de execução apresentado na Figura 3.5. No experimento foram usados conjuntos de dados com diferentes tamanhos, de 100 a 10.000 instâncias. Cada resultado representa o tempo (em segundos) gasto para construir o grafo ótimo a partir de um conjunto de dados de entrada no formato vetorial. Os resultados consistem na média de 100 execuções, e também são apresentados os valores extremos (mínimo e máximo) dentre as 100 para cada conjunto. Os conjuntos de dados foram gerados artificialmente para toda execução e consistem em dois atributos cujos valores pertencem ao intervalo [0, 1] e com classe atribuída aleatoriamente considerando os possíveis valores {1, 2}. O experimento foi conduzido usando Java em um ambiente Windows, com um equipamento de configuração Core 2 Duo 1.83 Ghz com 2 Gb de memória. 100 1.000 2.000 3.000 4.000 5.000 6.000 7.000 8.000 9.000 10.000 0 5 10 15 20 25 30 35 40 Número de Padrões Tempo (s)

Figura 3.5: Tempo médio de execução seguido dos valores extremos na construção do grafo ótimo, a partir de conjuntos de dados com diferentes tamanhos.

Considere, agora, a análise da ordem de complexidade referente ao processo de clas- sificação. Considerando M exemplos de teste, o cálculo da matriz de distância entre o conjunto de treino e o de teste requer MNp operações. Encontrar os Kmax vizinhos mais

próximos necessita de KmaxM N operações. Dessa forma, tem-se O(MNp + KmaxM N ).

Assumindo que M << N, p << N e Kmax << N, a ordem de complexidade para clas-

sificar M exemplos, é de O(MN). Se M << N, a ordem para classificação é de O(N). Como caso especial, a complexidade para classificar um novo dado é de O(N).

Repare que o processo mais caro computacionalmente é o cálculo da distância entre o novo exemplo e todas as instâncias de treinamento, assim como nos métodos baseados em vizinhos mais próximos, dessa forma qualquer variação que possa ser implementado por

um método de vizinhos mais próximos com o objetivo de reduzir o tempo de execução, também pode ser implementado pelo algoritmo KAOG. Por exemplo, o uso de métodos baseados em árvores possibilita encontrar os vizinhos mais próximos sem ter que calcular explicitamente a distância para todas as instâncias (Hernandez-Rodriguez et al., 2010), ou de métodos baseados em estimativas probabilísticas (Toyama et al., 2010). Outro trabalho propõe um método baseado na estratégia de dividir para conquistar, e utiliza a Bissecção de Lanczos (Chen et al., 2009b) para construir um grafo KNN com limite superior para a complexidade da ordem de O(Np). Considerando este algoritmo na construção de cada grafo K-associado, obtém-se O(K2N p + N c) = O(N ). Considerando essas melhorias não

apenas tempo computacional pode ser economizado, mas também o uso de memória pode ser otimizado no algoritmo KAOG por meio do uso de técnicas de redução baseadas em instâncias (Wilson e Martinez, 2000).

A principal vantagem do algoritmo KAOG está no fato de não necessitar de seleção de modelo, o que, em muitos casos é computacionalmente mais caro que o próprio algo- ritmo de aprendizado. Por exemplo, uma execução do método de validação cruzada com repetição para P -partições (ver Seção 2.3.2), demanda P vezes D vezes NP, onde D é o

número de modelos considerados e NP o número de repetições consideradas. Portanto,

considerando NP = P , e.g. 10 repetições da validação cruzada de 10-conjuntos; a seleção

de modelo, neste caso requer P2Doperações, ou seja tem ordem de complexidade O(P2),

sem contar a complexidade de treino de cada modelo. Comparado ao algoritmo KAOG, que não exige seleção de modelo, portanto, complexidade de O(1) para a fase de seleção for modelos, o que implica em uma grande vantagem no ajuste do classificador.