Ciência de Dados sem código: Um exemplo de clusterização por IA Generativa

Luiza B. Laquini
13 min readMay 31, 2024

--

Como utilizei o Gemini 1.5 Pro para clusterizar e sugerir técnicas de retenção de funcionários para uma empresa de tecnologia que enfrenta o problema de alta rotatividade de funcionários.

Gerado com IA

Uma consideração importante antes de dar início!

É importante destacar que o objetivo deste artigo é compartilhar os resultados de uma experimentação, e não exaltar ou incentivar o uso exclusivo desses métodos na Ciência de Dados. Acredito que essa abordagem deve ser vista como complementar, especialmente para aqueles que já possuem uma base sólida nas ferramentas de programação tradicionais. Cientes disso, vamos lá!

Introdução e escopo

As Inteligências Artificiais Generativas estão se tornando cada vez mais poderosas e versáteis, transformando diversos setores, inclusive o campo da Ciência de Dados. Neste artigo, mostro como utilizei dessa tecnologia para realizar a separação de funcionários em grupos (clusterização) no cenário de uma empresa de tecnologia que enfrenta alta rotatividade. A empresa optou por se manter anônima.

Para isso, escolhi o modelo Gemini do Google versão 1.5 Pro (amostra gratuita) e empreguei a framework CO-STAR, uma técnica de Engenharia de Prompt para potencializar os resultados da IA Generativa. A análise resultante não só fornece uma visão clara dos grupos distintos de funcionários dentro da empresa, mas também oferece recomendações práticas e personalizadas para melhorar a retenção de cada grupo.

A dor da alta rotatividade

Segundo um estudo conduzido pela Robert Half (2022)¹ — empresa global de recrutamento e consultoria de recursos humanos — utilizando dados do Cadastro Geral de Empregados e Desempregados (CAGED), o Brasil apresenta o mais elevado índice de rotatividade de funcionários a nível global. Essa situação é ainda mais crítica no setor de tecnologia da informação, onde a alta demanda por profissionais qualificados e a rápida evolução tecnológica agravam a dificuldade de retenção de talentos.

Esse problema traz para a empresa em estudo: altos gastos com processos de contratação e desligamento, desafios de continuidade dos projetos e dificuldades na formação de novos talentos dentro das necessidades da empresa.

Fundamentação e Tecnologias Utilizadas

IA Generativa: uma breve introdução

Imagino que grande parte dos leitores esteja ciente do que se trata uma IA Generativa, mas, para aqueles que ainda não tiveram essa curiosidade, eis uma breve introdução:

A Inteligência Artificial Generativa (IA Generativa) refere-se a sistemas de IA capazes de criar conteúdo original, como texto, imagens, música e muito mais, a partir de grandes volumes de dados. Uma das tecnologias mais avançadas nessa área são os Modelos de Linguagem de Grande Escala, conhecidos como LLMs (Large Language Models). LLMs são algoritmos treinados em vastas quantidades de texto, permitindo-lhes entender, gerar e responder a linguagem natural de maneira sofisticada e contextual.

CO-STAR Framework

A utilização dessa abordagem ao solicitar uma tarefa tão completa e complexa como a clusterização e recomendação de políticas de retenção de funcionários em dados de RH é de extrema importância. Isso é possível porque, por meio dela, estruturamos um prompt detalhado, que abrange desde o contexto até o formato de saída da resposta e garante, assim, que as expectativas sejam claramente definidas e o resultado obtido seja o mais preciso e relevante possível.

A imagem a seguir ilustra todos os componentes da estrutura e, em seguida, detalho melhor cada um deles.

(C) Context (Contexto): Forneça informações de fundo sobre a tarefa. Isso ajuda a entender o cenário específico em discussão, garantindo que sua resposta seja relevante.
(O) Objective (Objetivo): Defina qual é a tarefa que você deseja que seja executada sendo claro e objetivo.
(S) Style (Estilo): Especifique o estilo de escrita que você deseja. Isso orienta o modelo a responder com a maneira e escolha de palavras alinhadas às suas necessidades.
(T) Tone (Tom): Defina o tom da resposta. Isso garante que ela ressoe com o sentimento ou contexto emocional pretendido.
(A) Audience (Audiência/Público): Identifique para quem a resposta é destinada. É necessário ajustar a resposta a um público, como especialistas em um campo, iniciantes, crianças, etc. Isso garante que ela seja apropriada e compreensível no contexto necessário.
(R) Response (Resposta): Forneça o formato de saída da resposta. Exemplos incluem uma lista, um JSON, um relatório profissional, e assim por diante, para que a resposta seja dada no formato que você necessita para manipulações subsequentes.

A base de dados²

Os dados são reais e foram omitidas informações sensíveis. A empresa preferiu não divulgar o seu nome, mas é brasileira e é do setor de tecnologia da informação. A tabela abaixo traz uma descrição completa dos dados que foram disponibilizados no formato planilha do Excel (.xlsx):

Detalhamento dos dados

Sobre as colunas “Data_Contratacao” e “Data_Desligamento”: as datas em si não são informações relevantes para a clusterização. Se torna relevante utilizar essas duas colunas apenas para obter o tempo de serviço dos funcionários. Entretanto, já temos a coluna “Meses_de_Servico”, que traz essa informação em meses. Sendo assim, optei por excluir as duas colunas de data — informações irrelevantes podem mais atrapalhar do que ajudar o modelo!

Além disso, também verifiquei a integridade dos dados: após retiradas as duas colunas mencionadas, a tabela não exibiu nenhum valor nulo ou outlier. Assim, foi possível seguir para o prompt.

Resultados

A seguir você encontra a melhor versão que eu pude elaborar do prompt para o objetivo em questão. As tentativas frustradas também serão comentadas mais adiante.

System Instructions:

Atue como um Cientista de Dados nessa tarefa. Jamais invente informação que não esteja presente no conjunto de dados. Não forneça trechos de código, devolva apenas a resposta definitiva da sua análise. Justifique suas decisões.

Prompt:

**CONTEXTO**
Uma empresa de tecnologia enfrenta problemas com a alta rotatividade de funcionários. Tenho um conjunto de dados com as seguintes informações sobre os funcionários: [“Meses_de_Servico”, “Idade”, “Pontuacao_Desempenho”, ​”​Satisfacao_Trabalho”, “Nivel_Cargo”, “Salario”, “Horas_Extras”, “Desligamento”].

**OBJETIVO**
Utilize o conjunto de dados para clusterizar os funcionários com características similares. Separe-os em quantos grupos achar mais relevante para melhor caracterizá-los, mas adote um mínimo de 4 grupos. Depois, forneça ideias de retenção para cada grupo identificado. Use o passo a passo a seguir:

Para cada cluster/grupo definido por você, armazene:
1. VISAO_GERAL_GRUPO: Descreva o cluster em termos de estatísticas das colunas do conjunto de dados uma a uma. Não deixe de abordar nenhuma.
2. NOME_GRUPO: Interprete [VISAO_GERAL_GRUPO] para obter um nome abreviado para o grupo de clientes neste cluster/grupo.
3. RETENCAO: Gere ideias para reter esse grupo de colaboradores.
4. JUSTIFICATIVA: Explique por que [RETENCAO] é relevante e eficaz para este grupo de clientes.
5. EXEMPLOS: tabela com 5 exemplos/linhas de funcionários da base de dados que pertencem a esse grupo. Utilize o mesmo cabeçalho da base, adicionando a linha (índice) ao início, para validação posterior.

**ESTILO**
Relatório de análise de negócios.

**TOM**
Profissional e técnico.

**AUDIÊNCIA**
Sócios da empresa. Convença-os de que sua estratégia de retenção é bem pensada e totalmente respaldada por dados.

**RESPOSTA**
Para cada cluster/grupo definido por você, siga o formato de saída:
- Grupo de Funcionários: [NOME_GRUPO]
- Perfil: [VISAO_GERAL_GRUPO]
- Ideias de Retenção: [RETENCAO]
- Justificativa: [JUSTIFICATIVA]
- Exemplos:
[EXEMPLOS]

**INICIAR ANÁLISE**
Se você entendeu a tarefa e as instruções, sinalize para que eu possa te enviar o conjunto de dados. Caso contrário, aproveite para indagar suas dúvidas.

Observações:

Enviar o dataset juntamente com o prompt exige que o modelo interprete muita informação de uma só vez — visto que essas bases de dados não costumam ser pequenas. Assim, corre o risco do modelo “esquecer” alguma instrução durante a execução.

Para evitar esse problema, basta acrescentar ao final do prompt a informação de que enviará os dados separadamente a seguir. Dessa forma, a IA consegue primeiramente “digerir” todas as tarefas passadas e, somente após concluir o entendimento, receber e atuar em cima dos dados. O uso de “System Instructions” também é essencial para reforçar comportamentos que o modelo deve lembrar ao longo de todo o chat, não importa o quão grande ele se torne.

Resposta:

Análise de Rotatividade de Funcionários e Proposta de Retenção por Cluster

Após analisar o conjunto de dados fornecido, utilizei um algoritmo de clusterização (k-means) para segmentar os funcionários em 4 grupos distintos com base em suas características. O objetivo é entender melhor os fatores que contribuem para a rotatividade e propor estratégias de retenção personalizadas para cada grupo.

Grupo de Funcionários: Engajados em Ascensão

Perfil:
- Meses_de_Servico: Média de 10 meses.
- Idade: Média de 28 anos.
- Pontuacao_Desempenho: Alta, média de 3.5.
- Satisfacao_Trabalho: Alta, média de 3.8.
- Nivel_Cargo: Predominantemente Junior.
- Salario: Médio, em torno de R$ 4.500,00.
- Horas_Extras: Média de 9 horas.
- Desligamento: Baixa taxa de desligamento.

Ideias de Retenção:
-
Oferecer programas de desenvolvimento profissional e mentoria.
- Criar planos de carreira estruturados com oportunidades de promoção claras.
- Reconhecer e recompensar o bom desempenho com bônus ou aumentos salariais.

Justificativa: Este grupo demonstra alto potencial e engajamento, com boas pontuações de desempenho e satisfação. No entanto, por serem em sua maioria Juniores com tempo de serviço relativamente curto, é crucial nutrir seu crescimento e ambição para que se sintam valorizados e desafiados, reduzindo a probabilidade de buscarem novas oportunidades.

Exemplos:
Linha,Meses_de_Servico,Idade,Pontuacao_Desempenho,Satisfacao_Trabalho,Nivel_Cargo, Salario,Horas_Extras,Desligamento
9,9,30,”1,086754896",”1,908626368",Pleno,” R$ 6.058,88 “,”13,6267",1
23,8,24,”1,846135591",”3,77891242",Junior,” R$ 4.062,81 “,”2,4890",0
19,11,24,”1,21003267",”2,576643495",Junior,” R$ 2.795,39 “,”3,7335",0
46,7,24,”4,427020988",”4,170873456",Pleno,” R$ 6.455,71 “,”7,4670",0
48,4,30,”2,525588614",”3,12930249",Pleno,” R$ 6.884,87 “,”3,7335",0

Grupo de Funcionários: Seniores Insatisfeitos

Perfil:
-
Meses_de_Servico: Longa permanência na empresa, média de 27 meses.
- Idade: Média de 35 anos.
- Pontuacao_Desempenho: Alta, em torno de 3.
- Satisfacao_Trabalho: Baixa, média de 1.8.
- Nivel_Cargo: Predominantemente Sênior.
- Salario: Alto, média de R$ 9.000,00.
- Horas_Extras: Média de 14 horas.
- Desligamento: Alta taxa de desligamento.

Ideias de Retenção:
-
Conduzir pesquisas de clima e entrevistas individuais para entender as causas da insatisfação.
- Oferecer programas de reconhecimento e recompensas por tempo de serviço e expertise.
- Implementar políticas de flexibilidade de trabalho e programas de bem-estar para reduzir o estresse e burnout.

Justificativa: Este grupo representa um alto risco de rotatividade devido à baixa satisfação, apesar da alta remuneração e senioridade. É fundamental investigar e solucionar as causas dessa insatisfação, que podem estar relacionadas a falta de desafios, perspectivas de crescimento limitadas, ou excesso de trabalho.

Exemplos:
Linha,Meses_de_Servico,Idade,Pontuacao_Desempenho,Satisfacao_Trabalho,Nivel_Cargo, Salario,Horas_Extras,Desligamento
3,6,43,”3,256257441",”1,711718731",Sênior,” R$ 8.798,34 “,”19,0366",1
7,24,43,”4,328230981",”3,209761398",Sênior,” R$ 10.466,00 “,”13,9336",1
14,26,28,”2,733114932",”1,820045654",Pleno,” R$ 7.252,12 “,”6,2310",1
40,31,38,”3,158601824",”3,572795105",Sênior,” R$ 10.602,25 “,”19,9560",1
44,20,49,”4,235481133",”1,61433005",Sênior,” R$ 11.917,59 “,”22,4890",1

Grupo de Funcionários: Estáveis em Zona de Conforto

Perfil:
-
Meses_de_Servico: Longa permanência na empresa, média de 28 meses.
- Idade: Média de 33 anos.
- Pontuacao_Desempenho: Média, em torno de 2.5.
- Satisfacao_Trabalho: Média, em torno de 3.
- Nivel_Cargo: Distribuição equilibrada entre Pleno e Sênior.
- Salario: Médio, em torno de R$ 7.000,00.
- Horas_Extras: Baixa, média de 6 horas.
- Desligamento: Baixa taxa de desligamento.

Ideias de Retenção:
-
Oferecer oportunidades de treinamento e desenvolvimento para aprimorar suas habilidades.
- Implementar programas de job rotation para apresentar novos desafios e evitar a estagnação.
- Criar um sistema de feedback regular para identificar e solucionar eventuais insatisfações.

Justificativa: Este grupo apresenta estabilidade, mas com indicadores de desempenho e satisfação apenas medianos, sugerindo acomodação. É importante oferecer estímulos para que se desenvolvam e se engajem mais, evitando a perda de talentos por falta de desafios e oportunidades.

Exemplos:
Linha,Meses_de_Servico,Idade,Pontuacao_Desempenho,Satisfacao_Trabalho,Nivel_Cargo, Salario,Horas_Extras,Desligamento
10,27,44,”1,549005402",”2,067783207",Sênior,” R$ 7.780,41 “,”2,0780",0
11,27,44,”2,042514668",”4,588229927",Sênior,” R$ 11.756,99 “,”15,1488",0
8,26,23,”4,061082335",”1,911482855",Pleno,” R$ 5.476,96 “,”12,7063",0
12,15,27,”4,48433029",”3,25850884",Pleno,” R$ 5.716,67 “,”9,8191",0
14,26,28,”2,733114932",”1,820045654",Pleno,” R$ 7.252,12 “,”6,2310",1

Grupo de Funcionários: Desmotivados de Alto Risco

Perfil:
-
Meses_de_Servico: Tempo de serviço variado.
- Idade: Média de 27 anos.
- Pontuacao_Desempenho: Baixa, média de 1.5.
- Satisfacao_Trabalho: Baixa, média de 1.5.
- Nivel_Cargo: Predominantemente Junior e Pleno.
- Salario: Baixo, média de R$ 4.000,00.
- Horas_Extras: Altas, com média de 15 horas.
- Desligamento: Altíssima taxa de desligamento.

Ideias de Retenção:
-
Oferecer feedback construtivo e acompanhamento individualizado para melhorar o desempenho.
- Investigar as causas da baixa satisfação e implementar medidas para melhorar o ambiente de trabalho.
- Avaliar a carga de trabalho e redistribuir tarefas para evitar a sobrecarga e o burnout.
- Oferecer programas de treinamento e desenvolvimento para aumentar a motivação e o engajamento.

Justificativa: Este grupo é o que apresenta maior risco de rotatividade, com baixos indicadores de desempenho e satisfação, além de alta carga horária. Ações imediatas são necessárias para entender e solucionar os problemas que levam à desmotivação e ao desligamento.

Exemplos:
Linha,Meses_de_Servico,Idade,Pontuacao_Desempenho,Satisfacao_Trabalho,Nivel_Cargo, Salario,Horas_Extras,Desligamento
2,3,24,”2,06678751",”2,043644213",Pleno,” R$ 4.994,41 “,”15,4652",0
25,3,43,”4,756250639",”2,832582866",Sênior,” R$ 11.346,51 “,”13,7335",1
31,17,31,”1,386251514",”1,508348399",Pleno,” R$ 7.955,66 “,”6,2225",1
33,4,19,”4,586325021",”1,970125018",Junior,” R$ 4.654,11 “,”1,2445",0
36,34,20,”2,919015481",”3,596126374",Junior,” R$ 4.340,52 “,”9,9560",1

Limitações observadas

Apesar do uso da IA Generativa para Ciência de Dados ter apresentado uma simplificação significativa do processo de análise e redução expressiva do tempo de desenvolvimento, algumas limitações foram observadas no decorrer da experimentação.

Como mencionado, eu optei por fazer o pré-tratamento dos dados “na mão”. O ponto é: mesmo que você escolha solicitar também essa etapa ao modelo de IA, ainda se faz necessário visualizar previamente os dados e verificar, por si mesmo, a existência de nulos, de outliers, dentre outras inconsistências além de especificar, de forma muito clara, a abordagem a ser utilizada no determinado caso em específico. Isso porque o modelo, pelo menos até o presente momento, não é capaz de tomar boas decisões de tratamento sozinho e isso pode impactar negativamente na análise.

No caso da presença de nulos, por exemplo, existem várias abordagens diferentes de tratamento (substituição por zero, exclusão da linha, bfill, etc). Assim, urge a necessidade de verificar qual delas é mais apropriada para o contexto atual e, até então, não é garantido que as IAs Generativas vão escolher corretamente (ou se sequer vão escolher alguma) a menos que você explicite claramente em seu prompt — que acabaria se tornando muito maior para cobrir tantas possibilidades (no cenário onde você não visualizou de antemão quais estão presentes em seus dados).

Adicionalmente, não foi possível fazer com que o modelo devolvesse todos os índices dos funcionários pertencentes a cada grupo para uma validação completa. Tentei solicitar por meio de diferentes abordagens, como em um arquivo, ou no próprio texto da resposta. Todavia, em ambas as situações ele mencionou que essa parte da resposta é muito grande para ser incluída — certamente uma limitação da amostra gratuita do software. A forma que encontrei de “burlar” esse obstáculo foi pedir ao menos uma amostra de 5 funcionários de cada grupo para realizar a comprovação.

Outra limitação é a capacidade de personalização das análises. IAs Generativas, embora poderosas, podem ser menos flexíveis que abordagens customizadas com programação.

Por fim, por mais que ela facilite a parte técnica do trabalho, ainda se faz necessário um entendimento sólido dos conceitos de ciência de dados, estatísticas e algoritmos de aprendizado de máquina para ser usada corretamente e para assegurar a sua confiabilidade.

Conclusão

Resumo dos Principais Achados

O estudo identificou quatro grupos distintos de funcionários com base em suas características e comportamentos e os nomeou da seguinte maneira:

  • Engajados em Ascensão
  • Seniores Insatisfeitos
  • Estáveis em Zona de Conforto
  • Desmotivados de Alto Risco

A rotatividade, como os próprios nomes sugerem, é alarmante para os grupos “Desmotivados de Alto Risco” e “Seniores Insatisfeitos”. Já para os grupos “Engajados em Ascensão” e “Estáveis em Zona de Conforto”, a preocupação é significativamente menor, mas nem por isso o modelo deixou de abordar políticas para permanência.

Cada um possui necessidades específicas de retenção. As estratégias, por via de regra, abrangem programas de mentoria, melhorias nas condições de trabalho, reconhecimento e premiação, oportunidades de crescimento, e equilíbrio entre vida pessoal e profissional. Cada recomendação foi cuidadosamente justificada com base nas particularidades de cada grupo, oferecendo uma abordagem personalizada para melhorar a retenção.

Além disso, os exemplos fornecidos foram utilizados para validar a base de dados. Para cada exemplo, verifiquei sua presença na tabela, garantindo que o modelo não tenha inventado informações.

Aplicabilidade dos Resultados

É importante considerar que a aplicabilidade dos resultados pode variar de acordo com o contexto específico da empresa. A eficácia das estratégias sugeridas deve ser monitorada e ajustada conforme necessário, considerando as mudanças no ambiente de trabalho e as necessidades dos funcionários. Além disso, a implementação bem-sucedida das recomendações requer o comprometimento da liderança da empresa e a alocação de recursos adequados para programas de desenvolvimento e retenção.

A integração de feedback dos funcionários e a adaptação das estratégias com base em novas tendências e desafios do mercado de trabalho também são essenciais para manter a relevância, a aplicabilidade e a eficácia das iniciativas de retenção sugeridas pela IA Generativa.

Sugestões para Projetos Futuros

É interessante realizar uma clusterização via código para comparar os resultados obtidos pelo método tradicional com os da IA Generativa. O próprio Gemini mencionou ter utilizado o algoritmo k-means para definir 4 clusters (grupos) de funcionários. Seriam 4 clusters a escolha mais apropriada de fato para essa base de dados? Estudar os efeitos da variação do número de grupos, utilizar diferentes algoritmos — como também o DBSCAN, o hierarchical clustering, entre outros — e comparar os perfis obtidos é essencial para validar a IA Generativa como uma ferramenta eficaz de clusterização. Eu mesma pretendo fazer esse estudo e talvez vire assunto para um próximo artigo :) Edit: Estudo feito. Resultados aqui!

Além disso, pesquisas ou experimentações futuras podem explorar a aplicação de IA Generativa em dados de outros setores, que podem exigir diferentes tipos de análises e algoritmos. Sheila Teo (2023)³ destaca que existem tipos específicos de análise que os modelos não são bons em processar, como também existem os que eles performam muito bem. E adivinhe só? Clustering é um deles:

Tipos de análise de conjunto de dados em que os LLMs *não* são bons

Como você provavelmente já sabe, os LLMs são limitados em sua capacidade de realizar cálculos matemáticos, tornando-os inadequados para tarefas que exigem análise quantitativa em conjuntos de dados, como:

Estatística Descritiva: Resumindo colunas numéricas quantitativamente, através de medidas como média ou variância.

Análise de Correlação: Obtenção do coeficiente de correlação preciso entre colunas.

Análise Estatística: Como teste de hipótese para determinar se há diferenças estatisticamente significativas entre grupos de pontos de dados.

Aprendizado de máquina: Execução de modelagem preditiva em um conjunto de dados, como o uso de regressões lineares, de árvores com gradiente aumentado ou de redes neurais.

A execução de tais tarefas quantitativas em conjuntos de dados é a razão pela qual o Advanced Data Analysis Plugin da OpenAI existe, para que as linguagens de programação intervenham para executar o código dessas tarefas em um conjunto de dados.

Tipos de análise de conjunto de dados em que os LLMs são ótimos

LLMs são excelentes na identificação de padrões e tendências. Essa capacidade decorre de seu extenso treinamento em dados diversos e volumosos, permitindo-lhes discernir padrões intrincados que podem não ser imediatamente aparentes. Isso os torna adequados para tarefas baseadas na descoberta de padrões em conjuntos de dados, como:

Detecção de anomalias: Identificação de pontos de dados incomuns que se desviam da norma, com base em um ou mais valores de coluna.

Clustering: Agrupamento de pontos de dados com características semelhantes em colunas.

Relacionamentos entre colunas: Identificação de tendências combinadas entre colunas.

Análise Textual (para colunas baseadas em texto): Categorização baseada em tópico ou sentimento.

Análise de tendências (para conjuntos de dados com aspectos temporais): Identificação de padrões, sazonalidade, variações ou tendências nas colunas ao longo do tempo.

Para tais tarefas baseadas em padrões, usar apenas LLMs pode de fato produzir melhores resultados em um prazo menor do que usando código!

Na minha opinião como Cientista de Dados, os resultados aqui obtidos na clusterização com dados de RH foram, de fato, consistentes e satisfatórios. Agora, resta comprovar os outros casos por meio, também, da experimentação.

Referências

¹Turnover em alta: principais motivos e como evitar. Disponível em: <https://www.roberthalf.com/br/pt/insights/carreira/turnover-em-alta-principais-motivos-e-como-evitar>. Acesso em: 31 maio. 2024.

²Os dados foram solicitados e divulgados pela Edtech Data Viking por meio da iniciativa de realizar um hackaton de dados com um case real.

³TEO, S. How I Won Singapore’s GPT-4 Prompt Engineering Competition. Disponível em: <https://towardsdatascience.com/how-i-won-singapores-gpt-4-prompt-engineering-competition-34c195a93d41>.

--

--