PROJETO: Análise e detecção de fraudes em transações imobiliárias

Parte 2

Na parte 2, foram colocadas em práticas as tarefas para tratar dados ausentes, sabemos que isso é um problema e temos algumas variáveis faltantes que foram preenchidas com base em agrupamentos de outras features que julgamos estarem próximas, pois queremos que os dados sejam os mais próximos possíveis do real, toda decisão tomada irá influenciar nas informações geradas, cabe ao time de negócio junto com os cientistas de dados tomarem a decisão mais acertiva e caso necessário voltar e ajustar.

Após isso, a etapa é de feature engineering ou engenharia de atributos, ou seja, vamos criar outros atributos com base nas variáveis existentes, um exemplo é, temos uma feature de "largura do terreno" e outra de "profundidade do terreno", podemos criar uma terceira multiplicando essas duas que se tornará uma variável "área do terreno", se quisermos podemos até apagar as duas primeiras porque uma já as representa.

A etapa de feature engineering é muito importante, porque o intuito dela é facilitar para que o algoritmo consiga encontrar de forma mais fácil os padrões nos dados, caso exista... Importante ressaltar que não estamos criando padrões.

Sumário

Parte 1: Análise Exploratória</p>

1. Importando as bibliotecas e carregando os dados
2. Análise Exploratória dos dados
3. Conclusão

Parte 2: Limpeza, transformação e Feature Engineering

  1. Importando as bibliotecas e carregando os dados
  2. Limpeza e transformação dos dados
    2.1 Limpando valores ausentes da variável: ZIP
    2.2 Limpando valores ausentes das variáveis: FULLVAL, AVLAND, AVTOT, BLDFRONT, BLDDEPTH, LTFRONT e LTDEPTH
    2.3 Limpando valores ausentes da variável: STORIES
  3. Engenharia de Atributos
  4. Conclusão

`Parte 3:` Modelagem e calculo do Score de Fraude

1. Importando as bibliotecas e carregando os dados
2. Padronização das variáveis
3. Aplicando PCA
3.1. Aplicação da Escala Z em componentes PCA Padronizados
3.2 Calculando o Fraud Score 1
4. Aplicacando Deep Learning
4.1 Construção do Modelo
4.2 Avaliação do modelo
4.3 Calculando o Fraud Score 2
5. Calculando o Score Final do Score de Fraude e apresentando os Resultados
6. Conclusão
7. Referências

1. Importando as bibliotecas e carregando os dados

Vamos fazer um resumo, colocando em Data Frame:

Vamos iniciar o trabalho de modelagem, mas como uma boa prática, vamos criar uma cópia do dataframe. Mas porque criar uma cópia?

Por duas razões, caso precisar retornar aos dados originais por alguma razão, não vou precisar carregar os dados novamentes.

E outra que quando calcularmos os scores, vou utilizar esse arquivo original para colocar as pontuações.

2. Limpeza e transformação dos dados

Neste caso vamos tratar os dados ausentes, ou seja, os registros inexistentes no conjunto de dados.

Temos duas opções sobre o que fazer com esses dados:

  1. Excluir a variável, só que neste caso deveria fazer caso tivessem de 70% à 80% dos dados faltando (apenas uma referência) ou se tenho certeza que não irá fazer falta.

  2. Substituir esses valores, porém, precisamos fazer de forma mais fiel e próxima possível da realidade.

2.1. Limpando valores ausentes da variável ZIP

A variável ZIP (código postal) é uma das variáveis mais importantes, pois indica a localização dos imóveis, portanto não podemos removê-la. Aproximadamente 3% de registros faltando.

Por ser uma variável categórica, vamos optar por utilizar a moda, ou seja, o valor que mais se repete.

Vamos criar um loop em um função para obter o resultado e caso não encontrar valor da moda o resultado será 1.

Nosso objetivo é encontrar um valor que chegue o mais próximo do real, para isso vamos realizar a seguinte estratégia.

Vamos agrupar duas variáveis "B" e "BLOCK" e com as funções definidas acima, vamos extrair os valores da moda para cada grupo.

Agora vamos fazer da seguinte forma, vamos analisar os grupos e aqueles sem frequencia de moda, comparamos a frequencia do grupo acima e abaixo e então inserimos o valor de maior frequencia.

Depois de ter encontrado os valores com maior frequencia de cada grupo formado nesse dataframe auxiliar, vamos de fato preencher os registros com valores ausentes da moda.

Vamos dar sequencia limpando as variáveis numéricas quantitativas

2.2. Limpando valores ausentes das variáveis:

FULLVAL, AVLAND, AVTOT, BLDFRONT, BLDDEPTH, LTFRONT e LTDEPTH

Agora que já sabemos a quantidade de valores ausentes em cada uma dessas variáveis, vamos utilizar a mediana de cada grupo para preencher esses valores.

Poderíamos ter escolhido a média, por exemplo, mas a média é influenciada por valores ausentes enquanto a mediana contorna esse problema.

Vamos pegar a mediana por grupos, porque queremos os valores mais próximo do real, neste caso grupos com tamanho maior ou igual a 5.

2.3. Limpando valores ausentes da variável STORIES

Como já vimos, essa variável representa o número de andares. Também vamos utilizar a mediana para substituição, primeiro agrupando por duas variáveis e depois utilizando a própria variável.

3. Engenharia de Atributos

Vamos criar algumas variáveis a partir de operações com as variáveis existentes, mas por que?

A Engenharia de Atributos ou Features Engineering é quando criados novas variáveis a partir das que já existem, como por exemplo, vamos criar a variável Área, pensando no cálculo da área podemos multiplicar a variavel LTFRONT pela variável LTDEPTH.

Relembrando essas duas variáveis representam, respectivamente, a frente do lote e a profundidade, com isso base * altura, teremos a área total calculada.

Mas antes, vamos fazer uma cópia do dataset original como boa prática, caso algo der errado.

Com qual objetivo é fazer esse tipo de trabalho?

Com a variável AREA1 criada agora, posso remover do modelo as outras duas variáveis (LTFRONT e LTDEPTH), pois uma variável representa essas duas agora, com isso reduzimos o número de variáveis do modelo, no qual facilita para os padrões serem encontrados por ele, além do ganho de performance no processamento.

Seguindo, vamos criar outra variável AREA2 no qual vamos multiplicar BLDFRONT por BLDDEPTH.

E então por, vamos calcular mais uma área, dessa vez multiplicando a AREA2 pela STORIES.

É obrigatório criar essas variáveis, a resposta é não! Vai depender muito do problema que você quer resolver, precisamos ter em mente o como vamos "facilitar" para o algoritmo encontrar os padrões e que tenha o maior número de acertos possíveis, desde que fique generalizado.

Podemos ir testando essas variáveis mantendo o algoritmo menos complexo também e no final decidimos se manteremos e quais vamos manter, algumas ou todas.

Mas não paramos por ai, vamos agora criar várias colunas com índices utilizando essas variáveis recém criadas, utilizando FULLVAL (valor do imóvel), AVLAND (valor do terreno) e AVTOT (Valor total do imóvel) com as AREAS criadas.

Reforçando, criamos essas variáveis a mais para que ajude o algoritmo a detectar os padrões existentes, importante saber que não criamos padrões, apenas "facilitamos" quando possível o algoritmo detectá-los, se existirem.

Vamos ainda criar mais algumas? Vamos utilizar as médias dos índices agrupando por outras classes, isso faz com que olhemos os padrões de outra perspectiva que irá ajudar o modelo mais a frente.

Tudo isso são técnicas de feature engineering, com base na junção da informação de variáveis do conjunto de dados.

A princípio vamos converter a variável ZIP de "float64" para "string".

Agora, vamos criar uma lista com 3 variáveis, ZIP, TAXCLASS e B, respectivamente são, código postal, classe do imposto e o bairro.

Selecionamos essas três variáveis porque de acordo com nossa análise exploratória, são variáveis que parecem ser relevantes para o problema de negócio, e esse tipo de informação poderíamos validar com a área de negócio também.

Vamos criar um loop no qual ele fará o agrupamento pelo indices e depois o cálculo da média.

Qual a explicação para criar essas médias?
Pode ser que a média dos grupos seja mais relevante que os índices em si para o algoritmo e caso não for satisfatório voltamos para esta etapa de feature engineering e faremos de outra forma.

Depois calcular a média da agrupamento daquelas 3 variáveis pelos índices, vamos também calcular a média para todas as demais variáveis.

Então agora vamos inserir no conjunto de dados original.

4. Conclusão

Conseguimos preencher todas os dados faltantes e chegamos a ter 117 features, que conseguimos reduzir para 68. Ufa! Agora estamos prontos para a etapa final de modelagem e calculo do Score de Fraude.


Clique para Parte 1 - Análise Exploratória

Clique para Parte 3 - Transformação e Feature Engineering