Contratar um novo funcionário custa, em média, US$ 4.700, mas esse valor pode ultrapassar os US$ 12.000 quando consideramos salários, bônus, tributos, treinamentos e perda de produtividade durante o onboarding. Esse custo se multiplica exponencialmente em casos de alta rotatividade.
Por isso, entender quem são os colaboradores com maior risco de saída não é só uma boa prática de RH — é decisão estratégica.
Utilizei a base IBM HR Analytics Attrition Dataset para investigar padrões de evasão de talentos. A seguir, compartilho os principais achados da análise exploratória dos dados e o que podemos aprender com eles.
1. Idade e rotatividade
A maior incidência de saídas ocorre entre colaboradores de 27 a 35 anos. Esse grupo costuma buscar crescimento acelerado e maior reconhecimento.
💡 Estratégia: focar em plano de carreira e promoções bem estruturadas para esse perfil pode reduzir a rotatividade.
2. Distância de casa ao trabalho
Colaboradores que moram mais longe apresentaram maior propensão à saída.
💡 Estratégia: investir em modalidades híbridas ou remotas pode ajudar na retenção.
3. Cargos com maior atrito
Os cargos de Gross sales Govt e Laboratory Technician apresentaram níveis elevados de rotatividade, o que pode refletir pressões por metas ou falta de perspectiva de evolução.
💡 Estratégia: revisar metas e feedbacks estruturais, além de benefícios específicos por cargo.
4. Involvimento no trabalho e nível hierárquico
Funcionários com baixo envolvimento e em níveis hierárquicos iniciais são os que mais deixam a empresa.
💡 Estratégia: investir em engajamento desde o onboarding e mapear expectativas desde o início do ciclo do colaborador.
5. Anos de experiência e tempo de casa
Pessoas com menos de 10 anos de experiência e menos de 3 anos de casa são maioria entre os que pedem demissão.
💡 Estratégia: fortalecer ações de retenção no primeiro triênio, que é o mais crítico.
Para garantir que o modelo de previsão fosse treinado com dados consistentes e representativos, segui os seguintes passos:
- Codificação: Variáveis categóricas transformadas com One-Sizzling Encoding.
- Normalização: Escala dos dados ajustada com MinMaxScaler.
- Divisão de dados: Separação em treino (70%) e teste (30%) com estratificação da variável
Attrition
. - Balanceamento: Aplicado SMOTE no conjunto de treino para lidar com o desbalanceamento (classe de saída = 16%).
✅ Para verificar essa parte, basta conferir o código completo aqui: GitHub
Para iniciar a modelagem, utilizei a Regressão Logística, um algoritmo clássico, rápido e fácil de interpretar, best para entender quais variáveis influenciam mais na saída dos colaboradores.
🔹 Treinamento do modelo
logistica = LogisticRegression(random_state=1, max_iter=500, penalty="l2",
tol=0.0001, C=1, solver="lbfgs", class_weight='balanced')
logistica.match(X_train, y_train)
🔹 Avaliação no conjunto de teste
previsoes_logistica = logistica.predict(X_test)
print("Acurácia: %.2f%%" % (accuracy_score(y_test, previsoes_logistica) * 100.0))
print(classification_report(y_test, previsoes_logistica))
📌 Resultado no teste:
- Acurácia: 78,46%
- F1-score classe “1” (quem saiu): 0.49
- O modelo consegue identificar parcialmente os colaboradores que saem, mesmo com desbalanceamento.
🔹 Avaliação no treino
previsoes_treino = logistica.predict(X_train)
print(classification_report(y_train, previsoes_treino))
📌 Resultado no treino:
- Acurácia: 83%
- F1-score de ambas as lessons equilibrado (~0.83), o que mostra bom aprendizado e generalização.
🔹 Validação cruzada com 30 folds
kfold = KFold(n_splits=30, shuffle=True, random_state=5)
modelo = LogisticRegression(random_state=1, max_iter=600, penalty="l2",
tol=0.0001, C=1, solver="lbfgs")
resultado = cross_val_score(modelo, X, y, cv=kfold)
print("Acurácia Média: %.2f%%" % (resultado.imply() * 100.0))
📌 Acurácia média em 30 validações cruzadas: 88,5%
A regressão logística teve bom desempenho, especialmente na previsão de quem permanece.
Apesar de algumas limitações na previsão de saídas (classe minoritária), a validação cruzada (88,5%) mostrou que o modelo é estável e confiável, sem sinais de overfitting (F1 = 0.83 em treino).
Após a Regressão Logística, utilizei o XGBoost, um dos algoritmos mais potentes para problemas de classificação binária, especialmente eficaz em bases com desbalanceamento.
⚙️ Sobre o pré-processamento:
Antes do treinamento, foi aplicado o SMOTE apenas nos dados de treino — conforme a boa prática de modelagem preditiva. Isso significa que o modelo aprendeu com uma base balanceada, mas foi testado em dados com a distribuição unique (classe 1 ≈ 16%).
🔍 Por isso, é esperado que o desempenho na classe minoritária (quem saiu) seja melhor no treino do que no teste.
Acurácia: 85,49%
Classe 0 (permaneceu):
- Precision: 0.88
- Recall: 0.96
- F1-score: 0.92
Classe 1 (saiu):
- Precision: 0.60
- Recall: 0.30
- F1-score: 0.40
- 🎯 O modelo teve excelente efficiency para prever quem permanece, mas ainda apresenta baixa sensibilidade (recall) para identificar quem sai.
accuracy 0.95
macro avg 0.95 0.95 0.95
weighted avg 0.95 0.95 0.95
Acurácia: 95,13%
F1-score para ambas as lessons: 0.95
🧠 Indício leve de overfitting, comum quando se aplica SMOTE e o modelo é altamente ajustado aos dados sintéticos do treino.
- Acurácia média: 87,35%
- ✅ A validação cruzada confirma que o modelo é estável e tem boa capacidade de generalização, mesmo com pequenas variações entre os folds.
O XGBoost apresentou melhor acurácia geral que a regressão logística, com destaque para a alta capacidade de prever retenção (classe 0).
Contudo, ainda precisa de ajustes para melhorar a detecção de evasão (classe 1), que é justamente o foco quando falamos de atrito/churn.
🛠️ Pode ser uma base muito promissora, se combinada com:
- Ajuste fino de hiperparâmetros (
GridSearchCV
) - Estratégias de calibração de threshold
- Testes com focal loss ou ponderação de classe
- Exploração de importância das variáveis
📈 Aumentam o risco de saída:
- YearsSinceLastPromotion: mais tempo sem promoção = maior probability de sair
- OverTime: horas extras constantes elevam o risco de saida
- NumCompaniesWorked: histórico instável pode indicar rotatividade
- DistanceFromHome: longos deslocamentos desmotivam
📉 Reduzem o risco de saída:
- TotalWorkingYears e YearsInCurrentRole: mais experiência = mais estabilidade
- JobInvolvement e EnvironmentSatisfaction: engajamento e ambiente favorável retêm talentos
- YearsWithCurrManager: relação forte com o gestor protege contra evasão
- RH Estratégico: foco em promoções e planos de carreira
- Gestão de Liderança: investir em vínculo gestor–liderado
- Cultura organizacional: cuidar da carga de trabalho e clima interno
- Política de trabalho: adotar formatos mais flexíveis para quem mora longe