Você está na página 1de 5

CEFET/RJ

Bacharelado em Ciência da Computação


GCC1917 – Tópicos Especiais em Programação
2021.2
Trabalho 1
Prof. Eduardo Bezerra (ebezerra@cefet-rj.br)
23 de janeiro de 2022
Sumário
1 Classificação de clientes 3

2 Predição de preços de diamantes 4

3 Classificação de imagens (Fashion MNIST) 4

Page 2
1 Classificação de clientes
Uma instituição financeira (fictı́cia) possui uma base de dados com o histórico de crediário
oferecido aos seus clientes. Baseado neste histórico, a instituição deseja investigar a criação
de modelos de classificação para inferir se um novo cliente que submeteu uma requisição
de empréstimo pagará ou não a dı́vida, caso o banco resolva realizar esse empréstimo. O
objetivo é predizer se um novo cliente pagaria ou não uma dı́vida contraı́da, tendo como base
as caracterı́sticas desse novo cliente. Uma vez treinado, um modelo de classificação para
esse problema poderá inferir se um novo cliente irá ou não honrar um eventual empréstimo
concedido a ele.
O conjunto de dados a ser utilizado para treinamento possui 1500 exemplos, e contém
dados relativos a créditos (empréstimos) concedidos aos clientes da instituição financeira.
Esses registros estão contidos no arquivo credtrain.txt, que é fornecido juntamente com
esse documento. Para cada cliente, são definidos 11 atributos (variáveis, caracterı́sticas).
Além disso, a última coluna de cada exemplo informa se o cliente honrou ou não o pagamento
do empréstimo. Na Tabela 1, encontramos a descrição dos atributos.

Tabela 1: Esquema do conjunto de dados com histórico de clientes.


Variável Descrição Tipo Domı́nio
ESCT Estado civil Categórica 0,1,2,3
NDEP Número de dependentes Categórica 0,1,2,3,4,5,6,7
RENDA Renda Familiar Numérica 300-9675
TIPOR Tipo de residência Categórica 0,1
VBEM Valor do bem a ser adquirido Numérica 300-6000
NPARC Número de parcelas Numérica 1-24
VPARC Valor da parcela Numérica 50-719
TEL Se o cliente possui telefone Categórica 0,1
IDADE Idade do cliente Numérica 18-70
RESMS Tempo de moradia (em meses) Numérica 0-420
ENTRADA Valor da entrada Numérica 0-1300
CLASSE =1 se o cliente pagou a dı́vida Categórica 0,1

Repare que esse conjunto de dados contém diversos atributos que não são numéricos.
Repare também que, dentre os atributos numéricos, há uma grande discrepância entre as
suas respectivas faixas de valores. Modelos de redes neurais não podem ser treinados sobre
atributos que não são numéricos. Além disso, é sabido que diferenças grandes entre as faixas
de valores dos atributos atrapalha o processo de treinamento. Sendo assim, antes de iniciar
o treinamento, é preciso realizar diversos passos de pré-processamento sobre esses dados.
Esses passos já são fornecidos em um notebook Jupyter.
Você deve criar o modelo de classificação de clientes por meio de uma rede neural MLP
(multi-layer perceptron) com propagação do erro (error backpropagation). Você deve definir
os hiperparâmetros da rede neural. Como dica, dada a baixa complexidade do problema,
você pode usar uma rede MLP de uma única camada oculta. Em seu relatório, apresente os

Page 3
detalhes dos hiperparâmetros selecionados (quantidade de épocas de treinamento, tamanho
do lote, taxa de aprendizado, quantidade de neurônios na camada oculta, otimizador, funções
de ativação, etc). Apresente a curva de aprendizado correspondente ao treinamento do
modelo.
Após o treinamento, você deve avaliar a qualidade preditiva do modelo de rede neural
gerado. Para isso, você deve usar os exemplos contidos no arquivo credtest.txt. Isso
permitirá que você avalie o quão efetivo foi o passo de treinamento da rede neural, ou seja, o
quão adequado é o modelo de classificação. Produza a matriz de confusão (confusion matrix )
relativa aos resultados da fase de testes (credtest). Apresente também o resultado produ-
zido pela função classification report do Scikit-Learn. Produza a matriz de confusão
(confusion matrix ) relativa aos resultados da fase de testes (credtest). Apresente também
o resultado produzido pela função classification report do Scikit-Learn.

2 Predição de preços de diamantes


Nessa parte, você deve treinar um modelo de rede neural MLP para realizar uma tarefa de re-
gressão sobre o conjunto de dados Diamond. Esse conjunto de dados (junto com uma descrição
dos seus atributos) pode ser obtido em https://www.kaggle.com/shivam2503/diamonds.
Em particular, você deve criar um modelo para predizer o valor do preço (representado
na variável dependente price) de um diamante usando os demais atributos como variáveis
independentes.
Repare que o conjunto de dados Diamond também contém variáveis não-numéricas. Sendo
assim, você também precisará realizar passos de pré-processamento sobre o conjunto de dados
antes de iniciar o treinamento do modelo. Para isso, tome como exemplo os passos de pré-
processamento realizados sobre o conjunto de dados de clientes.
Você deve criar o modelo de predição de preços por meio de uma rede neural MLP
(multi-layer perceptron) com propagação do erro (error backpropagation). Você deve definir
os hiperparâmetros da rede neural. Como dica, dada a baixa complexidade do problema,
você pode usar uma rede MLP de uma única camada oculta. Em seu relatório, apresente os
detalhes dos hiperparâmetros selecionados (quantidade de épocas de treinamento, tamanho
do lote, taxa de aprendizado, quantidade de neurônios na camada oculta, otimizador, funções
de ativação, etc). Apresente a curva de aprendizado correspondente ao treinamento do
modelo.
Após o treinamento, você deve avaliar a qualidade preditiva do modelo de rede neural
resultante. Para isso, você deve separar 20% dos exemplos fornecidos para o conjunto de
teste. Isso permitirá que você avalie o quão efetivo foi o treinamento da rede neural. Como
métrica de avaliação, use o RMSE.

3 Classificação de imagens (Fashion MNIST)


Nesta parte, você irá treinar modelos de redes neurais artificiais para classificar imagens.
Em particular, você irá usar o conjunto de dados Fashion MNIST. Esse conjunto de da-

Page 4
dos pode ser obtido em https://www.kaggle.com/zalando-research/fashionmnist. Ou-
tro link relevante para esta parte do trabalho é https://github.com/zalandoresearch/
fashion-mnist.
Após ler os conjuntos de dados, você deve treinar dois modelos de classificação utilizando
o PyTorch, conforme descrito a seguir:

• Uma rede completamente conectada de uma única camada oculta e com uma camada
de saı́da de duas unidades com softmax.

• Uma rede convolucional.

Em ambos os casos acima, você deverá selecionar os hiperparâmetros e arquitetura de


rede. Procure se basear nos exemplos de código e nas arquiteturas de rede apresentadas em
aula. Em seu relatório, apresente detalhes sobre dos hiperparâmetros selecionados para cada
uma dessas redes. Apresente também detalhes acerca do desempenho (acurácia) encontrado
em cada um dos casos. Apresente também as curvas de aprendizados correspondentes aos
treinamentos de cada modelo.

O que deve ser entregue


Você deve desenvolver esse trabalho usando o framework PyTorch. Uma base inicial para esse
trabalho já é fornecida na forma de um notebook Jupyter denominado DL T1.ipynb. Você
deve necessariamente tomar esse notebook como ponto de partida e completá-lo. Em parti-
cular, espera-se que você apresente a documentação da implementação, análise e conclusões
de cada parte desse trabalho no notebook que irá entregar. Você deve obrigatoriamente
organizar seu notebook em seções que reflitam as seções apresentadas no enunciado deste
trabalho.

IMPORTANTE: Tão relevante quanto a implementação de cada parte é sua


explicação sobre ela. Nesse sentido, você deve também apresentar suas análises
e conclusões para cada parte do trabalho. Um relatório contendo apenas código
não receberá os créditos totais deste trabalho.

Crie um arquivo compactado que contém o notebook Jupyter e todos os conjuntos de


dados necessários para execução das partes do trabalho. Esse arquivo compactado deve se
chamar DL T1 SEU NOME COMPLETO.zip. Esse arquivo compactado deve ser entregue até a
data acordada.

Page 5

Você também pode gostar