Anda di halaman 1dari 8

REDES NEURAIS - Exercício com o WEKA

Problema de Classificação de Padrões


1o 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:

Nome das Descrição Tipo Valores


Variáveis possíveis
1 ESTC Estado civil Categórica 0,1,2,3
2 NDEP Número de dependentes Categórica 0,1,2,3,4,5,6,7
3 RENDA Renda Familiar Numérica 300-9675
4 TIPOR Tipo de residência Categórica 0,1
5 VBEM Valor do bem a ser adquirido Numérica 300-6000
6 NPARC Número de parcelas Numérica 1-24
7 VPARC Valor da parcela Numérica 50-719
8 TEL Se o cliente possui telefone Categórica 0,1
9 IDADE Idade do cliente Numérica 18-70
10
RESMS Tempo de moradia (Residência) Numérica 0-420
(em meses)
11 ENTRADA Valor da entrada Numérica 0-1300
= CLASSE =1 se o cliente pagou a dívida Categórica 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 sub-
grupos 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
II. 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.:

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 58.6338 %
Total Number of Instances 577

=== Detailed Accuracy By Class ===


TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.948 0.17 0.863 0.948 0.903 0.933 0
0.83 0.052 0.934 0.83 0.879 0.933 1
Weighted 0.893 0.115 0.896 0.893 0.892 0.933
Avg

=== 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 ===


TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.922 0.166 0.862 0.922 0.891 0.93 0
0.834 0.078 0.904 0.834 0.868 0.93 1
Weighted 0.88 0.125 0.882 0.88 0.88 0.93
Avg.

=== Confusion Matrix ===


a b <-- classified as
282 24 | a = 0
45 226 | b = 1
III. 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:

=== 3rd Run information === (1 época)


Com 6 neurônios

=== Run information ===

Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 1 -V 0 -S 0 -E 20 -H a -B -


C -R

=== Summary ===


Correctly Classified Instances 508 88.0416 %
Incorrectly Classified Instances 69 11.9584 %
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

=== Detailed Accuracy By Class ===


TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.987 0.24 0.823 0.987 0.897 0.909 0
0.76 0.013 0.981 0.76 0.857 0.909 1
Weighted Avg 0.88 0.133 0.897 0.88 0.878 0.909

=== 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 0.7603
Mean absolute error 0.2112
Root mean squared error 0.3134
Relative absolute error 42.3556 %
Root relative squared error 62.7918 %
Total Number of Instances 577

=== Detailed Accuracy By Class ===


TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.99 0.24 0.823 0.99 0.899 0.909 0
0.76 0.01 0.986 0.76 0.858 0.909 1
Weighted Avg. 0.882 0.132 0.9 0.882 0.88 0.909

=== 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 treinamento
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 89.7747 %
Incorrectly Classified Instances 59 10.2253 %
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 Precision Recall F-Measure ROC Area Class
0.954 0.166 0.866 0.954 0.908 0.932 0
0.834 0.046 0.942 0.834 0.885 0.932 1
Weighted Avg. 0.898 0.11 0.902 0.898 0.897 0.932

=== Confusion Matrix ===


a b <-- classified as
292 14 | a = 0
45 226 | b = 1

V. Mesmas hipóteses do II e codificando binariamente os atributos de entrada.


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
(nelson.a@ele.puc-rio.br)

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 V VI
Hidden layer              # 6 6 6 6 6 6
Classf. Correta em % 53,0% 89,3% 88,0% 90,3% 89,4% 89,8%
Classf. Incorreta em % 47,0% 10,7% 12,0% 9,7% 10,6% 10,2%
MAE (%) 49,6% 14,3% 21,0% 15,2% 14,0% 15,2%
RMSE (%) 50,1% 29,3% 31,6% 28,3% 29,4% 28,5%
RAE (%) 99,5% 28,6% 42,1% 30,4% 28,0% 30,5%
RRSE (%) 100,3% 58,6% 63,2% 56,8% 58,8% 57,1%

Hidden layer               # 8 8 8 8 8
Classf. Correta em % 88,0% 88,2% 90,3% 88,2%
Classf. Incorreta em % 12,0% 11,8% 9,7% 11,8%
MAE (%) 14,6% 21,1% 14,9% 14,7%
RMSE (%) 30,4% 31,3% 28,4% 31,0%
RAE (%) 29,2% 42,4% 29,8% 29,4%
RRSE (%) 60,9% 62,8% 56,9% 62,0%

Anda mungkin juga menyukai