- Coleta e carregamento dos dados e bibliotecas
Esse dataset está separado em dois arquivos (Prepare e Take a look at) não foi necessário fazer o break up.
2. Inspeção inicial e Limpeza dos dados
Temos 24 colunas e 59.598 linhas. Não há dados nulos!
3. Análises Univariadas
Utilizando laço for criei um boxplot para cada variável numérica, apenas duas options tem outliers; Years at firm (Anos na companhia) e Month-to-month Revenue (Renda mensal).
Criei também um histograma para cada variável e, apenas as options Month-to-month Revenue (Renda mensal) e Firm Tenure (Tempo de Industria) seguem uma distribuição próxima da regular ou gaussiana.
O Dataset é balanceado, tendo um pouco mais de 52% dos funcionários permanecido na empresa e 48% saído.
3. Análises Bivariadas
Qual a relação entre a idade dos funcionários e a decisão de continuar na empresa?
Para responder essa questão agrupei as idades em 5 faixas, conforme abaixo;
Observe que a faixa entre 18 e 30 anos tem o menor percentual dentre todas de permanecer, com 48% (A única faixa abaixo da média percentual do dataset).
Essa faixa é a com maior quantidade de pessoas na análise.
Qual a relação entre Satisfação no trabalho e decisão de sair da empresa?
Avaliando os dados abaixo parece não fazer sentido, pois, a avaliação Excessive (Satisfação alta) tem a menor probability de sair da empresa, porém a Very Excessive (Satisfação muito alta) tem o maior percentual, próximo da avaliação Low (Satisfação baixa).
Trabalho remoto (Dwelling workplace) tem maior probability do funcionário permanecer na empresa?
Aqui conseguimos ver nitidamente que funcionários em trabalho remoto permaneceram muito acima do percentual do dataset.
Há correlação entre Renda mensal e a variável Attrition (Probability do funcionário permanecer ou sair da empresa)?
Utilizando da correlação de Pearson, podemos analisar que há uma correlação quase nula (0,01) entre as duas variáveis, ou seja, não há relação nenhuma.
Qual a relação entre nível de educação e a probabilidade do funcionário deixar a empresa?
Podemos observar que todos os níveis (exceto Phd) tem o mesmo percentual de sair da empresa do que o do dataset.
O Nível Phd tem um percentual muito menor do que os outros de deixar a empresa, vamos avaliar se há uma diferença entre os salários dos níveis.
O nível Phd tem a menor média salarial junto com Grasp’s Diploma.
Vamos analisar agora se há diferença no tempo de anos na empresa dos funcionários com Phd em relação aos demais.
Podemos notar que os funcionários com Phd tem uma média acima dos outros níveis, mas não podemos inferir que isto seja o motivo de ter um percentual tão baixo de saídas.
Funcionários com mais promoções tem probabilidade menor de sair da empresa?
Conforme a análise abaixo podemos ver que a partir de 3 promoções an opportunity de sair da empresa cai para 25%, e abaixo de 3 promoções an opportunity fica em torno da média do dataset.
Qual a relação entre o sentimento do funcionário sobre o equilíbrio entre trabalho e vida pessoal afeta a probabilidade de sair da empresa?
Podemos ver que tem uma diferença substancial entre os funcionários que disseram ser Excelente e Boa (ambas abaixo do percentual de funcionários que saíram da empresa) em relação aos que afirmaram Razoável e Ruim.
Qual a relação entre a reputação da empresa e a probabilidade do funcionário sair da empresa?
Novamente, os funcionários que disseram Excelente ou Boa tiveram um percentual bem menor de terem saído da empresa em relação aos que afirmaram Razoável ou Ruim.
Funcionários que receberam oportunidades em cargos de liderança tiveram um percentual menor de saírem da empresa?
Os funcionários em cargos de liderança tiveram um percentual um pouco menor que a média de saírem da empresa.
A Distância do trabalho afeta a probabilidade do funcionário sair da empresa?
Para essa análise agrupei em 5 faixas as distâncias.
Podemos analisar que até 50 milhas (aprox. 80 km) a porcentagem de funcionários que permaneceram na empresa é acima da média do dataset.
Analisando a correlação entre todas as variáveis numéricas podemos notar que temos apenas uma correlação importante!
Temos uma correlação moderada entre as variáveis Anos de Empresa e Idade que faz sentido se pensarmos que quanto mais tempo de empresa maior a idade do funcionário, geralmente.
6. Transformação dos dados
Importe das bibliotecas de normalização, categorização, modelo de regressão logística e avaliação do modelo.
Separar as options em duas variáveis, uma com todas as colunas exceto a variável dependente (Attrition) e outra apenas com a variável Attrition.
Identificar colunas categóricas e numéricas.
Codificar as colunas categóricas utilizando o One Scorching Encoder
Próximo passo é normalizar as colunas numéricas utilizando o StandScaler, esse processo é necessário devido à diferença de escala entre as variáveis.
7. Treinamento do modelo
Nessa etapa utilizamos o modelo de Regressão Logística do Scikit Study para treinar o modelo a partir dos dados de treinamento, já codificados e normalizados.
8. Fazer previsão nos dados de teste
Não irei colocar todos os processos novamente para não ser repetitivo, portanto apenas vou descrever os passos que fiz com os dados de teste;
- Drop colunas Worker Id
- Importar o dataset de Teste
- Separar em duas variáveis, uma com todas as colunas exceto a coluna Attrition e na segunda variável apenas a coluna Attrition.
- Identificar colunas categóricas e numéricas
- Codificar colunas categóricas utilizando OneHotEncoder
- Normalizar colunas numéricas utilizando StandarScaler
9. Avaliação do modelo
Agora, vamos avaliar o modelo utilizando a Accuracy e Classification report.
Podemos observar que a acurácia do modelo é de 76%, sendo a quantidade de previsões corretas que o modelo previu dividido pela quantidade complete de previsões.
Também temos outras técnicas de avaliação como a previsão que considera a quantidade de acertos positivos sobre a quantidade complete de positivos. Temos Recall que dentre todas as situações de classe Positivo como valor esperado, quantas estão corretas e o F1 Rating a média harmônica entre precisão e recall.
E por fim vamos criar um código para visualizar a matriz de confusão.
Conclusão: Temos um modelo significativamente bom (76% de acurácia), porém ainda a margem de melhoria utilizando seleção de options, ajustando hiperparâmetros, fazendo Cross validation e avaliando outros modelos de classificação.
Obrigado por ter lido e até a próxima.