REDES NEURAIS - Exercício com o WEKA Problema de Classificação de Padrões o 1 Trabalho Uma instituição financeira possui uma base de dados com o histórico de crediário oferecido aos seus clientes. Baseado neste histórico, a instituição deseja inferir se um novo cliente pagará ou não a dívida contraída. A base de dados possui 2077 exemplos, com 11 atributos cada, de créditos concedidos aos seus clientes. A base informa ainda se o cliente honrou ou não o pagamento do empréstimo. Abaixo segue a descrição dos atributos da base:
1 2 3 4 5 6 7 8 9 10 11 =
Nome das Variáveis ESTC NDEP RENDA TIPOR VBEM NPARC VPARC TEL IDADE RESMS ENTRADA CLASSE
Descrição
Tipo
Estado civil Número de dependentes Renda Familiar Tipo de residência Valor do bem a ser adquirido Número de parcelas Valor da parcela Se o cliente possui telefone Idade do cliente Tempo de moradia (Residência) (em meses) Valor da entrada =1 se o cliente pagou a dívida
Categórica Categórica Numérica Categórica Numérica Numérica Numérica Categórica Numérica Numérica
Valores possíveis 0,1,2,3 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 300-9675 0,1 300-6000 1-24 50-719 0,1 18-70 0-420
Numérica Categórica
0-1300 0,1
A partir da base original, foram criadas 3 bases de treinamento, com 1500 exemplos cada escolhidos aleatoriamente a partir da base original, e 3 bases de testes com 577 exemplos cada, representando, respectivamente, 72,2% e 27,8% do total de cada subgrupos de dados. Estas bases estão nos arquivos treino01.txt, treino02.txt, treino03.txt, teste01.txt , teste02.txt e teste03.txt. Utilizando o software WEKA, crie um classificador, baseado em redes neurais, capaz de informar se um novo cliente será potencialmente adimplente ou não. Para isso, siga as instruções abaixo: a) Abra cada um dos arquivos no WEKA e grave-os em formato . arff . Através de um editor de textos (por exemplo, o WordPad), altere o tipo associado às variáveis categóricas conforme o exemplo abaixo: @attribute NDEP numeric
@attribute NDEP {0,1,2,3,4,5,6,7}
Para cada uma das configurações abaixo, apresente os resultados para cada par de conjuntos de treino e de teste, assim como a média e o desvio padrão dos 3 pares: I.
Sem normalização dos atributos de entrada.
Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a G -B -C -I -R === Summary === Correctly Classified Instances 306 53.0329 % Incorrectly Classified Instances 271 46.9671 % Kappa statistic 0 Mean absolute error 0.4959 Root mean squared error 0.5005 Relative absolute error 99.4583 % Root relative squared error 100.2719 % Total Number of Instances 577 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 1 1 0.53 1 0.693 0.52 0 0 0 0 0 0 0.517 1 Weighted Avg. 0.53 0.53 0.281 0.53 0.368 0.519 === Confusion Matrix === a b <-- classified as 306 0 | a = 0 271 0 | b = 1
Com normalização dos atributos de entrada e com 2 números diferentes de neurônios na camada escondida. Explique a escolha dos números. Observar que a rede neural está parametrizada para Normalizar os Atributos e não as Classes, como se pode ver na figura a seguir. A quantidade de neurônios na primeira rodada desta questão foi feita com a (quantidade de entradas + saídas dividido por dois, ou seja 6 neurônios escondidos na primeira camada), já na segunda, como indicado na figura abaixo, a quantidade de neurônios foi aumentada para 8.: II.
1º. – 6 neurônios Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a B -C -R === Summary === Correctly Classified Instances 515 89.2548 % Incorrectly Classified Instances 62 10.7452 % Kappa statistic 0.7829 Mean absolute error 0.1426 Root mean squared error 0.2927 Relative absolute error 28.6074 %
Root relative squared error Total Number of Instances
58.6338 % 577
=== Detailed Accuracy By Class ===
Weighted Avg
TP Rate
FP Rate
Precision
Recall
F-Measure
ROC Area
Class
0.948 0.83 0.893
0.17 0.052 0.115
0.863 0.934 0.896
0.948 0.83 0.893
0.903 0.879 0.892
0.933 0.933 0.933
0 1
=== Confusion Matrix === a b <-- classified as 290 16 | a = 0 46 225 | b = 1
2º. – 8 neurônios Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H 8 G -B -C -R === Summary === Correctly Classified Instances 508 88.0416 % Incorrectly Classified Instances 69 11.9584 % Kappa statistic 0.7589 Mean absolute error 0.1456 Root mean squared error 0.3041 Relative absolute error 29.1997 % Root relative squared error 60.9287 % Total Number of Instances 577 === Detailed Accuracy By Class ===
Weighted Avg.
TP Rate
FP Rate
Precision
Recall
F-Measure
ROC Area
Class
0.922 0.834 0.88
0.166 0.078 0.125
0.862 0.904 0.882
0.922 0.834 0.88
0.891 0.868 0.88
0.93 0.93 0.93
0 1
=== Confusion Matrix === a b <-- classified as 282 24 | a = 0 45 226 | b = 1
Mesmas hipóteses do II e variando o número de épocas durante a fase de treinamento. Escolha 3 durações de treino diferentes (por exemplo: 1 100 e 1000). A quantidade de época é indicada no parâmetro destacado na figura seguinte: III.
=== 3rd Run information === (1 época) Com 6 neurônios === Run information === Scheme: C -R
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 1 -V 0 -S 0 -E 20 -H a -B -
=== Summary === Correctly Classified Instances 508 Incorrectly Classified Instances 69 Kappa statistic 0.7568 Mean absolute error 0.2099 Root mean squared error 0.3155 Relative absolute error 42.1023 % Root relative squared error 63.2198 % Total Number of Instances 577
88.0416 % 11.9584 %
=== Detailed Accuracy By Class ===
Weighted Avg
TP Rate
FP Rate
Precision
Recall
F-Measure
ROC Area
Class
0.987 0.76 0.88
0.24 0.013 0.133
0.823 0.981 0.897
0.987 0.76 0.88
0.897 0.857 0.878
0.909 0.909 0.909
0 1
=== Confusion Matrix === a b <-- classified as 302 4 | a = 0 65 206 | b = 1
Com 8 neurônios Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 1 -V 0 -S 0 -E 20 -H 8 -B C -R === Summary === Correctly Classified Instances 509 88.2149 % Incorrectly Classified Instances 68 11.7851 %
Kappa statistic Mean absolute error Root mean squared error Relative absolute error Root relative squared error Total Number of Instances
0.7603 0.2112 0.3134 42.3556 % 62.7918 % 577
=== Detailed Accuracy By Class ===
Weighted Avg.
TP Rate
FP Rate
Precision
Recall
F-Measure
ROC Area
Class
0.99 0.76 0.882
0.24 0.01 0.132
0.823 0.986 0.9
0.99 0.76 0.882
0.899 0.858 0.88
0.909 0.909 0.909
0 1
=== Confusion Matrix === a b <-- classified as 303 3 | a = 0 65 206 | b = 1
Os demais resultados foram adicionados apenas na tabela do Excel, mas não serão apresentados aqui.
IV.
Mesmas hipóteses do II e utilizando um conjunto de validação .
Neste caso indicamos que o arquivo de treinamento deverá ser monitorado com um arquivo de validação, retirado do próprio conjunto de treinamento (observar que esse arquivo não tem nada haver com o arquivo de teste. A seguir a figura indicando a criação do conjunto de validação a partir da separação de 10% dos dados de tr einamento e a condição de parada quando 20 épocas sucessivas aumentarem o erro.
===4th Run information === Scheme:
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 10 -S 0 -E 20 -H a -B -C -R
=== Summary === Correctly Classified Instances 518 Incorrectly Classified Instances 59 Kappa statistic 0.7934 Mean absolute error 0.1522 Root mean squared error 0.2848 Relative absolute error 30.5305 % Root relative squared error 57.0607 % Total Number of Instances 577 === Detailed Accuracy By Class === TP Rate FP Rate 0.954 0.166 0.834 0.046 Weighted Avg. 0.898 0.11
89.7747 % 10.2253 %
Precision 0.866 0.942 0.902
Recall 0.954 0.834 0.898
F-Measure 0.908 0.885 0.897
ROC Area 0.932 0.932 0.932
Class 0 1
=== Confusion Matrix === a b <-- classified as 292 14 | a = 0 45 226 | b = 1
Mesmas hipóteses do II e codificando binariamente os atributos de entrada. V. A codificação binária atua nas variáveis nominativas (ou categóricas), separando cada possibilidade como uma entrada. Veja a rede formada após a indicação do comando nominalToBinaryFilter (true).
Scheme:
weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a -G -C -R
VI.
Tente obter melhores resultados (se possível) agrupando algumas categorias das variáveis ESTC e NDEP. Para isto, utilize o filtro não-supervisionado MergeTwoValues.
Para os itens II, III, IV e V, indique para cada um dos casos o número de neurônio na camada escondida e explique a sua escolha. Para todos os itens, não varie a taxa de aprendizagem nem o termo de momento. O relatório deve apresentar o resumo e uma análise dos resultados obtidos. Qualquer dúvida, entrar em contato com o monitor: Nelson Albuquerque (
[email protected]) Sugestão: Caso queira poderá utilizar a tabela para visualizar os resultados. Planilha e Excel anexo. Exemplo do relatório parcial do exercício: Grupo 01 (Aprendizagem+teste 01) Configuração I
II
III a
III b ‐
III c
IV
6
6
6
6
6
6
53,0%
89,3%
88,0%
90,3%
89,4%
89,8%
47, 0%
10, 7%
12,0%
9,7%
10,6%
10, 2%
49,6%
14,3%
21,0%
15,2%
14,0%
15,2%
50,1%
29,3%
31,6%
28,3%
29,4%
28,5%
99,5%
28,6%
42,1%
30,4%
28,0%
30,5%
100,3%
58,6%
63,2%
56,8%
58,8%
57,1%
8
8
8
8
8
88,0%
88,2%
90,3%
88,2%
Classf. Incorreta em % MAE (%) RMSE (%)
12,0%
11,8%
9,7%
11,8%
14,6%
21,1%
14,9%
14,7%
30,4%
31,3%
28,4%
31,0%
RAE (%) RRSE (%)
29,2%
42,4%
29,8%
29,4%
60,9%
62,8%
56,9%
62,0%
Hidden layer # Classf. Correta em % Classf. Incorreta em % MAE (%) RMSE (%) RAE (%) RRSE (%) Hidden layer # Classf. Correta em %
‐
‐
V
VI