Ola pessoal, tudo bem? Neste post vamos falar um pouco sobre analise de clusters,uma tecnica bastante poderosa e que possui aplicacoes nos mais diversos campos: biologia, medicina, marketing, para citar alguns. Nossa tarefa consiste em classificar um grupode paises em 3 categorias distintas (desenvolvidos, emergentes e subdesenvolvidos), analisandouma tabela contendo indicadores socio-economicos para cada pais. Ah sim, usaremosR para a analise!Visao geral O conceito de cluster ou agrupamento e bem generico e intuitivo: podemos pensar em um cluster de galaxias, computadores, pessoas, etc. De maneira geral, dado um conjunto de objetos do mesmo tipo, uma analise de clusters consiste em agrupar esses objetos em grupos distintos, de maneira que objetos no mesmo grupo possuam caracteristicas similares. As tecnicas de clustering sao bastante diversificadas, e os algoritmos diferem entre si justamente no que se refere a nocao do que constitui um cluster. Os modelos mais comuns de clustering incluem: connectivity based, centroid based, distribution based, density based, entre outros. Para simplificar as coisas, usaremos o algoritmo k-means que e baseado no conceito de centroide. Aqui voce encontra uma boa introducao sobre as tecnicas citadas acima. Algoritmo k-means O objetivo do k-means e achar a melhor divisao de n objetos em k grupos, de modo que a distancia total entre os membros de um grupo (cluster) e o seu respectivo centroide seja minimizada. Imagine cada centroide como sendo o 'representante medio' dos objetos em um mesmo cluster, ao minimizar esta distancia, estamos maximizando a similaridade entre os objetos deste cluster. De modo simplificado, o algoritmo segue os seguintes passos: Defina o centroide inicial de cada grupo (normalmente de modo randomico) Atribua cada objeto ao cluster com centroide mais proximo Recalcule os centroides (ja que novos objetos foram atribuidos no passo anterior) Repita os passos 2 e 3 ate nao serem detectadas mudancas nos grupos O k-means e um algoritmo 'greedy', sendo bastante popular e eficiente do ponto de vista computacional.Cenario Considere o problema de dividir uma lista de paises em 3 grupos distintos (desenvolvidos, emergentes ou subdesenvolvidos), considerando os seguintes atributos: Rendar per capita Taxa de alfabetizacao Mortalidade infantil Expectativa de vida Nesse caso, um algoritmo de clustering parece ser uma boa alternativa.Enter R Faca o download do dataset aqui. O primeiro passo e criar um objeto da classe 'data.frame' com as informacoes deste arquivo: paises = read.csv(file = 'countries.csv', header = TRUE, sep = '\t') No argumento file podemos especificar um caminho (absoluto ou relativo), ou uma URL externa. Ao especificar um caminho relativo, R vai procurar o arquivo a partir do seu working directory atual (digite getwd() caso nao saiba onde fica o diretorio de trabalho atual). No segundo argumento, especificamos a existencia de headers na primeira linha do arquivo. Por fim, especificamos o caractere de separacao ('tab' no nosso caso). Agora ja podemos executar o k-means: k = 3 iter = 15 km = kmeans (x = paises, centers = k, iter.max = iter) O argumento x aceita qualquer objeto que possa ser convertido em uma matrix numerica, como nosso data frame, em que todas as colunas sao numericas. O argumento