Você está na página 1de 14

Universidade do Minho

2023/2024

Mestrado em Engenharia e Gestão de Sistemas de


Informação

Aprendizagem Automática em
Sistemas Empresariais
Entrega 3
TP1 – Grupo 1

Beatriz Morais Guilherme Barbosa Mariana Pedreira Paula Ferreira

PG54038 PG53853 PG54074 PG54126

PG53978 PG54074 PG54074

Docente Manuel Santos


1. Introdução
No contexto da unidade curricular de Aprendizagem Automática de Sistemas Empresariais, foi-
nos proposto o desenvolvimento de um projeto cuja finalidade baseia-se na compreensão, análise e
organização dos dados fornecidos, com o objetivo estimar preços de automóveis consoante
determinadas características.

O grupo terá como base a metodologia CRISP-DM, que fornece um modelo de orientação a
projetos de Data Mining através de uma sequência de eventos idealizados e contém seis fases,
nomeadamente, Business Understanding, Data Understanding, Data Preparation, Modeling, Evalution
Deployment.

Portanto, ao longo da realização deste trabalho, pretende-se aplicar esta metodologia de modo
a obter um modelo de previsão que permita indicar valores futuros para uma variável, target, num
determinado domínio do problema, isto é, um modelo de previsão ideal para o objetivo de negócio.

2
2. Modeling
2.1. Selecionar Técnicas de Modelação
Nesta etapa do projeto, optamos por escolher diversas técnicas de modelação que se adequam
aos diferentes cenários criados e aos testes realizados. Isto vai-nos permitir explorar e comparar os
vários tipos de técnicas em cada uma das análises a serem realizadas. Selecionamos técnicas de
modelação relacionadas com problemas de classificação e problemas de regressão, uma vez que vamos
explorar as duas abordagens.

Relativamente à classificação, para podermos utilizar esta técnica, dividimos a variável preço
em 50 categorias diferentes. Essas categorias enquadram o preço num intervalo de valor mínimo a
valor máximo. Acrescentamos uma nova coluna ao dataset e preenchemos com a categoria associada
ao preço de cada linha. O número de valores por categoria é semelhante. Os intervalos das categorias
não são contínuos.

2.1.1. Técnicas de Modelação

Tendo em conta a linguagem utilizada ao longo de todo o trabalho, Python, a equipa de trabalho
optou por utilizar a biblioteca sklearn para concretizar a fase da modelação. Dentro desta biblioteca,
selecionamos diferentes técnicas de modelação.
Tabela 1 - Técnicas de Modelação

Regressão Classificação
Decision Tree Utiliza uma árvore de decisão Decision Tree Utiliza uma árvore de decisão
Regressor para prever valores numéricos. Classifier para classificar instâncias em
diferentes categorias.

MLP Regressor Redes Neuronais Artificiais MLP Classifier Redes Neuronais Artificiais para
(MLP) aplicadas à regressão (Redes classificar padrões complexos em
para modelar relações Neuronais) conjuntos de dados.
complexas.

Gaussion NB Baseado no Teorema de Bayes, Gaussion NB Baseado no Teorema de Bayes,


(Naive Bayes) assume distribuição gaussiana (Naive Bayes) assume distribuição gaussiana
para os atributos. para os atributos.

SVR (Support Utiliza vetores de suporte para SVC (Support Utiliza vetores de suporte para
Vector realizar a regressão, sendo Vector classificar instâncias em
Regression) eficaz em conjuntos de dados Classifier) diferentes categorias, eficaz em
complexos. espaços de alta dimensão.

Random Uma extensão da árvore de


Forest decisão, que utiliza múltiplas
Regressor árvores para uma regressão
mais robusta.

3
2.2. Criar uma conceção de Teste

2.2.1. Conceção de Teste

Nesta fase, a equipa optou por definir vários cenários e métodos para testar a eficácia do
modelo em questão. Assim, podemos afirmar que cada um dos cenários criados é uma combinação de
variáveis fornecidas pelo conjunto de dados, técnicas utilizadas e métodos de teste e validação.

Selecionamos técnicas de modelação que abordam tanto problemas de classificação quanto de


regressão, pois pretendemos explorar ambas as abordagens.

Na seguinte tabela encontram-se representados os diversos cenários criados para cada uma
das técnicas.

Tabela seguindo a abordagem de problemas de regressão:


Tabela 2 - Técnica de Modelação Regressão

Método de Teste
Cenários Atributos Selecionados Técnicas Usadas
e Validação
'brand',’model_year’,’milage','fuel_type', Árvores de Decisão
MAE
‘engine’, 'transmission', 'int_color', Naive Bayes
MSE
C1 'ext_color', 'clean_title', 'accident', Random Forest
RMSE
‘price’, ‘kilometers’, 'horsepower', Vetor Machine
R2
'litres', 'cylinders' Redes Neuronais

'brand',’model_year’,’milage','fuel_type', Árvores de Decisão


MAE
‘engine’, 'transmission', 'int_color', Naive Bayes
MSE
C2 'ext_color', 'clean_title', 'accident', Random Forest
RMSE
‘price’, ‘kilometers’, 'horsepower', Vetor Machine
R2
'litres', 'cylinders' Redes Neuronais

Árvores de Decisão
MAE
Naive Bayes
'model_year', 'price', 'kilometers', MSE
C3 Random Forest
'horsepower' RMSE
Vetor Machine
R2
Redes Neuronais

Árvores de Decisão
MAE
Naive Bayes
'model_year', 'price', 'kilometers', MSE
C4 Random Forest
'horsepower' RMSE
Vetor Machine
R2
Redes Neuronais

4
Tabela seguindo a abordagem de problemas de classificação:
Tabela 3 - Técnica de Modelação Classificação

Método de Teste
Cenários Atributos Selecionados Técnicas Usadas
e Validação
Accuracy
'brand',’model_year’,’milage','fuel_type',
Árvores de Decisão precision
‘engine’, 'transmission', 'int_color',
Redes Neuronais recall
C1 'ext_color', 'clean_title', 'accident',
Vetor Machine f1
‘price’, ‘kilometers’, 'horsepower',
Naive Bayes AUC
'litres', 'cylinders'
kappa
accuracy
'brand', 'model_year', 'milage',
Árvores de Decisão precision
'fuel_type', 'engine', 'transmission',
Redes Neuronais recall
C2 'ext_col', 'int_col', 'accident',
Vetor Machine F1
'clean_title', 'price', 'kilometers',
Naive Bayes AUC
'horsepower', 'litres', 'cylinders'
kappa
accuracy
Árvores de Decisão precision
'model_year', 'price', 'kilometers', Redes Neuronais recall
C3
'horsepower' Vetor Machine f1
Naive Bayes AUC
kappa
accuracy
Árvores de Decisão precision
'model_year', 'price', 'kilometers', Redes Neuronais recall
C4
'horsepower' Vetor Machine f1
Naive Bayes AUC
kappa

2.3. Construir o Modelo

2.3.1. Configuração dos parâmetros

Após a definição de todos os cenários e das técnicas de modelação, é necessário configurar as


mesmas, para que fiquem prontas a executar. Assim sendo são apresentados abaixo as técnicas de
modelação (Regressão e Classificação) utilizadas e configuradas pela equipa de trabalho.

• Para a técnica de modelação de Regressão definimos o seguinte:

import pandas as pd
from sklearn.metrics import (
make_scorer,
confusion_matrix
)
from sklearn.model_selection import cross_validate, StratifiedKFold
from sklearn.tree import DecisionTreeRegressor # decision trees for
classification

5
from sklearn.naive_bayes import GaussianNB # naive bayes for classification
from sklearn.svm import SVR
from sklearn.tree import DecisionTreeRegressor
from sklearn.svm import SVC # support vector machines for classification

def specificity_score(y_true, y_pred):


tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
return tn / (tn+fp)

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score


METRICS = {
"MAE": make_scorer(mean_absolute_error),
"MSE": make_scorer(mean_squared_error),
"RMSE": make_scorer(lambda y_true, y_pred:
np.sqrt(mean_squared_error(y_true, y_pred))),
"R2": make_scorer(r2_score)
}

X, y = df.drop("price", axis=1), df["price"]

• Para a técnica de modelação de Classificação definimos o seguinte:

import pandas as pd

# Substitua 'coluna_preco' pelo nome real da coluna de preços em seu conjunto


de dados
df['price_type'] = pd.qcut(df['price'], q=[i/50 for i in range(51)],
labels=[f'Category {i}' for i in range(1, 51)])

# Visualize as categorias criadas e seus valores mínimos e máximos


categories_summary = df.groupby('price_type')['price'].agg(['min', 'max'])
print(categories_summary)

from sklearn.metrics import (


make_scorer,
confusion_matrix,
cohen_kappa_score,
accuracy_score,
precision_score,
recall_score,
f1_score,
roc_auc_score
)
from sklearn.model_selection import cross_validate, StratifiedKFold
from sklearn.tree import DecisionTreeClassifier # decision trees for
classification

6
from sklearn.neural_network import MLPClassifier # neural networks for
classification
from sklearn.naive_bayes import GaussianNB # naive bayes for classification
from sklearn.svm import SVC # support vector machines for classification

def specificity_score(y_true, y_pred):


tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
return tn / (tn+fp)

METRICS = {
"accuracy": make_scorer(accuracy_score),
"precision": make_scorer(precision_score, average='weighted'),
"recall": make_scorer(recall_score, average='weighted'),
"f1": make_scorer(f1_score, average='weighted'),
"AUC": make_scorer(roc_auc_score, needs_proba=True, multi_class='ovr',
average='weighted'),
"specificity": make_scorer(specificity_score),
"kappa": make_scorer(cohen_kappa_score)
}

X, y = df.drop("price_type", axis=1), df["price_type"]

2.3.2. Modelo gerado

• Regressão
o Cenário1 (todas com outliers)

Tabela 4 - Técnica de modelação regressão aplicada ao Cenário 1

Técnicas MAE MSE RMSE R2


Árvores de Decisão 22880.3615 7.128680e+09 71292.067247 0.589065

Naive Bayes 19711.841341 5.943120e+09 60773.705532 0.285163

Random Forest 13949.402096 4.972935e+09 54551.599223 0.333841

Vetor Machine 27184.063668 7.198234e+09 70758.530536 -0.045349

Redes Neuronais 22049.046445 5.974702e+09 60628.214177 0.313496

7
o Cenário 2 (todas sem outliers)

Tabela 5 - Técnica de modelação regressão aplicada ao Cenário 2

Técnicas MAE MSE RMSE R2


Árvores de Decisão 9252.812706 1.528815e+08 12325.089725 0.634636

Naive Bayes 9925.64672 1.972043e+08 14021.898223 0.524786

Random Forest 6144.589488 7.846130e+07 8806.882541 0.81296

Vetor Machine 16037.377387 4.352618e+08 20831.527072 -0.040507

Redes Neuronais 8788.400083 1.389079e+08 11741.555719 0.668316

o Cenário 3 (correlação com outliers)

Tabela 6 - Técnica de modelação regressão aplicada ao Cenário 3

Técnicas MAE MSE RMSE R2


Árvores de Decisão 9771.463369 1.703728e+08 13040.419066 0.557204

Naive Bayes 10458.226514 2.202289e+08 14823.850602 0.42705

Random Forest 7914.601306 1.290824e+08 11341.357988 0.664924

Vetor Machine 15411.438959 3.875293e+08 19678.534252 -0.006282


Redes Neuronais 9866.693387 1.653742e+08 12846.813871 0.570697

o Cenário 4 (correlação sem outliers)

Tabela 7 - Técnica de modelação regressão aplicada ao Cenário 4

Técnicas MAE Test_MSE RMSE R2


Árvores de Decisão 23067.978716 8.804754e+09 75717.526006 -1.663345

Naive Bayes 21144.126082 6.530048e+09 65940.020436 0.081629

Random Forest 19767.940514 6.630686e+09 67749.682751 -0.00729

Vetor Machine 27025.420321 7.193037e+09 70708.511698 -0.043042

Redes Neuronais 22119.175252 6.061847e+09 61184.473142 0.294912

8
• Classificação
o Cenário 1 (todas com outliers)

Tabela 8 - Técnica de modelação classificação aplicada ao Cenário 1

Técnicas accuracy precision recall f1 AUC kappa


Árvores 0.995014 0.995678 0.995014 0.994937 0.997455 0.994911
de
Decisão
Redes 0.083892 0.057501 0.083892 0.052535 0.781003 0.06505
Neuronais
Vetor 0.139689 0.100739 0.139689 0.100629 0.868399 0.120541
Machine
Naive 0.915491 0.925553 0.915491 0.91457 0.99916 0.913744
Bayes

o Cenário 2 (todas sem outliers)

Tabela 9 - Técnica de modelação classificação aplicada ao Cenário 2

Técnicas accuracy precision recall f1 AUC kappa


Árvores 0.990371 0.992286 0.990371 0.990152 0.995086 0.990169
de
Decisão
Redes 0.08207 0.052227 0.08207 0.050798 0.780659 0.06301
Neuronais
Vetor 0.095373 0.032807 0.095373 0.040554 0.834089 0.073521
Machine
Naive 0.907846 0.921632 0.907846 0.905826 0.999105 0.905905
Bayes

o Cenário 3 (correlação sem outliers)

Tabela 10 - Técnica de modelação classificação aplicada ao Cenário 3

Técnicas accuracy precision recall f1 AUC kappa


Árvores 0.991238 0.992546 0.991238 0.991015 0.995524 0.991056
de
Decisão
Redes 0.061366 0.025487 0.061366 0.028742 0.712655 0.041885
Neuronais
Vetor 0.118705 0.053299 0.118705 0.066291 0.878201 0.099366
Machine
Naive 0.930615 0.942624 0.930615 0.929045 0.999522 0.929175
Bayes

9
o Cenário 4 (correlação com outliers)

Tabela 11 - Técnica de modelação classificação aplicada ao Cenário 4

Técnicas accuracy precision recall f1 AUC kappa


Árvores de 0.995014 0.995678 0.995014 0.994937 0.997455 0.994911
Decisão
Redes 0.068909 0.031287 0.068909 0.033927 0.755667 0.049645
Neuronais
Vetor 0.165879 0.126587 0.165879 0.125487 0.888634 0.147324
Machine
Naive 0.93171 0.941018 0.93171 0.930941 0.999553 0.930298
Bayes

2.3.3. Descrição do Modelo

Tal como referido anteriormente, o grupo decidiu dividir em duas perspetivas; regression e
classification. Na regression o melhor modelo encontrado foi o Random Forest Regressor e na
classificação o melhor modelo encontrado foi a Decision Tree Classifier.

2.4. Rever Modelo

2.4.1. Revisão do Modelo

Não aplicável.

2.4.2. Revisão dos parâmetros usados

Não aplicável.

10
3. Evaluation
Segundo a metodologia CRISP-DM a Evaluation é a penúltima fase e tem como objetivo analisar
os impactos dos resultados dos modelos gerados da etapa anterior.

3.1. Avaliar os Resultados


Nesta fase, a equipa de trabalho vai avaliar qual o melhor cenário a ser usado e aquele que
melhor satisfaz o objetivo. Deste modo, é apresentada uma tabela que reúne todos os valores de cada
cenário.

• Regressão
Tabela 12 - Comparar e avaliar os resultados na Regressão

Modelo / Métricas C1 C2 C3 C4
MAE 22880.3615 9252.812706 9771.463369 23067.978716
Decision Tree MSE 7.128680e+09 1.528815e+08 1.703728e+08 8.804754e+09
Regressor RMSE 71292.067247 12325.089725 13040.419066 75717.526006
R2 -0.589065 0.634636 0.557204 -1.663345
MAE 19711.841341 9925.64672 10458.226514 21144.126082
MSE 5.943120e+09 1.972043e+08 2.202289e+08 6.530048e+09
Naive Bayes
RMSE 60773.705532 14021.898223 14823.850602 65940.020436
R2 0.285163 0.524786 0.42705 0.081629
MAE 13949.402096 6144.589488 7914.601306 19767.940514
Random
MSE 4.972935e+09 7.846130e+07 1.290824e+08 6.630686e+09
Forest
RMSE 54551.599223 8806.882541 11341.357988 67749.682751
Regressor
R2 0.333841 0.81296 0.664924 -0.00729
MAE 27184.063668 16037.377387 15411.438959 27025.420321
Vetor MSE 7.198234e+09 4.352618e+08 3.875293e+08 7.193037e+09
Machine RMSE 70758.530536 20831.527072 19678.534252 70708.511698
R2 -0.045349 -0.040507 -0.006282 -0.043042
MAE 22049.046445 8788.400083 9866.693387 22119.175252
Redes MSE 5.974702e+09 1.389079e+08 1.653742e+08 6.061847e+09
Neuronais RMSE 60628.214177 11741.555719 12846.813871 61184.473142
R2 0.313496 0.668316 0.570697 0.294912

11
• Classificação:
Tabela 13 - Comparar e avaliar os resultados na Classificação

Modelo / Métricas C1 C2 C3 C4
accuracy 0.995014 0.990371 0.991238 0.995014
precision 0.995678 0.992286 0.992546 0.995678
Árvore de recall 0.995014 0.990371 0.991238 0.995014
Decisão f1 0.994937 0.990152 0.991015 0.994937
AUC 0.997455 0.995086 0.995524 0.997455
kappa 0.994911 0.990169 0.991056 0.994911
accuracy 0.083892 0.08207 0.061366 0.068909
precision 0.057501 0.052227 0.025487 0.031287
Redes recall 0.083892 0.08207 0.061366 0.068909
Neuronais f1 0.052535 0.050798 0.028742 0.033927
AUC 0.781003 0.780659 0.712655 0.755667
kappa 0.06505 0.06301 0.041885 0.049645
accuracy 0.915491 0.907846 0.930615 0.93171
precision 0.925553 0.921632 0.942624 0.941018
Naive recall 0.915491 0.907846 0.930615 0.93171
Bayes f1 0.91457 0.905826 0.929045 0.930941
AUC 0.99916 0.999105 0.999522 0.999553
kappa 0.913744 0.905905 0.929175 0.930298
accuracy 0.139689 0.095373 0.118705 0.165879
precision 0.100739 0.032807 0.053299 0.126587
Vetor recall 0.139689 0.095373 0.118705 0.165879
Machine f1 0.100629 0.040554 0.066291 0.125487
AUC 0.868399 0.834089 0.878201 0.888634
kappa 0.120541 0.073521 0.099366 0.147324

3.1.1. Validação dos objetivos de Data Mining

Considerando os objetivos e critérios de sucesso do Data Mining definidos no início deste


projeto, e analisando o problema de Regressão, os cenários 1 e 4 resultam em modelos insatisfatórios
tendo em conta o nosso objetivo.

Quando comparamos os valores obtidos nos cenários 2 e 3, verificamos que possuem valores
satisfatórios e, portanto, admissíveis. Entre o cenário 2 e 3, conseguimos destacar o cenário 2 que
possui um valor mais baixo de MAE e não possui nenhum valor acima do que foi previamente definido,
encontrando-se mais próximos dos valores mencionados na definição de objetivos e critérios de
sucesso de data mining.

De uma forma a detalhar o que foi anteriormente referido, concluímos que o cenário 2
corresponde ao melhor cenário encontrado pelo grupo uma vez que os seus valores das várias métricas
se encontram, maior parte, abaixo dos valores mencionados na definição de objetivos e critérios de
sucesso de data mining.

12
Relativamente à técnica de modelação Regressão, verificamos que ao erro médio absoluto, a
equipa estipulou que erraria abaixo de 20% ao prever o preço dos carros. Desta forma, obtivemos um
erro de 6144 aproximadamente, que dividindo pelo preço médio, que é de 31751, obtemos 19 %,
aproximadamente, pelo que cumpre o critério estipulado.

No que diz respeito à métrica R ao quadrado, foi definido que estaria acima de 0.80 e, após a
fase de modelação, a equipa obteve um valor de 0.81296.

Quanto ao erro médio quadrático, definimos como valores ideais abaixo de 0.30, pelo que
conseguimos cumprir tendo ficado abaixo deste valor. Desta forma, obtivemos um erro de 8806
aproximadamente, que dividindo pelo preço médio, que é de 31751, obtemos 28 %, aproximadamente,
pelo que cumpre o critério estipulado.

Analisando agora a técnica de modelação Classificação, no modelo Decision Tree, verificamos


que para as várias métricas Accuracy, precision, recall, F1, AUC e kappa, definimos como objetivo atingir
valores acima de 0.95, pelo que ao analisar a tabela apresentada em cima conseguimos concluir que
obtivemos valores bastante bons, 0.99, estando estes sempre perto de 1 e desta forma, cumprem os
critérios para a classificação.

3.1.2. Validação dos objetivos e Critérios de Negócio

Considerando os objetivos e critérios de sucesso do negócio definidos no início deste projeto,


e analisando os resultados obtidos nas duas técnicas de modelação, podemos concluir que estes vão
ser cumpridos.

Como os modelos preveem o preço dos carros com métricas bastante positivas, os utilizadores
vão confiar mais na nossa plataforma, tornando-se a sua referência no que toca à compra/venda de
carros, com isto aumentamos a nossa taxa da utilização, uma vez que, as pessoas vão recomendar a
plataforma a outros.
Como a plataforma vai fornecer as melhores previsões de preços de automóveis, vamos gerar
grande valor para os utilizadores, que é um dos critérios de negócio mais importante, uma vez que, os
utilizadores tomam melhores decisões quando forem comprar/vender automóveis.

Outro objetivo de negócio é nos conseguirmos destacar em relação à concorrência, para tal
acreditamos que a nossa plataforma, baseada num modelo abrangente, que foi treinada incluindo todo
um espectro de preços de automóveis, dos mais baratos aos mais caros, distingue-se das demais. O
modelo vai continuar sempre a ser treinado, uma vez que os utilizadores após a venda/compra do
automóvel submetem na plataforma o valor real da compra/venda. Com isto o sistema não permanece
estático no tempo e acompanha as variações no mercado de automóveis, com valores atuais.

3.1.3. Aprovação do Modelo

Após esta comparação dos valores, provenientes das melhores métricas utilizadas para cada
um dos cenários, é possível concluir que tanto o cenário 1 como o cenário 4 vão ser descartados, uma
vez que os seus valores de Erro Médio Absoluto se encontram muito elevados, relativamente ao que
foi definido.

13
A equipa concluiu que o cenário 2 apresenta valores que satisfazem os objetivos da equipa da
melhor maneira, pois os seus valores, nas várias métricas apresentadas, são menores do que os dos
restantes cenários e se encontram mais próximos dos valores mencionados na definição de objetivos e
critérios de sucesso de data mining.

3.2. Rever o Processo

3.2.1. Revisão do Processo

Tal como referimos anteriormente, o grupo decidiu abordar o problema usando duas
perspetivas diferentes para aprofundarmos o conhecimento nas duas técnicas: regression e
classification.

Em primeiro lugar, sob a perspetiva da técnica de modelação regression, concluímos que de


todos os modelos (Decision Tree Regressor, Naive Bayes, Vetor Machine, Redes Neuronais e Random
Forest Regressor), o melhor era o Random Forest Regressor. Aquilo que nos permitiu chegar a este
resultado foi a comparação das métricas MAE, MSE, RMSE e R2. De acordo com o objetivo do negócio,
estimar o preço dos automóveis, consideramos que o melhor modelo era aquele cujas métricas davam
um valor menor, pois esse valor corresponde à diferença entre o valor estimado e o valor real.

Em segundo lugar, sob a perspetiva da técnica de modelação classification, concluímos que de


todos os modelos (Decision Tree Classifier, MLPClassifier, GaussianNB e SVM), o melhor era o Decision
Tree Classifier. Aquilo que nos permitiu chegar a esta conclusão foi a comparação das diferentes
métricas (accuracy, precision, recall, f1, AUC, specificity, kappa) nomeadamente a F1. Esta métrica
permitiu-nos identificar o melhor cenário, sendo este aquele cujo valor estaria mais próximo de 1,
através da comparação entre os diversos.

3.3. Determinar os próximos passos

3.3.1. Lista de Possíveis Ações

Tendo em conta todos os modelos obtidos, o grupo considerou que era ainda possível otimizar
alguns dos cenários. Para isso, seria necessário realizar uma análise mais precisa dos cenários, através
da utilização de diferentes ferramentas que permitissem obter uma melhor qualidade dos dados. Esta
melhoria na qualidade ia possibilitar a um aumento de soluções ideias.

3.3.2. Decisões

Obter mais dados fiáveis sobre viaturas, as suas características bem como o preço associado.

14

Você também pode gostar