Redes Neurais: Como preparar dados do mundo real para detectar eventos de baixa probabilidade?

7

Eu tenho um conjunto de dados do mundo real de tomadores de crédito (50.000 registros). O conjunto contém categorias como Casado, Solteiro, Divorciado, etc., além de dados contínuos, como Renda, Idade, etc. Alguns registros estão incompletos ou contêm discrepâncias. A variável dependente é Padrão / Bom (0,1). Estamos tentando treinar uma rede neural para prever padrões com base nos dados de treinamento. Tenho experiência com redes neurais e as usei para dados de amostra com ótimos resultados; no entanto, nunca tive que normalizar dados ruidosos do mundo real.

Quaisquer pensamentos que devo ter em mente em relação a: - Como normalizar as categorias. Posso atribuir um número indexado? Devo tentar estratificá-los? - Como lidar com dados ausentes. Atribuir 0? - Como lidar com o fato de os padrões serem apenas cerca de 5% do conjunto de dados. Que função de transferência seria útil para prever essas baixas probabilidades. - Basicamente, qualquer outro conselho de dados do mundo real é muito apreciado.

Desde já, obrigado!

Ans Stru
fonte

Respostas:

3

Você traz uma série de boas perguntas aqui. Farei o possível para cobrir cada um deles. Não é um tratamento exaustivo, mas espero que ajude ...

1. Como normalizar as categorias.

Primeiro, avalie se suas variáveis ​​categóricas podem ser consideradas variação zero (por exemplo, todos os registros que possuem apenas uma categoria) ou variação quase zero (grande maioria dos registros pertencentes a muito poucas categorias). Crie uma distribuição de frequência básica para identificar isso.

Embora isso não importe tanto em contextos neurais em si, é uma boa ideia considerar a filtragem de variáveis ​​de baixa variação do seu modelo. Apenas tome cuidado, pois eliminar variáveis ​​de variância próximas de zero pode fazer com que você jogue fora o bebê com a água do banho.

Você já trabalhou com redes neurais antes, para saber que precisa converter categorias em valores numéricos. Uma boa pergunta a fazer é se um determinado valor categórico é de natureza ordinal (por exemplo, em uma escala Likert de 1 a 5) e se você deseja preservar a ordinalidade. Isso leva você a uma área como a descrita por Pinto da Costa e Cardoso ( https://www.researchgate.net/publication/221112186_Classification_of_Ordinal_Data_Using_Neural_Networks ).

2. Como lidar com dados ausentes.

Supondo que você esteja falando da falta de valores contínuos, convém imputar esses valores numéricos com base coletivamente nos valores presentes em todo o atributo. Existem várias abordagens para usar aqui, mas algo importante a ser lembrado é a dispersão. Em um sentido básico, se seu atributo for distorcido por discrepantes, convém evitar um cálculo baseado em média e seguir uma abordagem baseada em mediana.

3. Como lidar com o fato de que 'Padrões' são ~ 5% dos dados.

Essa não é uma preocupação imediata, pois você possui 2500 exemplos do que denota um 'Padrão' (em um conjunto de 50.000 dados). Uma abordagem sensata aqui seria garantir que você esteja usando um esquema de validação cruzada K-fold (digamos com 10 dobras) para garantir que você esteja realmente randomizando o treinamento versus o teste. Isso ajudará a protegê-lo contra o ajuste excessivo. Novamente, essa é uma orientação de alto nível, mas é prudente.

Crédito extra: eu não entrei em outras táticas padrão, como a normalização de seus atributos contínuos, mas você pode acelerar o processo para generalizar melhor seu modelo (além de desenvolver um entendimento mais profundo da dinâmica em jogo nos dados). ) Isso pode levar você a experimentar outros algos, etc.

Damian Wilbur
fonte