Os parâmetros utilizados para implementação da análise do algoritmo são: hardware utilizado para execução da mesma e dimensionalidade dos dados de entrada, isto é, o tamanho da instância (registros do dataset) e número de características do conjunto de dados (colunas).
A carga de trabalho para a análise foi gerada através de buscas no Kaggle, utilizando palavras-chave como "churn", "customer" e "e-commerce". Em uma análise primária, foram utilizados três conjuntos de dados, descritos a seguir:
Fornece detalhes sobre um consumidor, isto é, idade, gênero, valor gasto, tempo de retenção e salário anual estimado. O dataset original pode ser acessado pelo endereço https://www.kaggle.com/shubh0799/churn-modelling.
Score de crédito | Idade | Gênero | Tempo de posse | Salário anual estimado |
---|---|---|---|---|
619 | 42 | 0 | 2 | 101348.88 |
608 | 41 | 0 | 1 | 112542.58 |
502 | 42 | 0 | 8 | 113931.57 |
699 | 39 | 0 | 1 | 93826.63 |
850 | 43 | 0 | 2 | 79084.10 |
Tamanho da instância: 10.000 linhas
O conjunto de dados inclui informações sobre:
- Clientes que saíram no último mês - a coluna é chamada de rotatividade;
- Serviços que cada cliente assinou - telefone, várias linhas, internet, segurança online, backup online, proteção de dispositivo, suporte técnico e streaming de TV e filmes;
- Informações da conta do cliente - há quanto tempo ele é cliente, contrato, forma de pagamento, faturamento sem papel, cobranças mensais e cobranças totais;
- Informações demográficas sobre clientes - sexo, faixa etária e se eles têm parceiros e dependentes.
O conjunto de dados pode ser acessado pelo endereço https://www.kaggle.com/blastchar/telco-customer-churn.
Gênero | Idoso? | Dependentes | Tempo de posse |
---|---|---|---|
M | 0 | 0 | 1 |
F | 0 | 0 | 34 |
F | 0 | 0 | 2 |
F | 0 | 0 | 45 |
M | 0 | 0 | 2 |
Tamanho da instância: 7.043 linhas
Este dataset armazena informações referentes a clientes de uma empresa que fornece crédito, através de cartões de crédito. O dataset original possuía 23 colunas, porém, para os propósitos desta análise, serão utilizadas 5: Idade do cliente, gênero, número de dependentes que o cliente possui, limite do seu cartão de crédito e quantidade de vezes que o cliente entrou em contato com a empresa nos últimos 12 meses. O dataset original pode ser acessado através do endereço https://www.kaggle.com/sakshigoyal7/credit-card-customers.
Idade | Gênero | Núm. de dependentes | Limite de crédito | Número de contatos (últimos 12 meses) |
---|---|---|---|---|
45 | M | 3 | 12691.0 | 3 |
49 | F | 5 | 8256.0 | 2 |
51 | M | 3 | 3418.0 | 0 |
40 | F | 4 | 3313.0 | 1 |
40 | M | 3 | 4716.0 | 0 |
Tamanho da instância: 10.127 linhas
Para diversificar as entradas do algoritmo proposto, um quarto dataset foi utilizado, de tamanho consideravelmente menor em comparação aos três anteriores, que armazena informações referentes a pacientes que utilizam catéter, tais como: altura do paciente (em polegadas), peso do paciente (em libras) e comprimento do catéter (em centímetros).
Altura | Peso | Comprimento do catéter |
---|---|---|
42.8 | 40.0 | 37 |
63.5 | 93.5 | 50 |
37.5 | 35.5 | 34 |
39.5 | 30.0 | 36 |
45.5 | 52.0 | 43 |
38.5 | 17.0 | 28 |
43.0 | 38.5 | 37 |
22.5 | 8.5 | 20 |
37.0 | 33.0 | 34 |
23.5 | 9.5 | 30 |
33.0 | 21.0 | 38 |
Tamanho da instância: 11 linhas
Para os propósitos do presente trabalho, as métricas utilizadas são: tempo de execução e número de funções chamadas para execução do algoritmo. Os testes foram executados utilizando o módulo cProfile, próprio da linguagem Python. Os testes também foram executados em máquinas com variadas configurações de hardware, sendo listadas a seguir:
Máquina 1
- Processador Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz;
- 4GB de memória RAM;
- 2 núcleos por soquete;
- 2 threads por núcleo;
Os resultados da análise serão descritos e apresentados considerando cada máquina individualmente. O algoritmo será executado um total de quatro vezes em cada máquina, sendo uma para cada dataset.
dataset 1:
- Tempo de execução: 18.821 segundos;
- 22.402.782 chamadas de funções, sendo 20.802.782 delas chamadas primitivas;
dataset 2:
- Tempo de execução: 13.642 segundos;
- 15.779.102 chamadas de funções, sendo 14.652.222 delas chamadas primitivas;
dataset 3:
- Tempo de execução: 18.436 segundos;
- 22.687.262 chamadas de funções, sendo 21.066.942 delas chamadas primitivas;
dataset 4:
- Tempo de execução: 0.037 segundos;
- 27.422 chamadas de funções, sendo 25.662 delas chamadas primitivas;
- Parâmetros fundamentais do algoritmo, como número de iterações e quantidade de clusters foram definidos de maneira arbitrária e os mesmos para os quatro datasets, o que influencia o resultado final do processo de clusterização e não deve ser aplicado na prática. Para as próximas iterações do trabalho, iremos buscar métodos de identificar o número ótimo de clusters e de iterações para cada conjunto de dados de modo a maximizar a eficiência e preservar e garantir a confiabilidade dos resultados.
- O algoritmo não possui, até o presente momento, uma condição de parada, atingida quando os centroids dos clusters não são mais alterados em uma etapa de treinamento. Tal adição certamente reduziria o consumo computacional ao interromper iterações desnecessárias.