Participe da Maratona Behind the Code! A competição de programação que mais te desafia! Inscreva-se aqui

Classificação e armazenamento em cluster

Introdução

Na Parte 1, introduzi o conceito de mineração de dados e o software livre e grátis Waikato Environment for Knowledge Analysis (WEKA), que permite que você minere seus próprios dados para encontrar tendências e padrões. Também falei sobre o primeiro método de — regressão — de mineração de dados que permite prever um valor numérico para um determinado conjunto de valores de entrada. Esse método de análise é o método mais fácil de ser executado e o método menos eficiente para mineração de dados, mas ele atendeu ao objetivo de introduzir o WEKA e forneceu um bom exemplo de como dados brutos podem ser transformados em informações significativas.

Neste artigo, mostrarei dois métodos de mineração de dados adicionais que são um pouco mais complexos do que um modelo de regressão, mas mais eficientes em seus respectivos objetivos. Onde um modelo de regressão poderia dar somente uma saída numérica com entradas específicas, esses modelos adicionais permitem que você interprete seus dados de maneira diferente. Como disse na Parte 1, a mineração de dados tem a ver com aplicar o modelo certo a seus dados. É possível que você possua os melhores dados sobre seus clientes (o que quer que isso signifique), mas caso você não aplique os modelos certos a eles, eles serão apenas lixo. Pense nisso de uma outra maneira: Caso você usasse somente modelos de regressão, que produzem uma saída numérica, como a Amazon seria capaz de lhe dizer “Outros clientes que compraram X também compraram Y”? Não há uma função numérica que poderia lhe dar esse tipo de informação. Então, vamos investigar esses dois modelos adicionais que podem ser usados com seus dados.

Neste artigo, também farei referências repetidas ao método de mineração de dados chamado “vizinho mais próximo”, apesar de não entrar realmente em detalhes até a Parte 3. No entanto, eu o incluo nas comparações e descrições para este artigo para tornar as discussões completas.

Classificação vs. armazenamento em cluster vs. vizinho mais próximo

Antes de entrarmos nos detalhes específicos de cada método e executá-los através do WEKA, acho que devemos entender o que cada modelo se esforçará para conseguir — que tipo de dados e que objetivos cada modelo tenta alcançar. Também colocaremos na discussão nosso modelo existente — o modelo de regressão — para que seja possível ver como os três modelos se comparam ao modelo que já conhecemos. Usarei um exemplo real para mostrar como cada modelo pode ser usado e como eles se diferem. Todos os exemplos reais giram em torno de uma concessionária local da BMW e como ela pode aumentar as vendas. A concessionária armazenou todas suas informações de vendas passadas e informações a respeito de cada pessoa que comprou uma BMW, olhou uma BMW ou procurou algo no salão de exposição da BMW. A concessionária quer aumentar suas vendas futuras e empregar mineração de dados para conseguir isso.

Regressão

Pergunta: “Quanto deveríamos cobrar pela nova BMW M5?” Os modelos de regressão podem responder a essa pergunta com uma resposta numérica. Um modelo de regressão usaria dados de vendas passadas sobre BMWs e M5s para determinar quanto as pessoas pagaram pelos carros anteriores da concessionária, baseando-se nos atributos e características de vendas dos carros vendidos. Então, o modelo permitiria que a concessionária da BMW inserisse os novos atributos do carro para determinar o preço.

Exemplo: Selling Price = $25,000 + ($2900 * Liters in Engine) + ($9000 * isSedan) + ($11,000 * isConvertible) + ($100 * inches of car) + ($22,000 * isM).

Classificação

Pergunta: “Qual a probabilidade de uma pessoa X comprar o mais novo modelo BMW M5?” Criando uma árvore de classificação (uma árvore de decisão), os dados podem ser minerados para determinar a probabilidade de essa pessoa comprar um novo M5. Possíveis nós na árvore seriam idade, nível de renda, número atual de carros, estado civil, filhos, proprietário do imóvel ou inquilino. Os atributos dessa pessoa podem ser usados em relação à árvore de decisão para determinar a probabilidade de ele comprar o M5.

Armazenamento em cluster

Pergunta: “Que faixa etária gosta da BMW M5 da cor prata?” Os dados podem ser minados para comparar a idade dos compradores prévios de carros e as cores que eles compraram no passado. A partir desses dados, é possível encontrar se certas faixas etárias (22-30 anos de idade, por exemplo) estão mais propensas a comprar um certo tipo de cor da BMW M5 (75 por cento compram azul). De maneira similar, pode ser exibido que uma faixa etária diferente (55-62 anos, por exemplo) está mais propensa a comprar BMWs da cor prata (65 por cento compram prateadas, 20 por cento compram cinzas). Os dados, quando minerados, tendem a ser armazenados em cluster em volta de certas faixas etárias ou cores, permitindo ao usuário determinar padrões nos dados rapidamente.

Vizinho mais próximo

Pergunta: “Quando as pessoas compram a BMW M5, quais outras opções elas tendem a comprar ao mesmo tempo?” Os dados podem ser minerados para mostrar que quando as pessoas chegam e compram uma BMW M5, elas também compram a bagagem correspondente. (Isso também é mostrado como uma análise de cesta). Usando esses dados, a concessionária de carros pode mover as promoções das bagagens correspondentes para a parte da frente da concessionária ou até mesmo oferecer um anúncio no jornal para uma bagagem correspondente grátis/com desconto ao comprar o M5, em um esforço para aumentar as vendas.

Classificação

Classificação (também conhecidas como árvores de classificação ou árvores de decisão) é um algoritmo de mineração de dados que cria um guia passo a passo com a maneira para determinar a saída de uma nova instância de dados. A árvore criada é exatamente esta: uma árvore na qual cada nó na árvore representa um ponto onde uma decisão deve ser tomada com base na entrada e você move para os próximos nós até alcançar uma folha que mostre a saída prevista. Parece confuso, mas é realmente muito direto. Vamos examinar um exemplo.

Listagem 1. Árvore de classificação simples

[ Will You Read This Section? ]
          /              \
        Yes              No
        /                 \
[Will You Understand It?]  [Won't Learn It]
    /         \
  Yes          No
  /             \
  [Will Learn It]  [Won't Learn It]

Essa árvore de classificação simples procura responder à questão “Você entenderá árvores de classificação?” Em cada nó, responda à questão e continue naquela ramificação até encontrar uma folha que responda sim ou não. Esse modelo pode ser usado para qualquer instância de dados desconhecida e é possível prever se essa instância de dados desconhecida aprenderá sobre árvores de classificação perguntando-lhe somente duas questões simples. Aparentemente, essa é a grande vantagem de uma árvore de classificação — ela não necessita de muitas informações sobre os dados para criar uma árvore que pode ser muito exata e muito informativa.

Um importante conceito da árvore de classificação é similar ao que vimos no modelo de regressão da Parte 1: o conceito de usar um “conjunto de treinamento” para produzir o modelo. Isso toma o conjunto de dados com valores de saída conhecidos e usa esse conjunto de dados para construir nosso modelo. Então, sempre que possuirmos um novo ponto de dados, com um valor de saída desconhecido, o colocamos no modelo e produzimos nossa saída esperada. Isso é igual ao que vimos no modelo de regressão. No entanto, esse tipo de modelo segue uma etapa adiante e é uma prática comum pegar todo um conjunto de treinamento e dividi-lo em duas partes: pegue cerca de 60-80 por cento dos dados e coloque-os em nosso conjunto de treinamento, que usaremos para criar o modelo; então, pegue os dados restantes e coloque-os em um conjunto de testes, que usaremos imediatamente após criar o modelo para testar a exatidão de nosso modelo.

Por que essa etapa extra é importante nesse modelo? O problema é chamado superajuste: Se fornecermos dados demais na nossa criação do modelo, o modelo será, na verdade, perfeitamente criado, mas somente para esses dados. Lembre-se: Gostaríamos de usar esse modelo para prever valores futuros desconhecidos; não gostaríamos que o modelo predissesse valores que já conhecemos. É por isso que criamos um conjunto de testes. Após criarmos o modelo, o verificamos para garantir que a exatidão do modelo que construímos não diminui com o conjunto de testes. Isso garante que nosso modelo preverá, de maneira exata, valores futuros desconhecidos. Veremos isso em ação usando o WEKA.

Isso traz à tona um outro conceito importante das árvores de classificação: a noção de limpeza. Limpeza, como sugere o nome, envolve a remoção de ramificações da árvore de classificação. Por que alguém gostaria de remover informações da árvore? Novamente, isso é devido ao conceito de superajuste. Com o crescimento do conjunto de dados e do número de atributos, é possível criar árvores que se tornam cada vez mais complexas. Em teoria, poderia haver uma árvore com leaves = (rows * attributes). Mas para que serviria isso? Isso não nos ajudará de maneira alguma a prever valores futuros desconhecidos, já que ela é perfeitamente adequada somente para nossos dados de treinamento existentes. Gostaríamos de criar um equilíbrio. Gostaríamos que nossa árvore fosse a mais simples possível, com o menor número de nós e folhas possível. Mas também gostaríamos que ela fosse a mais exata possível. Isso é um dilema que veremos.

Finalmente, o último ponto que gostaria de levantar sobre a classificação antes de usar o WEKA é sobre o positivo falso e o negativo falso. Basicamente, um positivo falso é uma instância de dados em que o modelo que criamos prevê que ela deve ser positiva, mas, ao invés disso, o valor real é negativo. De modo inverso, um negativo falso é uma instância de dados em que o modelo prevê que ela deve ser negativa, mas o valor real é positivo.

Esses erros indicam que possuímos erros em nosso modelo, já que o modelo classifica alguns dados de maneira incorreta. Embora algumas classificações incorretas possam ser esperadas, depende do criador do modelo determinar qual a porcentagem aceitável de erros. Por exemplo, se o teste fosse para monitores cardíacos em um hospital, é claro que necessitaríamos de uma porcentagem de erros extremamente baixa. Por outro lado, caso esteja simplesmente minerando alguns dados inventados em um artigo sobre mineração de dados, sua porcentagem de erros aceitável pode ser muito maior. Para levar isso uma etapa adiante, é necessário decidir qual a porcentagem de negativos falsos vs. positivos falsos é aceitável. O exemplo que vêm imediatamente à mente é um modelo de spam: Um positivo falso (um e-mail verdadeiro que é rotulado como spam) é, provavelmente, muito mais danoso do que um negativo falso (uma mensagem de spam não rotulada como spam). Em um exemplo como esse, é possível julgar que uma proporção mínima de 100:1 negativo falso:positivo falso seja aceitável.

OK — chega desse papo técnico e de plano de fundo sobre árvores de classificação. Vamos obter alguns dados reais e colocá-los em compasso com o WEKA.

Conjunto de dados WEKA

O conjunto de dados que usaremos para nosso exemplo de classificação estará focado em nossa concessionária fictícia da BMW. A concessionária está iniciando uma campanha promocional na qual está tentando vender uma garantia estendida de dois anos para seus clientes passados. A concessionária já fez isso antes e reuniu 4.500 pontos de dados de vendas antigas de garantias estendidas. Os atributos no conjunto de dados são:

  • Colchete de renda [0=$0-$30k, 1=$31k-$40k, 2=$41k-$60k, 3=$61k-$75k, 4=$76k-$100k, 5=$101k-$150k, 6=$151k-$500k, 7=$501k+]
  • Ano/mês de compra da primeira BMW
  • Ano/mês de compra da BMW mais recente
  • Se eles responderam à oferta de garantia estendida no passado

Vejamos Attribute-Relation File Format (ARFF) que usaremos neste exemplo.

Listagem 2. Dados WEKA de classificação

@attribute IncomeBracket {0,1,2,3,4,5,6,7}
@attribute FirstPurchase numeric
@attribute LastPurchase numeric
@attribute responded {1,0}

@data

4,200210,200601,0
5,200301,200601,1
...

Classificação no WEKA

Carregue o arquivo de dados bmw-training.arff (consulte Download) no WEKA usando as mesmas etapas que usamos até este ponto. Observação: Esse arquivo contém somente 3.000 dos 4.500 registros que a concessionária possui em seus registros. Necessitamos dividir nossos registros para que algumas instâncias de dados sejam usadas para criar o modelo e algumas sejam usadas para testar o modelo para garantir que não o superajustamos. Após carregar os dados, sua tela deve se parecer à da Figura 1.

Figura 1. Classificação de dados da BMW no WEKA

alt

Como fizemos no modelo de regressão na Parte 1, selecionamos a guia Classify, selecionamos o nó trees e a folha J48 (Não sei o porquê este é o nome oficial, mas selecione-a).

Figura 2. Algoritmo de classificação da BMW

alt

Neste ponto, já estamos prontos para criar nosso modelo no WEKA. Garanta que Use training set esteja selecionado para que usemos o conjunto de dados que acabamos de carregar para criar nosso modelo. Clique em Start e deixe que o WEKA seja executado. A saída desse modelo deve-se parecer com as saídas na Listagem 3.

Listagem 3. Saída do modelo de classificação do WEKA

Number of Leaves  :     28

Size of the tree :     43

Time taken to build model: 0.18 seconds

=== Evaluation on training set ===
=== Summary ===

Correctly Classified Instances        1774               59.1333 %
Incorrectly Classified Instances      1226               40.8667 %
Kappa statistic                          0.1807
Mean absolute error                      0.4773
Root mean squared error                  0.4885
Relative absolute error                 95.4768 %
Root relative squared error             97.7122 %
Total Number of Instances             3000

=== Detailed Accuracy By Class ===

               TP Rate   FP Rate   Precision   Recall  F-Measure   ROC Area  Class
                 0.662     0.481      0.587     0.662     0.622      0.616    1
                 0.519     0.338      0.597     0.519     0.555      0.616    0
Weighted Avg.    0.591     0.411      0.592     0.591     0.589      0.616

=== Confusion Matrix ===

    a    b   <-- classified as
 1009  516 |    a = 1
 710  765 |    b = 0

O que significam todos esses números? Como sabemos se esse é um bom modelo? Onde está essa suposta “árvore” pela qual deveria estar procurando? Todas são boas perguntas. Vamos responder uma por vez:

  • O que significam todos esses números? Os números importantes que devem ser focados aqui são os números próximos às “Correctly Classified Instances” (59,1 por cento) e às “Incorrectly Classified Instances” (40,9 por cento). Outros números importantes estão na coluna “ROC Area”, na primeira fila (o 0,616); explicarei esse número mais tarde, mas tenha-o em mente. Finalmente, em “Confusion Matrix”, o número de positivos falsos e negativos falsos é mostrado. Os positivos falsos são 516 e os negativos falsos são 710 nessa matriz.
  • Como sabemos se esse é um bom modelo? Bem, baseando-se em nossa taxa de exatidão de somente 59,1 por cento, teria que dizer que através de uma análise inicial, esse não é um modelo muito bom.
  • Onde está essa suposta árvore? É possível ver a árvore clicando com o botão direito do mouse no modelo que você acabou de criar, na lista de saídas. No menu pop-up, selecione Visualize tree. Você verá a árvore de classificação que acabamos de criar, apesar de que, neste exemplo, a árvore visual não oferece muita ajuda. Nossa árvore é mostrada na Figura 3. A outra maneira de ver a árvore e olhar para a parte mais superior no Classifier Output, onde a saída de texto mostra toda a árvore, com nós e folhas.

Figura 3. Visualização da árvore de classificação

alt

Há uma etapa final para validar nossa árvore de classificação, que é executar nosso conjunto de testes no modelo para garantir a exatidão do modelo ao avaliar se o conjunto de testes não é muito diferente do conjunto de treinamento. Para fazer isso, em Test options, selecione o botão de opções Supplied test set e clique em Set. Escolha o arquivo bmw-test.arff, que contém 1.500 registros que não estavam no conjunto de treinamento que usamos para criar o modelo. Desta vez, ao clicarmos em Start, o WEKA executará este conjunto de dados de teste no modelo que já criamos e nos avisará como o modelo se saiu. Vamos fazer isso, clicando em Start. Abaixo está a saída.

Figura 4. Teste da árvore de classificação

alt

Comparando as “Correctly Classified Instances” desse conjunto de testes (55,7 por cento) com as “Correctly Classified Instances” do conjunto de treinamento (59,1 por cento), vemos que a exatidão do modelo é bem próxima, o que indica que o modelo não falhará com dados desconhecidos ou quando dados futuros forem aplicados a ele.

No entanto, devido ao fato de a exatidão do modelo ser tão ruim, classificando somente 60 por cento dos registros de dados corretamente, poderíamos dar um passo atrás e dizer, “Nossa! Esse modelo não é muito bom. Está somente um pouco acima de 50 por cento, o que eu poderia obter somente adivinhando valores de maneira aleatória.” Isso é totalmente verdade. Isso nos leva a um ponto importante que eu gostaria de esclarecer, em segredo, a todos: Algumas vezes, aplicar um algoritmo de mineração de dados a seus dados produzirá um modelo ruim. Isso é particularmente verdadeiro aqui e foi feito de propósito.

Eu quis lhe mostrar as etapas para produzir um modelo de árvore de classificação com dados que parecem ser ideais para um modelo de classificação. No entanto, os resultados que obtivemos do WEKA, indicam que estávamos errados. Uma árvore de classificação não é o modelo que deveríamos ter escolhido aqui. O modelo que criamos nos diz absolutamente nada e, caso o usássemos, poderíamos tomar decisões ruins e desperdiçar dinheiro.

Isso significa que esses dados não podem ser minerados? A resposta é um outro ponto importante com relação à mineração de dados: o modelo do vizinho mais próximo, discutido em um artigo futuro, usará esse mesmo conjunto de dados, mas criará um modelo que é 88 por cento exato. Ele tem o objetivo de provar que é necessário escolher o modelo certo para que os dados certos obtenham informações boas e significantes.

Leitura adicional: Caso esteja interessado em aprender mais sobre árvores de classificação, aqui estão algumas palavras-chave para procurar e que eu não tive espaço para detalhá-las neste artigo: curvas ROC, AUC, positivos falsos, negativos falsos, curvas de aprendizado, Naive Bayes, ganho de informações, superajuste, limpeza, teste qui-quadrado.

Armazenamento em cluster

O armazenamento em cluster permite que um usuário faça grupos de dados para determinar padrões a partir dos dados. O armazenamento em cluster tem suas vantagens quando o conjunto de dados for definido e um padrão geral necessitar ser determinado a partir dos dados. É possível criar um número específico de grupos, dependendo de suas necessidades de negócio. Um benefício decisivo do armazenamento em cluster sobre a classificação é que cada atributo no conjunto de dados será usado para analisar os dados. (Se você se lembrar do método de classificação, somente um subconjunto de atributos é usado no modelo.) Uma grave desvantagem de usar o armazenamento em cluster é que o usuário necessita saber de antemão quantos grupos ele gostaria de criar. Para um usuário sem qualquer conhecimento real de seus dados, isso pode ser difícil. Deveria criar três grupos? Cinco grupos? Dez grupos? Pode levar várias etapas de tentativa e erro para determinar o número ideal de grupos a serem criados.

No entanto, para o usuário médio, o armazenamento em cluster pode ser o método de mineração de dados mais útil que pode ser usado. Ele pode pegar, rapidamente, todo seu conjunto de dados e transformá-lo em grupos, a partir dos quais é possível tirar algumas conclusões rapidamente. A matemática por trás desse método é relativamente complexa e confusa. Por isso aproveitamos todas as vantagens do WEKA.

Visão geral da matemática

Essa deve ser considerada uma visão geral rápida e não detalhada da matemática e do algoritmo usados no método de armazenamento em cluster:

  1. Cada atributo nesse conjunto de dados deve ser normalizado, pelo qual cada valor é dividido pela diferença entre o valor alto e o valor baixo no conjunto de dados para esse atributo. Por exemplo, se o atributo for idade e o valor mais alto for 72 e o valor mais baixo for 16, então, a idade 32 deve ser normalizada para 0,5714.
  2. Dado o número de clusters desejados, selecione, de maneira aleatória, esse número de amostras do conjunto de dados para servir como nossos centros iniciais de teste de clusters. Por exemplo, caso deseje ter três clusters, você selecionaria, de maneira aleatória, três linhas de dados do conjunto de dados.
  3. Calcule a distância de cada amostra de dados até o centro do cluster (ou linha de dados selecionada aleatoriamente), usando o método de cálculo de distância dos mínimos quadrados.
  4. Atribua cada linha de dados a um cluster, baseando-se na distância mínima até cada centro do cluster.
  5. Calcule o centroide, que é a média de cada coluna de dados usando somente os membros de cada cluster.
  6. Calcule a distância de cada amostra de dados até os centroides recém-criados. Se os clusters e membros de cluster não mudarem, você terminou e os clusters estão criados. Caso eles mudem, é necessário começar novamente voltando à etapa 3 e continuando novamente até que os clusters não sejam modificados.

Obviamente, isso não parece muito divertido. Com um conjunto de dados de 10 linhas e três clusters, pode-se levar 30 minutos para que funcione usando uma planilha. Imagine o tempo que levaria para fazer isso à mão se você tivesse 100.000 linhas de dados e quisesse 10 clusters. Felizmente, um computador pode fazer esse tipo de cálculo em poucos segundos.

Conjunto de dados para WEKA

O conjunto de dados que usaremos para nosso exemplo de armazenamento em cluster estará novamente focado em nossa concessionária fictícia da BMW. A concessionária acompanhou quantas pessoas passaram pela concessionária e pelo salão de exibição, que carros eles olharam e com que frequência eles, enfim, compraram. Eles esperam minerar esses dados encontrando padrões nos dados e usando clusters para determinar se surgiram certos comportamentos em seus clientes. Há 100 colunas de dados nessa amostra e cada coluna descreve as etapas em que os clientes chegaram em sua experiência com a BMW, com uma coluna possuindo 1 (eles chegaram a essa etapa ou olharam esse carro) ou 0 (eles não chegaram a essa etapa). A Listagem 4 mostra os dados ARFF que usaremos com o WEKA.

Listagem 4. Dados WEKA de armazenamento em cluster

@attribute Dealership numeric
@attribute Showroom numeric
@attribute ComputerSearch numeric
@attribute M5 numeric
@attribute 3Series numeric
@attribute Z4 numeric
@attribute Financing numeric
@attribute Purchase numeric

@data

1,0,0,0,0,0,0,0
1,1,1,0,0,0,1,0
...

Armazenamento em cluster no WEKA

Carregue o arquivo de dados bmw-browsers.arff no WEKA usando as mesmas etapas que usamos para carregar dados na guia Preprocess. Leve alguns minutos para dar uma olhada nos dados nessa guia. Veja as colunas, os dados do atributo, a distribuição das colunas, etc. Sua tela deve se parecer com a da Figura 5 após carregar os dados.

Figura 5. Dados de cluster da BMW no WEKA

alt

Esperamos criar clusters com esse conjunto de dados, então, ao invés de clicar na guia Classify, clique na guia Cluster. Clique em Choose e selecione SimpleKMeans a partir das opções que aparecem (essa será nossa preferência para método de armazenamento em cluster para este artigo). Neste momento, sua janela do WEKA Explorer deve se parecer com a da Figura 6.

Figura 6. Algoritmo de armazenamento em cluster da BMW

alt

Finalmente, queremos ajustar os atributos de nosso algoritmo do cluster clicando em SimpleKMeans (não é o melhor design de UI, mas siga em frente). O único atributo do algoritmo que nos interessa ajustar aqui é o campo numClusters, que nos diz quantos clusters desejamos criar. (Lembre-se: é necessário saber disso antes de começar.) Vamos alterar o valor padrão de 2 para 5, por enquanto, mas lembre-se dessas etapas caso queira ajustar o número de clusters criados. Neste momento, seu WEKA Explorer deve se parecer com o da Figura 7. Clique em OK para aceitar esses valores.

Figura 7. Atributos do cluster

alt

Nesse ponto, estamos prontos para executar o algoritmo de armazenamento em cluster. Lembre-se de que 100 linhas de dados com cinco clusters de dados provavelmente levariam algumas horas de cálculo com uma planilha, mas o WEKA pode dar a resposta em menos de um segundo. Sua saída deve se parecer com a da Listagem 5.

Listagem 5. Saída do cluster

Cluster#
Attribute            Full Data      0          1          2          3          4
                       (100)       (26)       (27)        (5)       (14)       (28)
==================================================================================
Dealership              0.6     0.9615     0.6667          1     0.8571          0
Showroom               0.72     0.6923     0.6667          0     0.5714          1
ComputerSearch         0.43     0.6538          0          1     0.8571     0.3214
M5                     0.53     0.4615      0.963          1     0.7143          0
3Series                0.55     0.3846     0.4444        0.8     0.0714          1
Z4                     0.45     0.5385          0        0.8     0.5714     0.6786
Financing              0.61     0.4615     0.6296        0.8          1        0.5
Purchase               0.39          0     0.5185        0.4          1     0.3214

Clustered Instances

0       26 ( 26%)
1       27 ( 27%)
2        5 (  5%)
3       14 ( 14%)
4       28 ( 28%)

Como interpretamos esses resultados? Bem, a saída está nos dizendo como cada cluster se une, com um “1” significando que cada um naquele cluster compartilha o mesmo valor de um e com um “0” indicando que cada um naquele cluster possui um valor de zero para aquele atributo. Os números são o valor médio de todos no cluster. Cada cluster nos mostra um tipo de comportamento em nossos clientes, do qual podemos começar a tirar algumas conclusões.

  • Cluster 0 — Podemos chamar esse grupo de “Sonhadores”, já que parece que eles andam pela concessionária, olhando os carros estacionados nos estacionamentos, mas diminui no que diz respeito a entrar na concessionária e, o pior de tudo, eles não compram nada.
  • Cluster 1 — Chamamos esse grupo de “Amantes do M5” pois eles tendem a ir diretamente em direção aos M5, ignorando os carros 3-series e o Z4. No entanto, eles não possuem uma alta taxa de compra — somente 52 por cento. Esse é um potencial problema e poderia ser um foco de melhoria para a concessionária, talvez enviando mais vendedores para a seção do M5.
  • Cluster 2 — Esse grupo é tão pequeno que podemos chamá-lo de “Jogados Fora”, pois eles não são estatisticamente relevantes e não podemos tirar nenhuma conclusão boa de seu comportamento. (Algumas vezes, isso acontece com clusters e pode indicar que é necessário reduzir o número de clusters criados).
  • Cluster 3 — Esse grupo será chamado de “Bebês da BMW” pois eles sempre acabam comprando um carro e sempre acabam financiando-o. Aqui é onde os dados nos mostram algumas coisas interessantes: Parece que eles andam pelo estacionamento olhando para os carros, então usam a pesquisa do computador disponível na concessionária. Enfim, eles tendem a comprar M5s ou Z4s (mas nunca 3-series). Esse cluster diz à concessionária que ela deveria considerar tornar os computadores de pesquisa mais notáveis nos estacionamentos (computadores de pesquisa do lado de fora?) e, talvez, fazer com que o M5 ou o Z4 fossem muito mais notáveis nos resultados da pesquisa. Quando o cliente tiver decidido comprar um veículo, ele sempre se qualifica para o financiamento e conclui a compra.
  • Cluster 4 — Chamaremos esse grupo de “Começando com a BMW”, pois eles sempre olham o 3-series e nunca olham para o M5, que é muito mais caro. Eles entram diretamente no salão de exibição, preferem não andar pelo estacionamento e tendem a ignorar os terminais de pesquisa por computador. Enquanto que 50 por cento chegam ao estágio de financiamento, somente 32 por cento acabam finalizando a transação. A concessionária poderia concluir que esses clientes que esperam comprar seu primeiro BMW sabem exatamente que tipo de carro desejam (o modelo de nível de entrada 3-series) e esperam qualificar-se para o financiamento e terem condições financeiras de comprá-lo. A concessionária poderia, possivelmente, aumentar as vendas para esse grupo relaxando seus padrões de financiamento ou reduzindo os preços do 3-series.

Uma outra maneira interessante de examinar os dados nesses clusters é inspecioná-los visualmente. Para fazer isso, clique com o botão direito na seção Result List da guia Cluster (novamente, não é o melhor design de UI). Uma das opções desse menu pop-up é Visualize Cluster Assignments. Uma janela aparecerá e deixará que você brinque com os resultados e possa visualizá-los. Para esse exemplo, altere o eixo X para ser M5 (Num), o eixo Y para ser Purchase (Num) e a cor para ser Cluster (Nom). Isso nos mostrará, em um gráfico, como os clusters estão agrupados com base em quem olhou o M5 e quem o comprou. Aumente também o “Jitter” para cerca de três quartos do limite, o que espalhará artificialmente os pontos de plotagem para permitir que os vejamos de maneira mais fácil.

Os resultados visuais correspondem-se às conclusões que tiramos dos resultados na Listagem 5? Bem, podemos ver no ponto X=1, Y=1 (as pessoas que olharam os M5s e fizeram uma compra) que os únicos clusters representados aqui são 1 e 3. Também podemos ver que os únicos clusters no ponto X=0, Y=0 são 4 e 0. Isso corresponde às conclusões acima? Sim, corresponde. Os clusters 1 e 3 estavam comprando os M5s, enquanto que o cluster 0 não estava comprando nada e o cluster 4 estava somente olhando o 3-series. A Figura 8 mostra o layout visual do cluster para nosso exemplo. Sinta-se livre para brincar com os eixos X e Y para tentar identificar outras tendências e padrões.

Figura 8. Inspeção visual do cluster

alt

Leitura adicional: Se estiver interessado em dar continuidade ao tópico, leia sobre os seguintes termos: Distância euclidiana, algoritmo de Lloyd, distância de Manhattan, distância de Chebyshev, soma dos quadrados dos erros, centroides de cluster.

Conclusão

Este artigo discutiu dois algoritmos de mineração de dados: a árvore de classificação e o armazenamento em cluster. Esses algoritmos são diferentes do algoritmo do modelo de regressão explicado na Parte 1, na qual não estamos restritos a uma saída numérica de nosso modelo. Esses dois modelos nos permitem ter maior flexibilidade com nossa saída e podem ser armas mais poderosas em nosso arsenal de mineração de dados.

A árvore de classificação cria, literalmente, uma árvore com ramificações, nós e folhas que nos deixa tomar um ponto de dados desconhecido e descer pela árvore, aplicando os atributos do ponto de dados à árvore até chegarmos a uma folha e a saída desconhecida do ponto de dados puder ser determinada. Aprendemos que, para criar um bom modelo de árvore de classificação, necessitamos possuir um conjunto de dados existente com saída conhecida a partir da qual possamos construir nosso modelo. Também vimos que necessitamos dividir nossos conjuntos de dados em duas partes: um conjunto de treinamento, que é usado para criar o modelo e um conjunto de testes, que é usado para verificar a exatidão do modelo e se ele não está superajustado. Como um ponto final nesta seção, mostrei que, algumas vezes, mesmo quando um modelo de dados criado parece estar correto, ele não está, e é necessário descartar todo o modelo e algoritmo procurando por algo melhor.

O algoritmo do armazenamento em cluster toma um conjunto de dados e divide os dados em grupos para que seja possível fazer conclusões baseando-se nas tendências vistas nesses grupos. O armazenamento em cluster difere da classificação e da regressão por não produzir uma variável de saída única, o que leva a conclusões fáceis, mas ao invés disso, necessita que você observe a saída e tente chegar a suas próprias conclusões. Como vimos no exemplo, o modelo produziu cinco clusters, mas coube a nós interpretar os dados dentro dos clusters e chegar a conclusões a partir dessas informações. Com respeito a isso, pode ser difícil acertar seu modelo de armazenamento em cluster (penso no que aconteceria se criássemos clusters demais ou de menos), mas, de modo inverso, fomos capazes de obter algumas informações interessantes a partir dos resultados — coisas que nunca seríamos capazes de notar usando os outros modelos que discutimos até agora.

Download

os-weka2-Examples.zip: Sample code