Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PATOS
2008.1
USO DE ALGORITMOS NÃO SUPERVISIONADOS PARA CLASSIFICAÇÃO
AUTOMÁTICA DE DADOS
ANA LUIZA DO NASCIMENTO LEITE
PATOS-PB
2008.1
Dedico este trabalho à minha mãe, Sônia,
minha irmã, Isabel e a meu marido,
Jaildes.
AGRADECIMENTOS
1 INTRODUÇÃO------------------------------------------------------------------------------------ 11
1.1 Considerações iniciais---------------------------------------------------------------------------- 11
1.2 Justificativa ---------------------------------------------------------------------------------------- 12
1.3 Objetivos ------------------------------------------------------------------------------------------- 13
1.3.1 Objetivo geral------------------------------------------------------------------------------------ 13
1.3.2 Objetivos específicos--------------------------------------------------------------------------- 13
1.4 Estrutura do trabalho------------------------------------------------------------------------------ 13
4 ALGORITMOS ------------------------------------------------------------------------------------ 33
4.1 K-means ------------------------------------------------------------------------------------------ 33
4.1.1 Algoritmo ---------------------------------------------------------------------------------------- 33
4.2 SOM (Mapas Auto-organizáveis)---------------------------------------------------------------- 36
4.2.1 Treinamento do SOM --------------------------------------------------------------------------- 37
4.2.2 Algoritmo de treinamento do SOM ----------------------------------------------------------- 39
4.2.3 Análise e visualização dos mapas ----------------------------------------------------------------------- 40
4.3 Growing neural gas ---------------------------------------------------------------------------------------------- 42
4.3.1 Algoritmo GNG ------------------------------------------------------------------------------------------------ 43
4.3.2 Resultados do GNG ------------------------------------------------------------------------------------------ 44
APÊNDICE -------------------------------------------------------------------------------------------- 57
LISTA DE FIGURAS
1 INTRODUÇÃO
1.2 Justificativa
1.3 Objetivos
Aplicar diferentes algoritmos para minerar os dados de uma base de dados real. Colher
resultados desses experimentos e mostrar através de gráficos a classificação e agrupamentos
dos dados feito por cada algoritmo para tal base.
como responsável, é iterativo por possuir etapas seqüenciais e possibilitar retorno as etapas
anteriores. Por padrões válidos entenda-se conhecimento válido e verdadeiro, e por padrões
novos a agregação de novos conhecimentos aos já existentes, o conhecimento útil é o que
pode ser usado para beneficiar o contexto aplicado ao processo de KDD.
As etapas do KDD consistem na etapa de pré-processamento, mineração de dados e
pós-processamento, conforme mostrado na Figura 1.
Seleção Limpeza
Pré-processamento
Transformação
Base de
dados
Mineração de dados
Padrões
Pós-processamento
$$$$ Conhecimento
2.2.1 Classificação
Essa tarefa tem o objetivo de descobrir uma função para mapear um conjunto de dados
de entrada em um conjunto de classes predefinidas, de forma que o processo de classificação
possa encontrar algum relacionamento entre um novo dado e essas classes, estabelecendo a
qual classe esse novo dado pertence.
Um exemplo dessa tarefa seria uma base de dados de clientes potenciais para
empréstimos. Os clientes são divididos em clientes confiáveis e clientes inadimplentes. O
processo de classificação descobrirá uma função de modo a inserir os clientes que existem no
banco de dados em uma das duas classes predefinidas. Um novo cliente pode também ser
associado a uma das classes a partir de sua semelhança com outros clientes previamente
classificados.
2.2.2 Regressão
17
X’ = 9,1
Y’ = 55,4
β = (3 - 91) (30 – 55,4) + (8 – 9,1) (57 – 55,4) + ... + (16 – 9,1) (83 – 55,4) = 3,7
(3 - 91)² + (8 – 9,1)² + ... + (16 – 9,1)²
Assim, pode-se estimar que uma pessoa com 20 anos de experiência teria seu salário
anual de aproximadamente R$ 95.700,00.
Harrison [HARRISON, 1998] afirma que não há uma técnica que resolva todos os
problemas de mineração de dados. Há técnicas diferentes para propósitos diferentes. A
escolha influenciará na qualidade do resultado, pois, para cada problema, há as que oferecem
vantagens e as que oferecem desvantagens. As seções a seguir falam sobre algumas técnicas
bastante utilizadas.
Uma árvore de decisão consiste numa hierarquia formada por nós folhas e nós
decisivos que são ligados por ramos. É uma estrutura de dados recursiva que tem como
objetivo principal separar classes, correspondentes aos nós folhas da árvore, caminhando
através dos nó de decisão que realizam algum teste sobre um atributo. A árvore pode ser
representada por um conjunto de regras explícitas o que a torna uma modelo de fácil
entendimento, pois cada regra tem o início na raiz da árvore que segue fazendo testes até
alcançar a folha que represente o resultado. Classificação é um exemplo de tarefa que pode
20
ser implementada por árvores de decisão. A Figura 2 mostra uma árvore de decisão que
baseada no clima, utiliza-se dos atributos aparência, umidade e vento para oferecer uma
disposição quanto a jogar ou não jogar golfe.
Aparência
Pesos
sinápticos
X1 W1
Entradas
X2 W2 ∑
Função de
... ativação
Xn Wn
Esse tipo de arquitetura possui uma camada de neurônios fontes e uma camada de
neurônios computacionais, sendo considerada como uma rede do tipo alimentada adiante por
24
Entradas de
neurônios
fontes
Camada de saída de
neurônios computacionais
Essa rede se diferencia pela presença de uma ou mais camadas ocultas. Essas camadas
funcionam como extratora de características, seus pesos são uma reunião de características
apresentadas nos padrões de entrada e permitem que a rede crie sua própria representação,
mais rica e complexa do problema. A inclusão de uma ou mais dessa camada possibilita o
aumento de poder computacional da rede, devido ao ganho de conexões sinápticas extras e da
dimensão extra de interações neurais [FERNANDES, 2003] [HAYKIN, 2001]. Na Figura 6 é
exibida uma rede com cinco entradas, uma camada oculta composta de três neurônios e uma
camada de saída com dois neurônios.
Distingue-se das redes feedforward por possuir pelo menos um laço de realimentação,
ou seja, possui uma camada de neurônios que conecta sua saída ou com a mesma camada ou
com uma camada anterior. Além de atingir significativamente a capacidade de aprendizagem
e desempenho da rede, esse laço reúne dinâmicas não-lineares por envolver o uso de ramos
25
Entradas
de
neurônios
fontes
Camada de
saída
Camada
oculta
Figura 6 – Rede feedforward com uma camada oculta e uma camada de saída
z ˉ¹
z ˉ¹
z ˉ¹
Possui um supervisor para indicar a rede uma saída desejada quanto ao conjunto de
padrões de entrada. Para esse processo, ilustrado na Figura 8, é necessário um conjunto de
treinamento formado pelos vetores de entrada e pelo vetor alvo que se almeja como saída.
Ocorre de forma que são aplicados vetores de entrada, calculando logo após o erro entre a
saída fornecida pela rede e a saída desejada. Baseado nesse erro ocorre à atualização dos
pesos sinápticos, visando aproximar o resultado obtido do resultado esperado nas iterações
seguintes. A adaptação dos pesos sinápticos faz com que os parâmetros submetidos levem ao
resultado esperado para os dados submetidos no treinamento. Com isso, novos dados
submetidos tendem a encontrar na maioria dos casos a resposta correta.
A adaptação dos pesos sinápticos ocorre sempre no sentido de minimizar o erro na
resposta a cada dado submetido. O processo de treinamento é repetido até ser alcançado um
nível de erros considerado aceitável.
Saída real
Entrada RNA
-
Erro ∑
Supervisor +
Saída desejada
Neste tipo de aprendizado não existe supervisor, já que não há resultados previamente
conhecidos para auxiliar no treinamento da rede. Nesse tipo de rede neural o objetivo é
encontrar dados semelhantes entre si, de forma a estabelecer grupos ou classes de dados
semelhantes. Para tanto, uma série de neurônios é distribuída no espaço de entrada, cada um
com um vetor de referência preenchido com valores aleatórios. Durante o treinamento da
rede, o ajuste dos pesos sinápticos ocorre como um ajuste nos valores dos vetores de
referência dos neurônios.
O treinamento não-supervisionado acontece de forma que a rede extraia características
dos dados de entrada, ajustando os pesos dos neurônios de forma a gerar neurônios capazes de
representar bem um grupo de dados de entrada. Assim, grupos de dados são distribuídos em
neurônios representativos de acordo com a similaridade entre eles, gerando as classes ou
grupos de dados citados anteriormente.
Os algoritmos não-supervisionados geralmente utilizam à técnica de aprendizagem
competitiva (será detalhada na seção 3.3).
3.2.4.1 Perceptrons
3.2.4.2 Kohonen
Conexões
sinápticas
Entrada
Neurônio
vencedor
São inúmeras as aplicações que utilizam redes neurais artificiais. Dentre elas, podemos
destacar reconhecimento de padrões, processamento de imagem, predição de séries temporais,
robótica, controle de processos, processamento adaptativo de sinais e eliminação de ruídos,
entre outros. A Figura 13 mostra um exemplo de uso de mapas de Kohonen para
processamento de imagens. É realizado uma codificação conhecida como quantização
30
n
(x i - y i ) 2 ,
DE = i=1
onde:
DE = Distância Euclidiana
xi = valor para cada atributo no vetor de referência do neurônio analisado;
yi = valor para cada atributo no sinal de entrada;
n = dimensão do espaço amostral.
Após a competição, ocorre à atualização dos pesos, fazendo com que o vetor fique
ainda mais próximo do vetor de entrada e mais representativo para o grupo a qual o padrão
pertence. Esse ajuste é feito exatamente para o neurônio representar a classe ou grupo de
padrões semelhantes. Essa atualização ocorre em função do erro em relação ao sinal de
entrada, ou seja, a atualização dos pesos deve minimizar o erro entre o vetor de pesos e o sinal
de entrada do neurônio que foi o vencedor. A finalidade desse tipo de aprendizado consiste no
ajuste dos pesos para que ocorra sucessivamente a ativação do mesmo neurônio para os sinais
de entrada semelhantes.
A definição dos neurônios a serem atualizados depende do tipo de aprendizado
competitivo que se está realizando. Os algoritmos de aprendizado competitivo pesado (hard
competitive learning) determinam a atualização de apenas um neurônio, o neurônio vencedor,
ou seja, o neurônio considerado mais próximo do sinal de entrada submetido. Essa política é
também chamada de winner-takes-all (vencedor leva tudo). Já algoritmos de aprendizado
competitivo leve (soft competitive learning) determinam a atualização de outros neurônios
32
além do vencedor, numa política chamada de winner-takes-most (vencedor leva a maior parte)
[FRITZKE, 1997].
Este capítulo expôs conceitos fundamentais para a compreensão das redes neurais, sua
arquitetura, suas dinâmicas de treinamento, além do fornecimento de exemplos de utilização.
Esses conceitos são necessários ao trabalho, uma vez que os modelos a serem trabalhados
realizam mineração de dados usando algoritmos baseados em redes neurais. Foi dado um
enfoque em redes neurais não-supervisionadas que usam a técnica de aprendizado
competitivo, pois os algoritmos trabalhados na seqüência são baseados nessa técnica.
33
4.1 K-means
4.1.1 Algoritmo
Escolha aleatória de
Dados
K centros iniciais
Calcular as distâncias
dos objetos aos
centros dos clusters
Atribuir objetos a um
cluster onde a
distância é mínima
Atualizar clusters
não
Exibir clusters
duas dimensões. No caso dos mapas bidimensionais podemos ter vizinhança retangular, ou
seja, ligação do neurônio vencedor com outros quatro neurônios (figura 15), e vizinhança
hexagonal, ligação do BMU com outros seis neurônios (figura 16) [AURÉLIO, 2004;
COSTA, 1999].
onde t é uma iteração, a função hsi (t) define a vizinhança do neurônio vencedor s na
iteração t. A função é formada pela taxa de aprendizagem α(t) e por uma função de vizinhança
definida pela seguinte forma:
O algoritmo Growing Neural Gas (GNG) foi desenvolvido por Bernd Fritzke
[FRITZKE, 1995]. Surgiu com o propósito de melhorar limitações do modelo básico de
Kohonen quanto à dimensão e estrutura. Ao contrário do SOM, que necessita previamente da
definição de uma topologia e da quantidade de neurônios, que permanecem fixos até o final
do treinamento, no GNG não é necessário especificar o tamanho da rede nem definir uma
estrutura. No GNG, independente da dimensão dos dados de entrada, o seu treinamento é
iniciado com apenas dois neurônios, número esse que vai sendo incrementado, mantendo a
capacidade de gerar uma topologia adequada ao tipo de problema [VARGAS, 2004].
O GNG é um algoritmo incremental não-supervisionado [HOLMSTROM, 2002] em
que, dado um conjunto inicial de vetores, gera-se um grafo de forma incremental, onde os
vértices representam os neurônios e as arestas a vizinhança entre os neurônios. Esse grafo
reflete a topologia dos dados de entrada, como também sua dimensão, sendo que o algoritmo
não faz redução de dimensionalidade o que não permite uma fácil visualização dos dados.
Durante o treinamento do GNG é possível inserir e remover neurônios. Cada neurônio
consiste de: w i - um vetor de referencia em Rn ; erroi – variável que representa o erro local
acumulado; e um conjunto de arestas que define a vizinhança topológica do neurônio i
[HOLMSTROM, 2002]. Como já citado anteriormente, o algoritmo inicia com dois
neurônios, acrescentando novos neurônios durante o decorrer do treinamento. A inserção de
novos neurônios ocorre a cada λ iterações do algoritmo, sendo λ um parâmetro pré-definido.
A posição onde um novo neurônio é inserido é determinada pela variável erroi, já que
essa inserção ocorre próxima a neurônios que possuem o maior erro acumulado. O erro
acumulado representa a distância entre um dado fornecido e o vetor de referência do neurônio
vencedor. Toda vez que um neurônio é escolhido como vencedor, sua distância para o dado de
entrada é somada ao valor já existente na variável erroi. Dessa forma, o erro acumulado torna-
se um parâmetro para determinar um local no espaço de saída onde os dados de entrada estão
relativamente distantes dos neurônios vencedores, mostrando a necessidade da inserção de
mais neurônios na região.
Para gerar a topologia da rede é utilizado o aprendizado competitivo de Hebb
(Competitive Hebbian Learning - CHL) que adiciona uma aresta entre o neurônio vencedor e
segundo melhor colocado na iteração. As arestas possuem uma variável idade, que possui um
valor máximo que ocasiona a remoção das mesmas. Se a remoção de arestas resultar em
43
neurônios sem ligações, serão considerados como neurônios mortos, que são também
removidos.
O algoritmo pára ao atingir uma condição de parada pré-definida. Essa condição pode
ser a quantidade máxima de neurônios atingida, ou um erro médio global mínimo atingido.
Ao final do treinamento é gerado um grafo, cuja formação e topologia foram atualizadas
correspondendo à distribuição do espaço de entrada. A seguir será descrito o algoritmo
Growing neural gas.
ws = ws + ew (x - ws)
wn = wn + en (x - wn), n Neighbour(s)
5. Se existe uma aresta conectando s e t, sua idade é ajustada para 0; senão, uma
aresta com idade 0 é criada;
7. Caso seja uma iteração múltipla de λ, insere-se um novo neurônio. Para tanto, encontra-
se o nó u com o maior erro local acumulado; encontra-se o vizinho de u, v, com o maior
erro local acumulado; insere-se um neurônio r entre u e v
wr = (wu + wv) / 2;
44
errou = α x errou
errov = α x errov
error = errou;
A figura 20 mostra a execução do GNG sobre a base de dados artificial tridimensional, com
parada definida para erro médio acumulado máximo de 1,0 quando havia um total de 145 neurônios. É
possível perceber a formação de três classes de dados.
Neste capítulo será apresentada a base de dados Wine, disponível no UCI Machine
Learning Repository [ASUNCION & NEWMAN, 2007]. Serão mostrados os resultados
colhidos pela aplicação dos algoritmos à referida base de dados. Para a execução do k-means
e do SOM foi utilizado o SOMToolbox [SOM Toolbox, 2002-2005], um pacote de funções
para o software MatLab ® a partir da versão 5.0. Para a execução do GNG foram utilizadas
funções disponíveis em www.info.ffm.com.br/~ricardo/gng. Os códigos utilizados para a
execução e visualização dos resultados estão no apêndice A.
Como os atributos da base de dados são todos numéricos, mas de ordens de grandeza
diferentes, é necessário um procedimento de normalização dos dados. Esse procedimento faz
parte da fase de transformação dos dados do processo de KDD, sendo necessário para que a
aplicação dos algoritmos seja bem sucedida. Neste procedimento, é feito um cálculo de
proporcionalidade para que todos os valores sejam encaixados numa faixa de valores, de
forma que algum atributo de ordem de grandeza diferente dos demais não distorça os
resultados obtidos.
Aplicando o algoritmo k-means, assumindo que K=3, foram formados grupos bem
separados sendo fácil a visualização das três classes nas três cores do gráfico. Para a obtenção
de uma boa visualização foi necessário reduzir a dimensionalidade dos dados. Neste ponto foi
utilizado o procedimento Sammon [Sammon, 1969], que realiza otimização, preservando a
ordem de similaridade dos pontos no espaço de entrada Rd no espaço de saída com a
dimensionalidade escolhida [COSTA, 1999]. Para uma melhor visualização dos resultados, a
redução foi feita para duas dimensões.
48
do SOM (retangular e hexagonal), tendo sido observado um resultado mais claro na topologia
hexagonal, exibida então na figura 23.
A matriz U permite uma fácil visualização das classes, pois por si só já efetua a
redução da dimensionalidade dos dados, trazendo para o plano bidimensional. As três classes
são evidenciadas pelas três depressões no gráfico, enquanto as elevações indica o nível de
distinção entre os dados.
CONSIDERAÇÕES FINAIS
REFERÊNCIAS BIBLIOGRÁFICAS
ASUNCION, A. & NEWMAN, D.J. (2007). UCI Machine Learning Repository [http://
www.ics.uci.edu/~mlearn/MLRepository.html]. Irvine, CA: University of California, School
of Information and Computer Science.
BUSSAB, Wilton de Oliveira; MIAZAKI, Édina Shizue; ANDRADE, Dalton Francisco de.
Introdução à análise de agrupamentos. São Paulo: Associação Brasileira de Estatística,
1990.
GOLDSCHMIDT R.; PASSOS E. Data Mining: um guia prático. Rio de Janeiro: Elsevier,
2005.
HAN, J., KAMBER, M., Data Mining: Concepts and Tecniques. Morgan Kaufmann
Publishers. San Francisco. EUA. 2001.
HARRISON, Thomas H. Intranet Data Warehouse. São Paulo: Berkeley Brasil, 1998.
_____. Redes Neurais: princípios e prática. 2ed – Porto Alegre: Bookman, 2001.
HOLMSTRÖM, J. Experiments with GNG, GNG with Utility and Supervised GNG.
Master Thesis, Uppsala University, 2002.
REGO, Renata Lúcia; MENDONÇA Ernesto do. Sistema neural para reconstrução de
superfícies a partir de nuvem de pontos. Recife: O autor, 2006.
SAMMON, J.W. A Non-Linear Mapping for Data Structure Analysis. IEEE Trans. In
Computers, vol 18, 1969.
SOM Toolbox is Copyright (C) 2000-2005 by Esa Alhoniemi, Johan Himberg, Juha
Parhankangas and Juha Vesanto.
APÊNDICE A
% SOM
normWine = som_normalize(Wine,'var'); % Normalização dos dados
sMap = som_make(normWine,’hexa’); % Execução do SOM
umat = som_umat(sMap); % Cálculo da matriz U
surf(umat); % Exibição do gráfico
shading interp;
% kmeans
respKmeans = kmeans(normWine,3); % Execução do k-means
dados = sammon(normWine,2); % Procedimento Sammon para reduzir a duas dimensões
set(gcf, 'color', [ 1 1 1]); % Exibição do gráfico
hold;
plot(dados(find(respKmeans == 1),1),dados(find(respKmeans == 1),2),'*r');
plot(dados(find(respKmeans == 2),1),dados(find(respKmeans == 2),2),'*b');
plot(dados(find(respKmeans == 3),1),dados(find(respKmeans == 3),2),'*g');
% GNG
respGNG = gngMake(normWine,250); % Execução do GNG
gngShow(normWine,respGNG.Neurons,respGNG.adj); % Visualização do GNG