1. Clustering - Agrupamento de dados
No último post, no qual foi falado a respeito de mineração de dados, foi
comentado sobre agrupamento de dados. A idéia é simples como o nome sugere: agrupar dados.
Porém, conforme a finalidade da descoberta dos grupos e o tipo dos dados em questão a tarefa pode
se tornar terrivelmente complexa, árdua e demorada (haja joguinhos no pc enquanto espera o
processamento terminar! =P).
Vamos mostrar aqui a teoria básica do assunto e os principais algoritmos. Em próximos artigos,
vamos enviar a teoria e implementação de cada um deles.
Há também o clustering que se refere a elaboração e montagem de clusters de computadores.
Grandes redes de máquinas que trabalham como uma só. Subárea de sistemas distribuídos. Aqui
estamos lidando com uma subárea de inteligência artificial.
O que é clustering?
Clustering, análise de clusters (grupos) ou agrupamento é a tarefa de inserir objetos dispersos em
grupos (chamados de clusters) de forma que os objetos no mesmo cluster sejam mais similares -
segundo algum critério definido no caso - entre si do que entre os objetos em outros clusters.
Clustering é uma das principais áreas da
mineração de dados e uma técnica muito comum para análise de dados estatísticos em muitas áreas,
como aprendizado de máquina, reconhecimento de padrões, análise de imagens, recuperação de
informação e bioinformática.
A análise de clusters não é um algoritmo específico, mas uma classe de problemas a serem
resolvidos por vários algoritmos que diferem muito entre si, tanto na maneira de como formam os
clusters, quanto na eficiência que o fazem. Dentre as maneiras mais comuns de se formar grupos
podemos citar menor distância entre os membros do cluster, áreas mais densas na distribuição
espacial, intervalos ou distribuições estatísticas específicas. Clustering pode ser formulado como
um problema de otimização com múltiplos objetivos. Onde o algoritmo a se escolher e seus
parâmetros (valores como a função de distância, o limiar de densidade ou o número esperado de
clusters) dependem dos dados e do tipo de resultado procurado. Além de o próprio algoritmo poder
ser considerado
um parâmetro, já que dificilmente sabemos de antemão qual apresentará os melhores resultados.
A análise de clusters não é uma tarefa automática, é um processo de descoberta de conhecimento
iterativo que envolve muita tentativa e erro. Normalmente é preciso mudar o pré-processamento,
parâmetros e mesmo os algoritmos até obter as propriedades desejadas.
Clustering x Classificação
2. Sempre há confusão quanto a essas duas áreas. Pois a diferença entre elas é sutil em seu primeiro
ver. Mas a diferença mais básica entre elas é que em clustering nós recebemos os dados e vamos
descobrir grupos ali dentro utilizando técnicas não supervisionadas. Ou seja, nosso resultado
são grupos.
Já em classificação, nós já conhecemos os grupos de antemão. Queremos é descobrir em qual
desses grupos os dados que possuímos se encaixam. Ou seja, nosso resultado são dados
classificados, geralmente, para tomada de decisão.
Num exemplo isso fica mais claro. Vamos supor que você tem em mãos um grande banco de dados
de um grande loja e foi te dada a tarefa de descobrir quantos e quais são os principais perfis de
clientes que frequentam a loja relativo, é claro, ao consumo. Isto é uma tarefa de clustering: você não
tem os grupos, quer descobri-los.
Agora, suponha que você trabalhe para um banco e tenha que montar um sistema para descobrir
quais clientes são bons ou maus pagadores. O banco precisa de uma forma automatizada para
auxiliar os gerentes. Assim eles podem conceder empréstimos ou não com mais segurança. Isto é
uma tarefa de classificação: você tem os grupos (bom pagador e mau pagador) e quer classificar os
clientes neles.
Clustering e classificação tem diversos termos em comum. Por isso explicamos desde já a diferença
para evitar confusões no futuro. Por exemplo, o ato de encontrar clusters, muitas vezes é chamado
de classificação, da mesma forma como o ato de classificar, de fato, em classificação. A coisa fica
muito confusa quando misturamos as duas áreas. Porém, vamos prosseguir só com o clustering. A
classificação fica para outro dia.
Aplicações de clustering
Algoritmos de clustering podem ser utilizados em praticamente qualquer área de conhecimento, por
exemplo:
Marketing: encontrar grupos de consumidores com comportamento similar data uma base de
dados grande contendo seus bens e compras passadas;
Biologia: classificação de plantas e animais a partir de suas características;
Livrarias: otimizar a organização dos livros;
Seguros: identificar grupos com grandes chances de custo acima do normal, ou fraudes;
Planejamento de cidades: identificar grupos de casas conforme seu tipo, valor e localização;
Estudo de terremotos: analisar epicentros de terremotos para identificar áreas perigosas;
WWW: classificação de documentos; agrupamento de dados de blogs para descobrir grupos
com padrões de acesso similares.
Algoritmos - Requisitos
Os requisitos que um algoritmo de clustering tem de satisfazer são:
escalabilidade (ser capaz de lidar com grandes volumes de dados);
lidar com diferentes tipos de atributos (texto, imagem, números, ;
descobrir clusters com tamanhos e formas arbitrários;
exigirem conhecimentos de área mínimo para determinar os parâmetros de entrada;
habilidade de lidar com ruído e outliers(dados extremamente fora do padrão);
insensibilidade a ordem dos dados;
alta dimensionalidade (lidar com dados com muitas dimensões/atributos);
interpretabilidade (a resposta do algoritmo tem que ser inteligível para seres humanos);
usabilidade (ser fácil de aprender/usar ajuda)
3. Algoritmos - Problemas
Há vários problemas com as tarefas de clustering. Claro! Sempre tem problemas sobrando. Mesmo
dentro de algo que deveria ser uma solução. Dentre eles:
nenhum dos algoritmos de clustering atuais cobrem todos os requisitos corretamente
(convenhamos, que boa parte dos requisitos são querer demais);
lidar com muitas dimensões e muitos dados pode ser problemático por questões de tempo
(50 anos de processamento não é algo muito interessante, não concorda?);
a efetividade do algoritmo depende da função distância usada no caso (para algoritmos baseados em
distância);
se uma distância óbvia não existe, nós devemos defini-la. O que nem sempre é fácil, especialmente em
espaços multi-dimensionais;
o resultado do algoritmo de clustering é sujeito a múltiplas interpretações (muitas vezes o próprio
algoritmo pode).
Algoritmos de clustering
Os algoritmos de clustering podem ser divididos em algumas categorias:
Clustering exclusivo
Clustering de sobreposição (Overlapping)
Clustering hierárquico
Clustering probabilístico
Clustering exclusivo: neste caso, os dados são agrupados de forma exclusiva, ou seja, cada dado só pode ser
inserido em um único grupo. Um exemplo simples disso é mostrado na figura abaixo, onde a separação dos é
conseguida usando uma reta. Aí temos dois grupos, com dados acima de reta e abaixo, nenhum em ambos
grupos.
Clustering de sobreposição (Overlapping): ao contrário dos exclusivos, esta categoria utiliza grupos
fuzzy para agrupar os dados. O que significa que dados podem pertencer a vários grupos ao mesmo
tempo com diferentes graus de associação. Geralmente o valor do grau de associação é um
percentual que representa o quanto esse dado pertence a um grupo.
Clustering hierárquico: Aqui, os algoritmos se baseiam na união de grupos muito próximos.
Começando por definir cada dado como um grupo. Depois de uma série de iterações, os clusters
desejados são obtidos.
Clustering probabilístico: como o nome diz, utiliza métodos probabilísticos para montar os grupos.
E, claro, um algoritmo pode pertencer a mais de uma categoria.
4. Para finalizar, temos aqui uma lista de alguns dos algoritmos mais usados nessa área (aos poucos
todos eles serão explicados aqui no Legauss):
Canopy
C-médiasfuzzy
DirichletProcessClustering
K-médias
K-média fuzzy
LatentDirichletAllocation (LDA)
Maximização de expectativa (EM)
Mean Shift
MixtureofGaussians
Shi–Malik
SLINK
Espero que gostem deste e da série de artigos que está por vir. ;)
Que a salsicha esteja com você!
Fontes:
Data Clustering (Principles of Knowledge Discovery in Databases), Clustering - Introduction, Cluster
analysis - Wikipedia, the free encyclopedia, Different Techniques of Data Clustering, Data
Clustering e Data Clustering Simulation in Python and PyGame - CodeProject.
Postado por Jayme Tosi Neto @ 09:15
Marcadores: classificação, clustering, Computação, IA, mineração de dados, piu
Posts Relacionados
Clustering - Agrupamento de dados
Mineração de dados - O pesadelo dos usuários
Algoritmos tontos - Só pra distrair um pouco
Django - Como ocultar condicionalmente inlines no admin?
Como converter Xoops-SmartSectionparaWordPress