Neste projeto de Análise de Recursos Humanos, temos como objetivo responder questões-chave sobre gestão de talentos e rotatividade de colaboradores em uma empresa fictícia. Após configurar a infraestrutura,
modelamos atributos relevantes a partir de fontes variadas: arquivos xlsx
, json
e um banco de dados MySQL
. Em seguida, realizamos uma análise dos dados para identificar fatores de desligamento.
No decorrer do projeto, desenvolvemos habilidades em Data Science
e Engenharia de Dados
. Como resultado final, criamos um aplicativo interativo no Streamlit
para visualizar nossos insights e os
resultados do modelo de Machine Learning
, que determina se um colaborador pode deixar a empresa. Para isso, utilizamos tecnologias como Apache Airflow
, Docker
e Minio
para automatizar fluxos de
dados e empregamos ferramentas como Pandas
, Scikit-learn
, Pycaret,
SweetViz
para otimizar nossa análise. O aplicativo interativo fornece uma abordagem eficiente e abrangente para lidar com os desafios
da gestão de recursos humanos e identificar possíveis candidatos a deixar a empresa.
- Entender quais são os fatores que influenciam para um colaborador desejar deixar a empresa
- Antecipar e saber se um determinado colaborador vai sair da empresa
Criar, instalar e ativar o ambiente Anaconda:
conda env create -f environment.yml.
Criar containers simulando um ambiente real de produção.
- Criar o container do MySQL habilitando a porta 3307 executando o comando via terminal Powershell:
docker run --name mysqlbd1 -e MYSQL_ROOT_PASSWORD=0000 -p "3307:3306" -d mysql
Host: 127.0.0.1| Username: root | Port: 3307 | Password: 0000
- Dentro do diretório projeto crie o diretório datalake.
- Execute o comando via terminal Powershell:
docker run --name minio -d -p 9000:9000 -p 9001:9001 -v "$PWD/datalake:/data" minio/minio server /data --console-address ":9001”
http://localhost:9000
| username: minioadmin | password: minioadmin
- Dentro do diretório projeto criar o diretório airflow.
- Navegar até o diretório airflow e criar o diretório dags.
- Execute o comando via terminal Powershell:
docker run -d -p 8080:8080 -v "$PWD/airflow/dags:/opt/airflow/dags/" --entrypoint=/bin/bash --name airflow apache/airflow:2.1.1-python3.8 -c '(airflow db init&& airflow users create --username admin --password 0000 --firstname Andre --lastname Lastname --role Admin --email [admin@example.org](mailto:admin@example.org)); airflow webserver & airflow scheduler'
https://localhost:8080
Login: admin | Senha: 0000
-
Instalar as bibliotecas necessárias para o ambiente:
-
Execute o comando para se conectar ao container do airflow:
docker container exec -it airflow bash`
-
Instalar as bibliotecas:
pip install pymysql xlrd openpyxl minio
-
-
Criar as variáveis em Admin > Variables
data_lake_server = 172.17.0.3:9000 | data_lake_login = minioadmin| data_lake_password = minioadmin | database_server = 172.17.0.2 (executar: docker container inspect mysqlbd1 e localizar o atributo: IPAddress) | database_login = root | database_password = 0000 | database_name = employees
- Criar os buckets landing, processing e curated.
- No bucket landing, criar a pasta performance-evaluation, nela será inserido o arquivo json referente a avaliação individual do desempenho dos funcionários realizados pela empresa.
- Ainda no bucket landing, criar outra pasta chamada working-hours, nela serão inseridos arquivos .xlsx referente as horas trabalhadas pelos funcionários.
- Importar arquivo employees_db.sql contendo o script para criação do banco de dados (localizado na pasta database do projeto)
Exploraremos um pipeline que extrai, transforma e cria recursos a partir de dados de funcionários de uma empresa fictícia. Utilizaremos bibliotecas Python como Pandas e SQLAlchemy para lidar com dados de várias fontes.
- Extração de Dados do Banco de Dados e do Data Lake
- Criação de Recursos (features):
- Dados de Avaliação de Desempenho
- Número de Projetos por Funcionário
- Média de Horas de Trabalho nos Últimos 3 Meses
- Tempo na Empresa
- Incidência de Acidentes de Trabalho
- Departamento, Salário e Status de Emprego (Ativo ou Inativo)
Códigos originais: make_dataset.py
Passo a passo explicado: 01_make_dataset.ipynb
Elaborar scripts para processar, visualizar e modelar os dados, permitindo a geração de insights que ampliem a compreensão dos desafios enfrentados. Além disso, interpretar os indicadores de desempenho em relação ao problema a ser solucionado.
- Lidando com valores faltantes
- Criando estatísticas para melhor entendimento do problema
Durante a fase de Análise Exploratória de Dados, identificamos diversos insights relevantes, conforme listados abaixo:
- A empresa registra uma taxa de rotatividade de 24%.
- Pode-se inferir que funcionários com maior índice de saída estão menos satisfeitos.
- Há um número substancial de colaboradores insatisfeitos.
- A maioria dos funcionários que deixaram a empresa tinha salários baixos ou médios.
- Os departamentos de Vendas, Técnico e Suporte são os três principais com maiores índices de rotatividade.
- Todos os colaboradores com envolvimento limitado em projetos deixaram a empresa.
- Aqueles com desempenho inferior apresentam maior probabilidade de saída.
Códigos originais: visualize.py
Passo a passo explicado: 02_visualize.ipynb
Com base nas análises da fase anterior, foi possível, por meio da utilização do agrupamento K-Means, criar 3 grupos distintos para categorizar colaboradores que deixaram a empresa de acordo com comportamentos semelhantes. Estes grupos são:
- Hardworking and satisfied employees.
- Poor-performing and dissatisfied employees.
- Hardworking but unhappy employees.
Códigos originais: build_features.py
Passo a passo explicado: 03_build_features.ipynb
Conduzir experimentos para selecionar features, escolher um modelo e ajustar hiperparâmetros em busca da combinação que maximiza a precisão na classificação dos funcionários.
- Feature selection usando Decision Tree
- Criando um modelo para usar como baseline
- Criando métricas para avaliacao dos modelos
- Curva ROC
- Comparando os modelos:
- Comparando modelos (Logistic Regression, Decision Tree, Random Forest)
- Utilizando Automated Machine Learning (PyCaret)
Códigos originais: train_model.py
Passo a passo explicado: 04_train_model.ipynb
Este aplicativo utilizando Streamlit apresenta uma solução de Aprendizado de Máquina para prever a rotatividade de Recursos Humanos.
Permitindo que os usuários definam atributos dos funcionários para a previsão, ele exibe a posição do funcionário em grupos potenciais de rotatividade com um indicador magenta. O aplicativo realiza classificação usando o modelo treinado e exibe os resultados junto com uma visualização dos grupos de funcionários com base em pontuações de satisfação e avaliação.
Para executar o aplicativo, siga estes passos:
- Abra o prompt de comando ou terminal.
- Navegue até o diretório onde o arquivo app.py está localizado usando o comando cd. Por exemplo:
(base) D:\\Projetos\\rotatividade-funcionarios\\app>
- Execute o aplicativo Streamlit usando o seguinte comando:
streamlit run app.py
- O aplicativo será lançado em seu navegador da web padrão. Agora você pode interagir com o aplicativo para prever a rotatividade de funcionários com base em diferentes atributos.
Ao longo do desenvolvimento deste projeto, foi possível aplicar e consolidar princípios essenciais da Ciência e Engenharia de Dados, gerando uma solução concreta para um desafio recorrente em todas as empresas: a retenção de talentos. Utilizamos a análise de dados dos Recursos Humanos para abordar essa questão de maneira eficaz e fundamentada.
Um exemplo concreto desse projeto é a identificação de padrões nos dados de satisfação e avaliações de desempenho dos colaboradores. Ao analisar esses conjuntos de informações, desenvolvemos modelos preditivos capazes de estimar a probabilidade de um funcionário deixar a empresa nos meses seguintes. Por exemplo, ao identificar que colaboradores com baixa satisfação e avaliações abaixo da média têm maior probabilidade de sair, a empresa pode implementar estratégias direcionadas, como programas de retenção e melhorias no ambiente de trabalho, para mitigar esse cenário.
Além disso, almejamos uma etapa adicional de melhoria contínua: a automação. Isso significa que, para otimizar ainda mais nossos processos, pretendemos automatizar passos cruciais, como a construção e ajuste de modelos de Machine Learning, bem como a implantação dos mesmos. Com esse nível de automação, a empresa poderá tomar decisões embasadas em tempo real, respondendo de maneira ágil e precisa às tendências e variações nos dados dos Recursos Humanos.