27 Março 2018

Proposta de Aplicação de K-Means e Regras de Associação

Este artigo baseia-se na implementação de K-Means e um algoritmo de Regras de Associação onde serão abordadas tecnologias como R Studio, Tableau Desktop e Cloudera Hadoop.

O contexto deste desenvolvimento sucede-se no âmbito de um projeto real para uma multinacional, sendo constituído por tarefas tais como distribuição, atendimento ao cliente, logística e transporte, e é uma área transversal aos vários sectores da empresa.

Esta investigação pretende ser aplicada a problemas de Backorders que afetam muitas empresas, principalmente do sector do retalho, e que merece, cada vez mais, a atenção dos stakeholders. Uma encomenda é definida como backorder quando um determinado produto ou produtos dessa mesma encomenda estão fora de stock no fornecedor. O objetivo desta implementação é compreender de que modo a empresa poderá responder de forma eficaz às necessidades de cada cliente e evitar este problema.

Para obter as conclusões propostas, as ferramentas utilizadas foram o R Studio e o Tableau. De seguida, será explicado o processo de desenvolvimento, assim como as respetivas soluções propostas.

K-MEANS

O K-means é um algoritmo de clustering, que consiste na divisão de dados em x segmentos. Cada segmento possui um centróide correspondente à média e os elementos são divididos consoante estarem mais próximos de um determinado valor.

Para a aplicação deste algoritmo foi utilizado o Tableau, uma vez que esta ferramenta possui a função de clustering de K-means. Como tal, foi criada uma tabela auxiliar no Cloudera com a informação de Backorders. A utilização do Cloudera deveu-se ao contexto do projeto em questão, que facilita a conexão às próximas ferramentas utilizadas no artigo (Tableau e R Studio) e, também, pelo facto da informação do Data Lake já estar adequada às necessidades dos algoritmos a aplicar. Contudo, o Tableau permite a integração de muitas outras fontes de informação estruturada como por exemplo: ficheiros, Mysql, Oralcle, Teradata, etc.

Antes da integração com o Tableau, é necessário criar uma tabela com as colunas essenciais para a aplicação do algoritmo de K-Means. Neste caso utilizamos as seguintes colunas, que são relevantes para análise das backorders:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Após a criação da tabela foi feita a conexão da mesma com o Tableau, com a finalidade de ser aplicado o algoritmo de K-Means.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Uma vez importada a tabela na fonte de dados é possível verificar os campos e os dados existentes na mesma.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Para a aplicação do K-Means será necessário criar uma nova sheet e escolher o gráfico do tipo “Gráfico de Dispersão”. Para as “Linhas” e “Colunas” foi colocada a soma das quantidades e valores respetivamente, uma vez que foram os campos escolhidos para a divisão dos clusters. Em “Marcas” foi colocado o campo de “SK Customer Shipto“ para ser possível visualizar a divisão dos clientes por cluster.

No entanto, para criação dos clusters é sempre possível mudar os campos utilizados, assim como o ID definido, de acordo com o objetivo do estudo.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Para a criação da divisão dos clusters é possível obter essa funcionalidade na tab “Análise” e arrastar a opção “Cluster” para as “Marcas”; e posteriormente adicionar as variáveis "soma das quantidades” e “soma dos valores” ao cluster. O Tableau propõe automaticamente o número de clusters que considera ser melhor para dividir o grupo de dados, mas este valor também é possível ser alterado.

Existem diversos métodos de cálculo do número correto de clusters, sendo o gráfico de cotovelo o mais utilizado. Este método compara a soma do erro quadrático para o número ideal de clusters. O número ideal de clusters obtém-se quando o ponto a partir do qual o declive passa a ser menos acentuado. Para a nossa amostra, dada a quantidade de dados optamos por utilizar 3 clusters.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

A fim de obter uma amostra mais homogénea foram retirados os outliers, uma vez que se tratam de valores que não são representativos da amostra. O resultado final foi o apresentado abaixo, onde é possível verificar 3 clusters. O cluster 1, o maior – e que representa os clientes cujo número de backorders e montante são mais baixos, o cluster 2 constituído por quantidades e montantes médios e, por fim, o mais reduzido e mais heterogéneo cluster 3 – número e montante elevados.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

O passo seguinte passou por exportar o resultado final da divisão em clusters. Estes dados foram importados novamente no Tableau, a fim de ser possível verificar os dados e utilizá-los nos passos seguintes com o objetivo de suportar as regras de associação.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

REGRAS DE ASSOCIAÇÃO

As regras de associação demonstram informação sobre coisas que tendem a acontecer em conjunto. Através das regras de associação é possível compreender os padrões de comportamentos de cada um dos clusters gerados anteriormente pelo algoritmo K-Means.

Numa fase inicial, a fim de obter uma análise focada ao nível dos produtos, é importante para o processo de criação das regras de associação, excluir os produtos que apenas apareciam uma vez no total da amostra transacional. A exclusão desses produtos permite que os algoritmos que criam as regras de associação não distorçam os resultados, de modo a tirar conclusões de um exemplo único.

Portanto, é realizada uma contagem do número de vezes que um produto se repete em toda a amostra para que posteriormente a informação seja agregada numa nova coluna.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Neste momento já foi agregada a informação sobre as backorders que têm mais do que um produto associado, permitindo prosseguir para o próximo passo que filtra em toda a nossa amostra, por cluster, todas as backorders onde o produto apenas surgiu uma única vez.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Na definição das backorders que têm mais do que um produto associado, para cada cluster, as amostras ficaram bastante reduzidas em quantidade de registos para realizar as regras de associação. Sendo insuficiente a quantidade de registos em cada cluster para as conclusões pretendidas, torna-se essencial a mudança da abordagem inicial, passando a análise a ser realizada na amostra total. Deste modo, o número de registos é suficiente para tornar o algoritmo mais eficiente e também flexível na alteração de parametrizações.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

O passo seguinte, após a execução do programa R Studio e extração dos dados do Tableau para um ficheiro .csv, será importar toda a nossa amostra para o R Studio através do seguinte comando:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

“Cluster_all” é a variável definida, que contém todos os dados da amostra importada do ficheiro .csv.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Nesta fase com os dados importados no R Studio, pode ser realizado uma demostração dos primeiros registos no programa através do seguinte comando:

 

Seguido de uma rápida validação de conformidade sobre os dados e a estrutura importada através do ficheiro, e para facilitar a acessibilidade dos objetos no R Studio, é necessário usar a seguinte função:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

A função de attach() torna cada coluna do data frame numa variável global do programa, permite deste modo a utilização das colunas de um modo individual para a realização de operações.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Neste momento já com o ficheiro integrado, como variável global, no R Studio, inicia-se a instalação do package essencial que contém as libraries com as funções essenciais para aplicação e visualização dos algoritmos que criam as regras de associação. Para instalar os packages no R Studio basta executar o seguinte comando:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

A instalação do package “Matrix” pode levar algum tempo, mas assim que terminar, já tem ao dispor a library “arules”, que é fundamental para ter acesso a um leque de funções que esta fornece, contudo, a função que terá maior destaque será a “apriori”. Antes da parametrização e execução do algoritmo de criação das regras de associação, será realizada a chamada da library com o seguinte comando:

 

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

A função apriori(), que executa um algoritmo para a criação das regras de associação sobre a amostra, já tem o seu conjunto de parametrizações predefinidos de origem. Contudo também é possível a manipulação das variadas parametrizações disponíveis pela função, que permitem ao utilizador, consoante os seus interesses, adaptar o nível de detalhe que pretende analisar.

Neste exemplo, as parametrizações foram focadas na confiança do algoritmo sobre a análise de cada associação. Como a amostra, apesar de ser maior do que inicialmente, não é muito grande, em quantidade de registos, foi necessário adaptar as parametrizações. Também, o resultado da função sem alterações de variáveis demonstrou apenas associações com valores de confiança sobre as amostras a rondar o 1, e a intenção seria obter uma maior diversidade nos resultados.

Foram alteradas 3 variáveis, na execução da seguinte função:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

A variável supp (suporte) define qual a mínima frequência de acontecimentos em toda a amostra que serão incluídos no resultado da análise do algoritmo. Na função definida, só vão ser considerados os casos em que reflete no mínimo 1,5% de informação sobre o total da amostra.

A variável conf (confiança) demonstra a probabilidade, com base na frequência de acontecimentos, de um caso Y acontecer quando X também existir. Por norma, é preferível analisar os casos com valores de confiança perto do 1. Na função está definido para que seja demonstrado os cenários em que o mínimo de confiança seja de 0,5.

A variável minlen (tamanho mínimo) define o mínimo de itens necessários para aplicar as regras de associação. Na função, ficou definido um mínimo de 2 itens.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Em baixo está demonstrado um resumo dos resultados da execução da função apriori(), e indica que foram criadas 246 regras de associação. Não será feita a validação de todas as regras criadas pelo algoritmo, portanto pode ser feita uma ordenação da informação consoante as medidas disponibilizadas (suporte ou confiança, por exemplo). No exemplo, está a ser feita a ordenação ascendente por confiança sobre os resultados do algoritmo apriori e para tal, foi executado o seguinte comando:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Por fim, para visualização das regras de associação criadas pelo algoritmo apriori e depois ordenado por confiança, executa-se o comando:

 

Devido ao número elevado de regras (246), será efetuado um filtro de modo a que esse número seja reduzido e, com isso, diminuir a redundância das mesmas. No exemplo serão demonstradas as 30 primeiras regras, com o comando:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Quanto ao resultado das regras de associação criadas, estão em destaque as métricas análise, no topo, em forma de header do resultado:

As colunas lhs e rhs são as associações criadas e analisadas pelo algoritmo apriori(). Com um breve exemplo, é possível visualizar o valor X, coluna lhs, que está associado ao valor Y, coluna rhs.

A coluna de support demonstra a frequência de acontecimentos de associação sobre o total de registos da amostra. Um maior valor de suporte, traduz-se numa maior clareza dos resultados devido às repetições do mesmo cenário nos nossos dados. A percentagem é obtida com o valor da coluna count/total de registos. Por exemplo, na linha 1, indica que em 3% de toda a nossa amostra quando o “Cod_Customer_Shipto_Country” é igual a “FI” também pertence ao Cluster 2.

A coluna confidence demonstra a probabilidade dos acontecimentos para cada regra criada, com base na frequência de acontecimentos, de um caso Y acontecer quando X também existir. Por exemplo, ao analisar de novo a linha 1 do resultado obtido, o algoritmo demonstra com 52% de confiança, que em 3% da amostra onde o “Cod_Customer_Shipto_Country” é igual a “FI” também pertence ao Cluster 2 (o Cluster 2 está detalhado no final do processo de K-Means).

Lift mede o quão frequente lhs e rhs ocorrem juntos quando comparado se fossem estatisticamente independentes.

Quando esse valor é superior a 1, significa que lhs e rhs são correlacionados, isto é, a existência de X implica obrigatoriamente a existência de Y.

A coluna count representa os número de registos repetidos analisados pelo algoritmo.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

Conforme demonstrado, a função apriori criou cerca de 200 regras de associação, e muitas das regras criadas são redundantes, considerando por exemplo o seguinte cenário, X acontece quando Y também acontece em 20% da amostra com 70% de confiança como também nos indica o inverso, onde Y acontece em 20% da amostra para o caso X também com 70% de confiança após aplicação do modelo. Portanto o R Studio permite remover os casos redundantes através da medida de confiança. Onde indica que a regra é redundante se existir outras regras iguais que tenham a mesma, ou menor percentagem de confiança. O comando para remoção de regras redundantes é o seguinte:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

O próximo passo é a ordenação ascendente dos resultados pela medida de confiança:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

De seguida, é feita a demonstração de todas as regras criadas, no entanto já foram excluídas as regras redundantes com o seguinte comando:

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

O número de regras foi consideravelmente reduzido de cerca de 200 regras para 89.

bi4all business intelligence cloudera hadoop k-means tableau desktop r studio

 

CONCLUSÃO

Sumarizando, neste artigo foi possível verificar o processo de aplicação K-Means e Regras de Associação; e no mesmo é possível verificar um exemplo prático. Inicialmente foi trabalhada a amostra e importada no Tableau, onde foi construído um gráfico de dispersão e foi dividida a amostra em vários clusters. O resultado final obtido foram 3 clusters: o cluster 1 com valores e quantidades baixas, o cluster 2 com valores e quantidades médias e o cluster 3 com valores quantidades elevadas.

A fim de aplicar-se as regras de associação, os dados resultantes dos clusters foram extraídos para .csv e importados no R Studio. Após a aplicação de um nível de suporte de 1,5%, confiança de 50% e um número mínimo de itens de 2 foram extraídas 246 regras de associação e foram posteriormente removidas as regras redundantes, o que levou a uma redução para 89 analisadas.

É relevante salientar que tanto o K-Means como as Regras de Associação, são algoritmos com tamanha flexibilidade que permitem a alteração de contexto apenas com a troca de colunas da amostra testada. Neste artigo o foco do K-Means foi aplicar uma segmentação do cliente por quantidade e montante associado aos backorders, mas que poderia facilmente fazer um outro tipo de segmentação utilizando outros atributos lógicos no negócio. No caso das Regras de Associação, também existe esta flexibilidade, a qual permite analisar muitos outros cenários de correlação de atributos bastante diferentes dos que foram aqui apresentados.

Quanto às ferramentas utilizadas para os respetivos algoritmos, o Tableau, sendo uma ferramenta de visualização, permite uma fácil aplicação do algoritmo K-Means, como foi demonstrado, em poucos passos conseguimos definir e alterar os atributos e granularidade dos clusters. O R Studio também permite aplicar o K-Means mas não sendo tão visual, através de gráficos, não se torna tão apelativo. Contudo, o R Studio tem uma vasta panóplia de bibliotecas com funções já predefinidas, como foi utilizado para o caso das Regras de Associação, que num curto espaço de tempo de aprendizagem torna a sua utilização mais fluída e de fácil entendimento.