Neste relatório, a partir de características comportamentais das empresas que celebraram os contratos desejamos prever o risco de que novos contratos sejam rompidos.
Será utilizado um conjunto de 15 atributos de contratos que descrevem características comportamentais das empresas fornecedoras dos contratos. Associado a isso, temos um gabarito para esta tarefa de classificação que informará, dado um contrato, seu teor de risco (baixo ou alto risco). Assumiremos contratos de alto risco como contratos rompidos por ocasião de um Impedimento, Sustação ou Rescisão. Nosso conjunto de dados dispõe de 235131 contratos administrativos.
Para modelagem serão utilizados os algoritmos: Floresta Aleatória e Regressão Logística. Os modelos serão treinados utilizando divisão de 80%/20% para conjuntos de treino e teste respectivamente, e avaliados utilizando a métrica AUC/ROC.
A AUC (Área sob a curva ROC) é uma métrica frequentemente utilizada para avaliação e comparação de classificadores. Quanto mais próximo a 0.5 mais o classificador gerado teve dificuldades em reconhecer a separação entre as classes aprendidas.
No caso da Regressão Logística acima, vê-se que o modelo não consegue fazer distinção entre ambas as classes. O modelo erra menos classificando todos os contratos como pertencentes a classe negativa (devido ao seu tamanho pequeno), do que tentanto classificar como da classe positiva e errando.
Já para a Floresta Aleatória, ainda que tenhamos um modelo um pouco mais eficaz e que faz alguma distinção entre as classes, não é um resultado satisfatório. A partir da Matriz de Confusão (TP, TN, FP, FN) vemos que o modelo acerta bastante observações da classe negativa (baixo risco), entretanto tem dificuldades em reconhecer observações da classe positiva (alto risco). Vejamos como está dividido o balanço de observações, no nosso conjunto de treinamento, então:
Classe | Frequência |
---|---|
0 | 234626 |
1 | 505 |
O desbalanceamento entre classes é um problema presente no conjunto de dados de treinamento e isso é refletido no resultado do modelo. Dadas as quantidades em cada classe, temos um modelo que aprende muitíssimo mais sobre as observações de baixo risco do que sobre observações de alto risco.
Para mitigar esse desbalanço vamos utilizar algumas estratégias já conhecidas na literatura e amplamente difundidas (upsampling, undersampling, dentre outros).
Como vimos, há um severo desbalanço entre as classes de alto e baixo risco em nossos contratos e esse fator impacta diretamente na capacidade de aprendizagem do modelo - aprende-se muito mais sobre a classe de contratos denominada de baixo risco, e pouco sobre a classe alvo que chamamos de alto risco.
O balanceamento artificial de classes é realizado na experimentação científica quando não é possível retornar ao mundo real e coletar um maior número de observações da classe minoritária. No nosso caso, desejamos modelar um fenômeno atípico, a rescisão de contratos, então é natural que tenhamos um número muito maior de contratos que não foram rompidos (baixo risco) do que de contratos rompidos (alto risco). Por essa razão é preciso realizar o balanceamento artifial do conjunto de treinamento, neste experimento utilizaremos o SMOTE.
Utilizando o SMOTE a classe majoritária será reduzida e a minoritária acrescida. A nova quantidade de observações em cada classe então será:
Classe | Frequência |
---|---|
0 | 7880 |
1 | 4334 |
Abaixo temos uma visão geral da perfomance dos modelos.
Modelo | F1 | AUC | Precisão | Revocação | MCC | VP | VN | FP | FN |
---|---|---|---|---|---|---|---|---|---|
Reg Logística | 0.000 | 0.500 | 0.000 | 0.000 | 0.000 | 0 | 46915 | 0 | 111 |
Floresta Al. | 0.049 | 0.513 | 0.273 | 0.027 | 0.085 | 3 | 46907 | 8 | 108 |
Floresta Al. Smote | 0.022 | 0.558 | 0.012 | 0.144 | 0.033 | 16 | 45556 | 1359 | 95 |