Implementação do método de classificação contínua fuzzy k-médias no ambiente TerraLib Isabela Neves Drummond Estrutura da apresentação Introdução Fuzzy x Geoprocessamento Classificação (Agrupamento) k-médias fuzzy k-médias Implementação: Tefcm Testes Resultados Conclusão Introdução Motivação Objetivo: implementação do método de classificação fuzzy k-médias Linguagem: C++ Ambiente: TerraLib Visualização: TerraView Fuzzy x Geoprocessamento Teoria dos conjuntos fuzzy Caracterizado por uma função de pertinência A(x) [0, 1] Sistemas de Informação Geográfica (SIG) – aplicação exemplo Classificação SIG – subsistemas coleta, entrada e verificação de dados armazenamento e gerenciamento processamento e visualização dos resultados Processo de classificação: definição de classe com vistas à redução de variedade, ordenando e simplificando Métodos: supervisionados não-supervisionados Classificação: k-médias 1. Determinar posições iniciais dos k centros 2. Para cada elemento, colocá-lo no cluster do centróide mais próximo 3. Recalcular os centros a partir dos elementos alocados 4. Repetir passos 2 e 3 segundo algum critério de convergência Classificação: fuzzy k-médias 1. Determinar posições iniciais dos k centros e o valor m do coeficiente fuzzy 2. Associar cada elemento aos clusters através de uma função de pertinência (função de distância). Assim, cada elemento irá possuir um grau de pertinência com relação a cada cluster 3. Recalcular os centros com base nos valores de pertinência 4. Atualizar os graus de pertinência 5. Repetir passos 2 a 4 segundo algum critério de convergência k-médias x fuzzy k-médias X { x1, x 2 ,..., x n } n (U ik ) m x k v i k 1 n (U ik ) k 1 m U ik ( x ) [0,1], i 1,...,c U ik 1 c j 1 d ( ik ) 2 /(m 1) d jk k-médias x fuzzy k-médias m 1 Implementação: ambiente Linguagem C++ / Compilador Microsoft Visual C++ 6.0 TerraLib: biblioteca de classes Paradigmas: Kernel Functions Contrib Orientação a objeto Programação genérica Apresentação visual: TerraView Implementação: Tefcm template<typename It, typename C, typename M, typename T> void TeFcm (It begin, It end, C& result, M& u, double conv, T& maxIter, double expo) ... Initialize(centroides[i], minValue, maxValue); TeInitfcm(u); ... while ((!converge) && (numIter < maxIter)) { TeStepfcm(begin, end, expo, centroides, u); converge = CheckConvergence(centroides, centr_aux, conv); centr_aux = centroides; ++numIter; } U [ ]k x atrib Implementação: Tefcm TerraView Interface: QT designer Validação Rotina que associa cada polígono a sua classe, ou seja, os setores que se encontram na mesma classe são preenchidos com a mesma cor Testes empregando diferentes “shapes” e atributos Análise numérica x análise temática Resultados - Mapas obtidos Fuzzy k-médias 3 classes m=2 k-médias 3 classes Resultados - Mapas obtidos K-médias Resultados - Mapas obtidos Fuzzy k-médias - diferentes valores de m m = 1.1 m = 1.5 m=2 m=3 Conclusões O Tefcm deve ser n-dimensional A interface pode ser refinada Dificuldades encontradas: ambiente, linguagem C++ e paradigmas empregados (programação genérica e orientação a objetos) Métodos de classificação: k-médias x fuzzy k-médias Muito sensível aos centros iniciais Valor de m é experimental Aprendizado Trabalhos futuros O que fazer com a matriz U? Como otimizar os centros iniciais: AG, redes neurais, etc...