APLICAÇÃO DE MACHINE LEARNING PARA PREDIÇÃO DE …...Projeto final apresentado como...
Transcript of APLICAÇÃO DE MACHINE LEARNING PARA PREDIÇÃO DE …...Projeto final apresentado como...
UNIVERSIDADE FEDERAL FLUMINENSE – UFF
ESCOLA DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA DE PRODUÇÃO
GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO
NITERÓI
Julho / 2020
APLICAÇÃO DE MACHINE LEARNING PARA
PREDIÇÃO DE MANUTENÇÃO DE MÁQUINAS
EM EMPRESA DE TRANSPORTE E LOGÍSTICA
DE COMBUSTÍVEIS
AUTOR: GUSTAVO PEREIRA LUCCHETTI
ORIENTADOR: PROF. DR. VALDECY PEREIRA
2
GUSTAVO PEREIRA LUCCHETTI
APLICAÇÃO DE MACHINE LEARNING PARA PREDIÇÃO DE
MANUTENÇÃO DE MÁQUINAS EM EMPRESA DE TRANSPORTE E
LOGÍSTICA DE COMBUSTÍVEIS
Projeto final apresentado como pré-requisito
parcial à obtenção do título de bacharel em
Engenharia de Produção pela Universidade
Federal Fluminense.
Orientador: Prof. Dr. Valdecy Pereira
NITERÓI
2020
3
4
GUSTAVO PEREIRA LUCCHETTI
APLICAÇÃO DE MACHINE LEARNING PARA PREDIÇÃO DE
MANUTENÇÃO DE MÁQUINAS EM EMPRESA DE TRANSPORTE E
LOGÍSTICA DE COMBUSTÍVEIS
Projeto final apresentado como pré-requisito
parcial à obtenção do título de bacharel em
Engenharia de Produção pela Universidade
Federal Fluminense.
Aprovado em 03 de julho de 2020
BANCA EXAMINADORA
_______________________________________________________
Prof. Dr. Valdecy Pereira – Orientador
Universidade Federal Fluminense
_______________________________________________________
Prof. Dr. Ricardo Bordeaux Rego
Universidade Federal Fluminense
_______________________________________________________
Prof. Dr. Gilson Brito Alves Lima
Universidade Federal Fluminense
5
RESUMO
A aplicação da ciência de dados para resolução de problemas de
negócios teve relevante crescimento diante do aumento do volume de dados
disponibilizados por usuários, clientes e empresas. A partir desse contexto e da
necessidade que as companhias possuem de otimizar suas atividades, incluindo
a manutenção de seu maquinário, o presente trabalho teve como objetivo
elaborar um algoritmo que consiga predizer se uma manutenção será realizada
dentro do prazo definido ou não, além de analisar os principais atributos das
máquinas e manutenções registradas dentro de uma empresa de transporte e
logística de combustíveis. Por meio de técnicas de redução de dimensionalidade,
o Truncated SVD, e de classificação de dados, o K - Nearest Neighbours, e da
coleta e seleção de dados de registros das manutenções dessa empresa, o
algoritmo foi construído e testado com variações da base de dados original e
diferentes valores dos parâmetros do KNN. Após os testes, os resultados obtidos
foram comparados pelo cálculo de indicadores de avaliação escolhidos:
acurácia, precisão, recall, F1 Score, curva ROC (Receive Operator
Characteristic) e AUC (Area Under Curve). O resultado do melhor modelo foi
considerado satisfatório para a predição de futuras manutenções, e a análise das
variáveis selecionadas evidenciou características relacionadas às manutenções
que sofrem atraso onde a empresa pode atuar para evitar novos atrasos,
mudando a alocação de recursos quando necessário.
Palavras-chave: ciência de dados, manutenção, aprendizado de máquina,
algoritmo, classificação.
6
ABSTRACT
The application of data science to solve business problems has grown
significantly due to the increase in the volume of data made available by users,
customers and companies. Based on this context and the need that companies
have to optimize their activities, including the maintenance of their machinery, the
present work aimed to develop an algorithm that can predict whether a
maintenance will be carried out within its defined period or not, in addition to
analyzing the main attributes of the machines and maintenance registered within
a fuel transportation and logistics company. Through dimensionality reduction
techniques, Truncated SVD, and data classification, K - Nearest Neighbors, and
the collection and selection of data from the maintenance records of this
company, the algorithm was built and tested with variations of the original dataset
and different values of the KNN parameters. After the tests, the results obtained
were compared by calculating the chosen evaluation indicators: accuracy,
precision, recall, F1 Score, ROC (Receive Operator Characteristic) curve and
AUC (Area Under Curve). The result of the best model was considered
satisfactory for the prediction of future maintenance, and the analysis of the
selected variables showed characteristics related to maintenance that are
delayed where the company can act to avoid further delays, changing the
allocation of resources when necessary.
Keywords: data science, maintenance, machine learning, algorithm,
classification.
7
LISTA DE FIGURAS
Figura 1 - SVD ............................................................................................................ 16
Figura 2 - Thin SVD .................................................................................................... 22
Figura 3 - Compact SVD ............................................................................................. 23
Figura 4 - Truncated SVD ........................................................................................... 23
Figura 5 - Gráfico de exemplo de pontos antes da aplicação do KNN ........................ 24
Figura 6 - Gráfico de exemplo após aplicação do KNN para k = 1 .............................. 25
Figura 7 - Gráfico de exemplo após aplicação do KNN para k = 3 .............................. 25
Figura 8 - Matriz de Confusão ..................................................................................... 26
Figura 9 - Curva ROC ................................................................................................. 28
Figura 10 - Histograma da variável Valor de Compra .................................................. 31
Figura 11 - Distribuição de valores da variável Tipo de Manutenção .......................... 32
Figura 12 - Número de manutenções dentro e fora do prazo por tipo de manutenção 32
Figura 13 - Distribuição de valores da variável Tipo de Máquina ................................ 33
Figura 14 - Número de manutenções dentro e fora do prazo por tipo de máquina ...... 34
Figura 15 - Número de manutenções dentro e fora do prazo pela data de emissão ... 35
Figura 16 - Distribuição de valores da variável Centro de Trabalho ............................ 36
Figura 17 - Distribuição de valores da variável Criticidade .......................................... 37
Figura 18 - Número de manutenções fora e dentro do prazo por criticidade da
manutenção ................................................................................................................ 37
Figura 19 - Número de manutenções dentro e fora do prazo pelo prazo de conclusão
................................................................................................................................... 38
Figura 20 - Número de manutenções dentro e fora do prazo pela data de fim da
manutenção ................................................................................................................ 39
Figura 21 - Visualização dos dados após aplicação do Truncated SVD para t = 2 ...... 42
Figura 22 - Visualização dos dados após aplicação do Truncated SVD para t = 3 ...... 42
Figura 23 - Matriz de Confusão da base de teste do modelo ...................................... 47
Figura 24 - Curva ROC da base de teste do modelo................................................... 48
8
SUMÁRIO
1. INTRODUÇÃO .................................................................................................. 10
1.1. CONTEXTUALIZAÇÃO DO PROBLEMA ................................................................... 10
1.2. A TEMÁTICA CIÊNCIA DE DADOS.......................................................................... 11
1.3. OBJETIVO GERAL ................................................................................................. 12
1.4. OBJETIVOS ESPECÍFICOS ...................................................................................... 12
1.5. LIMITAÇÕES DO TRABALHO ................................................................................. 13
1.6. ESTRUTURA DO TRABALHO ................................................................................. 13
2. REVISÃO DA LITERATURA ................................................................................. 15
2.1. SVD .................................................................................................................... 15
2.1.1 Thin SVD .................................................................................................................................... 22
2.1.2 Compact SVD ............................................................................................................................ 22
2.1.3 Truncated SVD .......................................................................................................................... 23
2.2. ALGORITMO KNN ................................................................................................ 24
2.3. INDICADORES DE AVALIAÇÃO ............................................................................. 26
2.3.1. Acurácia ............................................................................................................................ 26
2.3.2. Precisão ............................................................................................................................ 26
2.3.3. Recall ................................................................................................................................ 27
2.3.4. F1 Score ............................................................................................................................ 27
2.3.5. Curva ROC ........................................................................................................................ 28
2.3.6. AUC ................................................................................................................................... 29
3. METODOLOGIA ................................................................................................ 29
3.1. ENTENDIMENTO DO NEGÓCIO ............................................................................ 29
3.2. COLETA DE DADOS .............................................................................................. 29
3.3. TRATAMENTO E ANÁLISE DOS DADOS ................................................................. 30
3.3.1. Valor da compra para manutenção .................................................................................. 30
3.3.2. Tipo de manutenção ........................................................................................................ 31
3.3.3. Tipo de máquina ............................................................................................................... 33
3.3.4. Data de emissão da nota .................................................................................................. 34
3.3.5. Código do centro de trabalho .......................................................................................... 35
3.3.6. Criticidade ........................................................................................................................ 36
3.3.7. Prazo de conclusão ........................................................................................................... 38
3.3.8. Data de fim da manutenção ............................................................................................. 39
3.4. PRÉ-PROCESSAMENTO DOS DADOS ..................................................................... 39
3.5. REDUÇÃO DE DIMENSIONALIDADE DA BASE ........................................................ 41
3.6. APLICAÇÃO DO MODELO DE CLASSIFICAÇÃO ....................................................... 43
3.6.1. Base de dados completa .................................................................................................. 43
3.6.2. Projeção 3D ...................................................................................................................... 43
3.6.3. Projeção 2D ...................................................................................................................... 44
9
3.7. ESCOLHA DO MODELO FINAL............................................................................... 44
4. RESULTADOS DO MODELO ............................................................................... 46
4.1. MATRIZ DE CONFUSÃO ....................................................................................... 46
4.1.1. Acurácia, Precisão, Recall e F1 ......................................................................................... 47
4.1.2. Curva ROC e AUC .............................................................................................................. 47
5. CONCLUSÃO .................................................................................................... 48
6. REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................... 52
7. APÊNDICES ...................................................................................................... 54
7.1. TABELA DE DADOS .............................................................................................. 54
7.2. CÓDIGO PYTHON ................................................................................................ 69
10
1. INTRODUÇÃO
1.1. CONTEXTUALIZAÇÃO DO PROBLEMA
A manutenção de maquinário é uma atividade indispensável na rotina de
uma companhia, que deve estabelecer em que momento e com que frequência
realizar. Segundo Rebai et al (2013), as operações de manutenção preventiva
são essenciais para manter os equipamentos de processamento em boas
condições de trabalho. Em várias situações industriais, cada operação de
manutenção deve ser realizada após um prazo otimista e antes de um prazo
pessimista para garantir um custo mínimo de manutenção.
Considerando que uma empresa deve buscar atingir bom desempenho
em suas operações, o processo de manutenção de máquinas possui alta
relevância, visto que existe relação direta entre o mesmo e os objetivos de
desempenho definidos por Slack et al (1993).
1. Qualidade: para garantir baixos números de defeito, refugo e tempo
entre falhas, um equipamento precisa ser devidamente manutenido
de acordo com suas características.
2. Rapidez: problemas em uma máquina que não passou por sua
manutenção podem gerar maior tempo de ciclo, além de possíveis
atrasos na entrega do produto final.
3. Confiabilidade: a maior possibilidade de falhas no processo
produtivo devido ao mau gerenciamento da manutenção das
máquinas gera incerteza quanto à quantidade de estoque que uma
empresa terá em relação a sua demanda. Ademais, como
consequência da menor rapidez nesse caso, a confiabilidade
também é afetada dado que os clientes podem não receber seu
produto no prazo previamente definido.
4. Flexibilidade: o funcionamento adequado de uma máquina está
diretamente relacionado com sua capacidade máxima de produção
para que possa se adequar à demanda existente, também a um
menor tempo de setup, essencial para que a produção seja mais
flexível.
11
5. Custo: caso a manutenção de um equipamento não seja feita no
tempo certo, ele pode quebrar e parar a produção por completo,
diminuindo a produtividade e, consequentemente, aumentando o
custo por produto, além do custo caso se torne inviável atender a
demanda.
1.2. A TEMÁTICA CIÊNCIA DE DADOS
Nos últimos quinze anos, foram realizados amplos investimentos em
infraestrutura de negócios, o que melhorou a capacidade de coletar dados dentro
de uma empresa. Atualmente, praticamente todos os aspectos dos negócios
estão abertos à coleta de dados e muitas vezes são instrumentados para isso:
operações, fabricação, gerenciamento da cadeia de suprimentos,
comportamento dos clientes, desempenho de campanhas de marketing,
procedimentos de fluxo de trabalho e assim por diante. Ao mesmo tempo, as
informações agora estão amplamente disponíveis em eventos externos, como
tendências de mercado, notícias da indústria e movimentações de concorrentes.
Essa ampla disponibilidade de dados levou a um crescente interesse em
métodos para extrair informações e conhecimentos úteis dos dados - o domínio
da ciência de dados (PROVOST ET AL, 2013).
Uma importante pergunta deve ser feita quando se trata desse assunto: o
que é, de fato, ciência de dados? Provost e Fawcett (2013) dizem que é difícil
definir exatamente o que é. De acordo com eles, a ciência de dados envolve
princípios, processos e técnicas para entender fenômenos através da análise
(automatizada) de dados. O objetivo final da ciência de dados é melhorar a
tomada de decisão, já que isso geralmente é de grande interesse para as
empresas.
Segundo McAfee e Brynjolfsson (2012), decisões baseadas em dados
tendem a ser melhores decisões. Os líderes abraçarão esse fato ou ser
substituídos por outros que as fazem. Setor após setor, as empresas que
descobrem como combinar conhecimento de domínio com ciência de dados se
destacarão de suas concorrentes.
12
1.3. OBJETIVO GERAL
Dados os temas abordados, esse trabalho teve como objetivo elaborar,
por meio de dados de manutenção de máquinas, um modelo para predizer se a
manutenção de uma máquina será realizada dentro do prazo desejado de acordo
com as suas características, de forma a não prejudicar a produtividade de uma
empresa de transporte e logística de combustíveis.
Posteriormente, foram avaliadas as variáveis utilizadas pelo modelo para
determinar o cumprimento ou não do prazo de manutenção de acordo com sua
importância. Com essa análise, é possível compreender o que, de fato, leva uma
máquina a ser manutenida com atraso e, consequentemente, atuar para evitar
que futuros atrasos ocorram.
1.4. OBJETIVOS ESPECÍFICOS
Para atingir o objetivo geral do trabalho, foram definidos alguns objetivos
específicos dentro de suas etapas de acordo com o resultado esperado de cada
uma delas. Esses objetivos são:
1. Selecionar as variáveis a serem utilizadas pelo algoritmo;
2. Analisar as variáveis para compreender as características e o
comportamento delas;
3. Gerar visualizações dos dados para, posteriormente, visualizar o
resultado do modelo;
4. Escolher um modelo que obtenha resultados satisfatórios em relação
aos indicadores escolhidos de avaliação;
5. Realizar a análise de sensibilidade do modelo;
6. Analisar os resultados da classificação, a fim de entender o que, de
fato, leva uma manutenção a ser realizada fora do seu prazo.
13
1.5. LIMITAÇÕES DO TRABALHO
Considerando que o modelo desenvolvido tem como objetivo predizer um
evento, não é possível afirmar que seu resultado será sempre condizente com a
realidade, visto que ele não leva em consideração todos os fatores internos e
externos, qualitativos e quantitativos que possam influenciar no prazo de
manutenção de uma máquina. Portanto, o modelo deve ser usado como uma
ferramenta de auxílio para tomada de decisões relacionadas ao trabalho de
manutenção na empresa, por meio da interpretação dos resultados produzidos.
Outro fator que possui influência direta no trabalho é o tamanho da
amostra de dados utilizada. Em um modelo preditivo, o volume de dados é de
suma importância para que o resultado esteja próximo do esperado. No entanto,
a empresa que forneceu os dados solicitou que fosse utilizada apenas uma
amostra do que foi fornecido. Após unir os diferentes arquivos e tratar os dados,
a base obtida possui 683 registros, o equivalente a 0,17% do maior arquivo (BW),
que possui 410.209 registros.
No desenvolvimento do algoritmo, houve também uma limitação em
relação ao modelo escolhido. Existem diversos modelos de classificação além
do KNN, como Decision Tree, Random Forest, SVM e Regressão Logística, que
utilizam outros parâmetros e classificam os dados de outras formas, podendo
obter resultados melhores ou piores dependendo dos dados apresentados. O
mesmo ocorre para a redução de dimensionalidade do dataset. Outros métodos,
como PCA e t-SNE, possuem o mesmo objetivo, também podendo ser aplicados
nessa situação. Para trabalhos futuros, deve se considerar testar outros métodos
e comparar os resultados com os do modelo final proposto.
1.6. ESTRUTURA DO TRABALHO
O presente trabalho está estruturado em 5 capítulos, sendo eles:
14
• Capítulo 1: é o capítulo de introdução, contendo uma contextualização
do tema abordado, o objetivo geral, os objetivos específicos e as
limitações do projeto.
• Capítulo 2: contém a revisão da literatura, onde são descritos os
métodos utilizados de acordo com o trabalho de outros autores.
• Capítulo 3: descrição da metodologia empregada para o
desenvolvimento do modelo.
• Capítulo 4: capítulo para demonstrar os resultados do modelo final.
• Capítulo 5: apresenta a conclusão da aplicação do modelo e dos
resultados obtidos, além da possibilidade de continuações para o
trabalho.
Após o capítulo de conclusão, estão as referências utilizadas ao longo do
projeto, a base de dados e o código em Python que aplica o modelo.
15
2. REVISÃO DA LITERATURA
Neste capítulo são abordados os métodos utilizados no trabalho para
elaborar, calibrar e avaliar os resultados do algoritmo de acordo com estudos
prévios. São eles: Truncated SVD, para redução de dimensionalidade de
matrizes; KNN, para a classificação dos dados; Acurácia, Precisão, Recall, F1
Score, Curva ROC e AUC para comparar os resultados do modelo com
diferentes parâmetros.
2.1. SVD
Segundo Baker (2005), o SVD (Singular Value Decomposition) pode ser
observado a partir de três pontos de vista mutuamente compatíveis. Por um lado,
pode ser visto como um método para transformar variáveis correlacionadas em
um conjunto de relações não correlacionadas que melhor expõem os vários
relacionamentos entre os dados. Ao mesmo tempo, o SVD é um método para
identificar e ordenar as dimensões ao longo dos quais os pontos exibem a maior
variação. Isso está relacionado à terceira maneira de ver o SVD, que depois de
identificado onde há maior variação, é possível encontrar a melhor aproximação
dos pontos originais usando menos dimensões. Portanto, o SVD pode ser visto
como um método para redução dimensionalidade de dados.
O SVD é baseado em um teorema da álgebra linear que diz que uma
matriz retangular 𝐴 pode ser decomposta no produto de três matrizes - uma
matriz ortogonal 𝑈, uma matriz diagonal 𝑆 e a transposição de uma matriz
ortogonal 𝑉. O teorema apresentado dessa forma:
𝐴𝑚𝑥𝑛 = 𝑈𝑚𝑥𝑚 𝑆𝑚𝑥𝑛 𝑉𝑇𝑛𝑥𝑛 (1)
onde 𝑚 ≫ 𝑛, 𝑈𝑇𝑈 = 𝐼, 𝑉𝑇𝑉 = 𝐼, sendo 𝐼 a matriz identidade; as colunas de 𝑈 são
autovetores ortonormais de 𝐴𝐴𝑇, as colunas de 𝑉 são autovetores ortonormais
de 𝐴𝑇𝐴 e 𝑆 é uma matriz diagonal contendo as raízes quadradas dos autovalores
de U ou V em ordem decrescente, contendo apenas valores maiores ou iguais a
0.
16
Figura 1 - SVD
Para auxiliar no entendimento da aplicação do SVD, Baker (2005) utiliza
o exemplo a seguir.
Considerando uma matriz
𝐴 = [3 1 1
−1 3 1]
Para encontrar 𝑈, primeiro deve-se encontrar 𝐴𝐴𝑇. A matriz transposta 𝐴𝑇 é
𝐴𝑇 = [3 −11 31 1
]
Então
𝐴𝐴𝑇 = [3 1 1
−1 3 1] [
3 −11 31 1
] = [11 11 11
]
Em seguida, é necessário encontrar os autovalores e os autovetores
correspondentes do 𝐴𝐴𝑇. Os autovetores de uma matriz são definidos pela
equação 𝐴�⃗� = 𝜆�⃗�, e aplicá-la à matriz 𝐴𝐴𝑇 resulta em
[11 11 11
] [𝑥1
𝑥2] = 𝜆 [
𝑥1
𝑥2]
Que pode ser reescrito pelas equações
11𝑥1 + 𝑥2 = 𝜆𝑥1 (2)
𝑥1 + 11𝑥2 = 𝜆𝑥2 (3)
17
E rearranjado para chegar a
(11 − 𝜆)𝑥1 + 𝑥2 = 0 (4)
𝑥1 + (11 − 𝜆)𝑥2 = 0 (5)
Chega-se ao valor de 𝜆 igualando o determinante da matriz de coeficientes a
zero,
|(11 − 𝜆) 1
1 (11 − 𝜆)| = 0
De forma que
(11 − 𝜆)(11 − 𝜆) − 1𝑥1 = 0 (6)
(𝜆 − 10)(𝜆 − 12) = 0
𝜆 = 10, 𝜆 = 12
Dá os dois autovalores 𝜆 = 10, 𝜆 = 12. Substituindo 𝜆 nas equações 4 e 5,
encontra-se os autovetores. Para 𝜆 = 10, tem-se
(11 − 10)𝑥1 + 𝑥2 = 0
𝑥1 = −𝑥2
o que é verdadeiro para muitos valores, então é escolhido 𝑥1 = 1 e,
consequentemente, 𝑥1 = −1, chegando ao autovetor [1, −1] correspondente ao
autovalor λ = 10. Para λ = 12:
(11 − 12)𝑥1 + 𝑥2 = 0
𝑥1 = 𝑥2
e pela mesma razão de antes, considera-se 𝑥1 = 1 e 𝑥2 = 1. Agora, para λ = 12,
o autovetor é [1, 1]. Esses autovetores se tornam colunas em uma matriz
ordenada pelo tamanho do autovalor correspondente. Em outras palavras, o
autovetor do maior autovalor é a primeira coluna, o autovetor do segundo maior
autovalor é a segunda coluna e assim por diante até o autovetor do menor
autovalor como a última coluna da matriz. Na matriz abaixo, o autovetor para λ
= 12 é a primeira coluna e o autovetor para λ = 10 é a segunda.
18
[1 11 −1
]
Finalmente, a matriz deve ser convertida em uma matriz ortogonal, que é feito
aplicando o processo de ortonormalização de Gram-Schmidt para as colunas,
começando por �⃗�1.
�⃗�1 =
�⃗�1
|�⃗�1|=
[1,1]
√12 + 12=
[1,1]
√2= [
1
√2,1
√2]
(7)
A partir daí,
�⃗⃗⃗�2 = �⃗�2 − �⃗�1 ∙ �⃗�2 ∗ �⃗�1 =
[1, −1] − [1
√2,1
√2] ∙ [1, −1] ∗ [
1
√2,1
√2] =
[1, −1] − 0 ∗ [1
√2,1
√2] = [1,−1] − [0,0] = [1,−1]
(8)
Normalizando o vetor
�⃗�2 =�⃗⃗⃗�2
|�⃗⃗⃗�2|= [
1
√2,−1
√2] (9)
Tem-se a matriz
𝑈 =
[ 1
√2
1
√21
√2
−1
√2]
O cálculo de 𝑉 é similar. 𝑉 é baseado em 𝐴𝑇𝐴, então
𝐴𝑇𝐴 = [3 −11 31 1
] [3 1 1
−1 3 1] = [
10 0 20 10 42 4 2
]
Os autovalores são encontrados por
[10 0 20 10 42 4 2
] [
𝑥1
𝑥2
𝑥3
] = 𝜆 [
𝑥1
𝑥2
𝑥3
]
19
Que representa o sistema de equações
10𝑥1 + 2𝑥3 = 𝜆𝑥1 (10)
10𝑥2 + 4𝑥3 = 𝜆𝑥2 (11)
2𝑥1 + 4𝑥2 + 2𝑥3 = 𝜆𝑥3 (12)
Que pode ser reescrito como
(10 − 𝜆)𝑥1 + 2𝑥3 = 0 (13)
(10 − 𝜆)𝑥2 + 4𝑥3 = 0 (14)
2𝑥1 + 4𝑥2 + (2 − 𝜆)𝑥3 = 0 (15)
E é resolvido por
|
(10 − 𝜆) 0 20 (10 − 𝜆) 42 4 (2 − 𝜆)
| = 0
E resulta nos autovalores de 𝐴𝑇𝐴, 𝜆 = 0, 𝜆 = 10, 𝜆 = 12. Substituindo 𝜆 nas
equações 13, 14 e 15, encontram-se os autovetores. Para 𝜆 = 12, tem-se
−2𝑥1 + 2𝑥3 = 0 (16)
−2𝑥2 + 4𝑥3 = 0 (17)
2𝑥1 + 4𝑥2 + −10𝑥3 = 0 (18)
Que não possui apenas uma resposta. Então, utiliza-se 𝑥1 = 1
𝑥1 = 1, 𝑥2 = 2, 𝑥3 = 1
Para 𝜆 = 12, o autovetor é �⃗�1 = [1,2,1]. Para 𝜆 = 10,
20
𝑥3 = 0
𝑥1 = −2𝑥2
Utilizando 𝑥1 = 2, o autovetor é �⃗�2 = [2,−1,0]. Finalmente, para 𝜆 = 0,
10𝑥1 + 2𝑥3 = 0 (19)
10𝑥2 + 4𝑥3 = 0 (20)
2𝑥1 + 4𝑥2 + 2𝑥3 = 0 (21)
Que não possui apenas uma resposta. Então, é utilizado 𝑥1 = 1, de forma que
𝑥1 = 1, 𝑥2 = 2, 𝑥3 = −5
O autovetor de 𝜆 = 0 é �⃗�3 = [1,2, −5]. Ordenando �⃗�1, �⃗�2 e �⃗�3 como colunas em
uma matriz de acordo com seus respectivos autovalores, encontra-se
[1 2 12 −1 21 0 −5
]
Que, pelo processo de ortonormalização de Gram-Schmidt, é convertida em uma
matriz ortonormal, começando por �⃗�1.
�⃗�1 =
�⃗�1
|�⃗�1|= [
1
√6,2
√6,1
√6] (22)
A partir daí,
�⃗⃗⃗�2 = �⃗�2 − �⃗�1 ∙ �⃗�2 ∗ �⃗�1 = [2,−1,0] (23)
�⃗�2 =
�⃗⃗⃗�2
|�⃗⃗⃗�2|= [
2
√5,−1
√5, 0]
(24)
Por fim,
�⃗⃗⃗�3 = �⃗�3 − �⃗�1 ∙ �⃗�3 ∗ �⃗�1 − �⃗�2 ∙ �⃗�3 ∗ �⃗�2 = [1,2,−5] (25)
21
�⃗�3 =
�⃗⃗⃗�3
|�⃗⃗⃗�3|= [
1
√30,
2
√30,−5
√30]
(26)
Encontrando a matriz
𝑉 =
[ 1
√6
2
√5
1
√302
√6
−1
√5
2
√301
√60
−5
√30]
E sua transposta
𝑉𝑇 =
[
1
√6
2
√6
1
√62
√5
−1
√50
1
√30
2
√30
−5
√30]
Para 𝑆, as raízes quadradas dos autovalores diferentes de zero (𝜆 = 12, 𝜆 = 10)
são utilizadas para preencher a diagonal da matriz em ordem decrescente, e os
outros valores da matriz são zero. Os autovalores diferentes de zero de U e V
são sempre os mesmos, por isso, não importa de qual matriz retirar. Para que 𝑆
tenha as dimensões adequadas para permitir a multiplicação entre U e 𝑉𝑇, são
adicionadas colunas ou linhas apenas com zero. Dessa forma
𝑆 = [√12 0 0
0 √10 0]
𝐴𝑚𝑥𝑛 = 𝑈𝑚𝑥𝑚 𝑆𝑚𝑥𝑛 𝑉𝑇𝑛𝑥𝑛 =
[ 1
√2
1
√21
√2
−1
√2]
[√12 0 0
0 √10 0]
[
1
√6
2
√6
1
√62
√5
−1
√50
1
√30
2
√30
−5
√30]
= [3 1 1
−1 3 1]
22
Segundo Demmel et al (2005), existem versões reduzidas do SVD que
podem ser calculadas. Seja 𝑈𝑡 = [𝑢1, … , 𝑢𝑡] uma matriz mxt dos primeiros t
vetores singulares à esquerda, 𝑉𝑡 = [𝑣1, … , 𝑣𝑡] uma matriz txn dos primeiros t
vetores singulares à direita e 𝑆𝑡 = 𝑑𝑖𝑎𝑔(𝜎1, … , 𝜎𝑡) uma matriz txt dos primeiros t
valores singulares. Então podem ser feitas as seguintes definições.
2.1.1 Thin SVD
O Thin SVD de 𝐴 é definido por 𝐴 = 𝑈𝑛 𝑆𝑛 𝑉𝑇𝑛. O Thin SVD é muito menor para
armazenar e mais rápido para calcular que o SVD completo quando 𝑛 ≪ 𝑚.
Figura 2 - Thin SVD
2.1.2 Compact SVD
𝐴 = 𝑈𝑟 𝑆𝑟 𝑉𝑇
𝑟 é o Compact SVD de 𝐴, onde r é o número de valores singulares
diferentes de 0. O Compact SVD é muito menor para armazenar e mais rápido
para calcular que o Thin SVD quando 𝑟 ≪ 𝑛.
23
Figura 3 - Compact SVD
2.1.3 Truncated SVD
𝐴𝑡 = 𝑈𝑡 𝑆𝑡 𝑉𝑇
𝑡 é o Truncated SVD de rank-t de 𝐴, em que 𝑡 < 𝑟. Hansen
(1987) diz que, para se encontrar o Truncated SVD, aproxima-se a matriz A com
uma 𝐴𝑡 de classificação inferior t e ignora-se os componentes do lado direito
correspondentes aos componentes ignorados de 𝐴. Ou seja, 𝐴𝑡 é uma matriz
próxima de 𝐴 em que os 𝑛 − 𝑡 menores valores singulares de 𝐴 são ignorados.
No presente trabalho, o Truncated SVD foi aplicado à base de dados de
81 colunas, utilizando 𝑡 = 2 e 𝑡 = 3, e gerando matrizes com menor número de
dimensões, de forma a permitir a visualização dos dados e utilizá-las na
aplicação do modelo a fim de comparar os resultados e encontrar a melhor forma
de aplicá-lo.
Figura 4 - Truncated SVD
24
2.2. ALGORITMO KNN
O algoritmo KNN (k-nearest neighbors) é um algoritmo de aprendizado de
máquina simples. A ideia geral é relativamente simples: calcule a distância entre
um ponto A e todos os outros pontos, encontre os k pontos mais próximos a ele
e depois conte quantos desses k pontos pertencem a cada classificação. O ponto
A receberá a classificação com maior número de pontos. (SUN ET AL, 20 18).
No exemplo a seguir, existem oitos pontos classificados como 0 ou 1 e
um ponto A (4, 4) ainda não classificado. A partir do KNN, dependendo do valor
de k escolhido, a classificação desse ponto poderá variar.
Figura 5 - Gráfico de exemplo de pontos antes da aplicação do KNN
Para 𝑘 = 1, é selecionado apenas o primeiro ponto mais próximo de A –
o ponto (5, 5) – que possui classificação 0. Logo, a classificação de A será a
mesma.
25
Figura 6 - Gráfico de exemplo após aplicação do KNN para k = 1
No caso de 𝑘 = 3, são selecionados os três pontos mais próximos de A –
(5, 5), (4, 2) e (2, 4). Desses três pontos, dois são classificados como 1 e apenas
um como 0. Portanto, a classificação de A será 0 nesse caso.
Figura 7 - Gráfico de exemplo após aplicação do KNN para k = 3
26
2.3. INDICADORES DE AVALIAÇÃO
De acordo com Davis e Goadrich (2006), em um problema de decisão
binária, um modelo de classificação rotula dados como positivos ou negativos. A
decisão feita pelo classificador pode ser representada em uma estrutura
conhecida como matriz de confusão ou tabela de contingência. A matriz de
confusão tem quatro categorias: verdadeiros positivos (true positives) são dados
rotulados corretamente como positivos. Os falsos positivos (false positives) se
referem a dados negativos incorretamente rotulados como positivos.
Verdadeiros negativos (true negatives) correspondem a negativos rotulados
corretamente como negativos. Finalmente, os falsos negativos (false negatives)
se referem a exemplos positivos incorretamente rotulados como negativos.
Figura 8 - Matriz de Confusão
Por meio da matriz de confusão, indicadores podem ser calculados para
avaliar o resultado do modelo.
2.3.1. Acurácia
A acurácia é a relação entre o total de dados preditos corretamente, ou
seja, verdadeiros positivos e verdadeiros negativos, com o total de valores
preditos. Portanto, seu resultado representa, percentualmente, quantas vezes o
modelo predisse o valor real na amostra de dados utilizada.
𝐴𝑐𝑢𝑟á𝑐𝑖𝑎 =
𝑇𝑃 + 𝑇𝑁
𝑇𝑃 + 𝐹𝑃 + 𝐹𝑁 + 𝑇𝑁 (27)
2.3.2. Precisão
Positivo Negativo
Positivo True Positive (TP)False Positive
(FP)
NegativoFalse Negative
(FP)
True Negative
(TN)
Predito
Real
27
Segundo Powers (2007), a precisão denota a proporção de casos
positivos previstos que são realmente positivos. Portanto, é calculado pela razão
entre o total de verdadeiros positivos e a soma de verdadeiros positivos e falsos
positivos.
𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 =
𝑇𝑃
𝑇𝑃 + 𝐹𝑃 (28)
Powers também cita a Precisão Inversa, que é a proporção de valor
negativos previstos que são realmente negativos. Sua fórmula é
𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 𝐼𝑛𝑣𝑒𝑟𝑠𝑎 =
𝑇𝑁
𝑇𝑁 + 𝐹𝑁 (29)
2.3.3. Recall
Powers diz que o Recall é a proporção de casos reais positivos que estão
corretamente previstos como positivos. O cálculo do recall é feito pela razão
entre os verdadeiros positivos e a soma dos verdadeiros positivos e falsos
negativos.
𝑅𝑒𝑐𝑎𝑙𝑙 =
𝑇𝑃
𝑇𝑃 + 𝐹𝑁 (30)
Assim como a Precisão, o Recall também possui seu inverso para casos
negativos.
𝑅𝑒𝑐𝑎𝑙𝑙 𝐼𝑛𝑣𝑒𝑟𝑠𝑜 =
𝑇𝑁
𝑇𝑁 + 𝐹𝑃 (30)
2.3.4. F1 Score
28
O cálculo do F1 Score é feito pela média harmônica entre precisão e
recall. Ele é utilizado para avaliar a relação entre esses dois indicadores, de
forma que a diferença do resultado deles não seja elevada.
𝐹1 =
2 𝑥 𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 𝑥 𝑅𝑒𝑐𝑎𝑙𝑙
𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 + 𝑅𝑒𝑐𝑎𝑙𝑙 (31)
2.3.5. Curva ROC
Davis e Goadrich (2006) definem a ROC (Receiver Operator
Characteristic) como a curva que mostra como o número de exemplos positivos
classificados corretamente varia com o número de exemplos negativos
classificados incorretamente. Para encontrá-la, traça-se o False Positive Rate
(FPR) no eixo x e o True Positive Rate (TPR) no eixo y. O FPR mede a fração
de exemplos negativos que são classificados erroneamente como positivos, já o
TPR mede a fração de exemplos positivos classificados corretamente, sendo o
mesmo que o Recall.
Figura 9 - Curva ROC
29
No exemplo da figura 8, nota-se que o TPR cresce rapidamente em
relação ao FPR, então esse classificador consegue classificar os dados positivos
corretamente sem que, para isso, aumente seu percentual de falsos positivos.
2.3.6. AUC
De acordo com Bradley (1996), a AUC (Area Under Curve) é um indicador
de performance do modelo classificador. Ela é calculada pela área abaixo da
linha traçada pela ROC, então seu valor varia de 0 a 1, e quanto mais próximo
de 1, melhor o modelo consegue classificar verdadeiros positivos sem classificar
falsos positivos.
No exemplo da figura 9, a AUC é calculada pela área do trapézio formado
pela ROC e pelas retas 𝐹𝑃𝑅 = 1 e 𝑇𝑃𝑅 = 0. Seu valor é 𝐴𝑈𝐶 = 0,875.
3. METODOLOGIA
3.1. ENTENDIMENTO DO NEGÓCIO
Antes de começar a trabalhar com os dados, foi necessário entender o
contexto do negócio em questão, para que qualquer tipo de análise proveniente
desses dados tivesse real significado para o problema. Dada essa questão, foi
explorada a forma como a empresa realiza o processo de manutenção de seus
equipamentos. Ele começa quando um dos centros de trabalho onde as
máquinas podem se encontrar envia uma nota demandando pela manutenção
de um equipamento. Essas notas são recolhidas por outro setor, que emite as
ordens de compra dos materiais necessários para a manutenção. Por fim, é feita,
de fato, a compra dos materiais, e nesses registros são encontrados os dados
relacionados aos prazos das manutenções.
Foi possível identificar que, durante esse processo de pedidos, existem
dados relevantes para diferenciar um atraso em manutenção de um prazo
cumprido, além das principais características das máquinas e das manutenções
utilizadas.
3.2. COLETA DE DADOS
30
Os dados utilizados no estudo foram obtidos por meio de contato direto
com a empresa em questão. Foram disponibilizadas três bases de dados:
▪ IW29: base de notas enviadas pelos centros de trabalho demandando
por manutenção de um equipamento;
▪ IW49N: base de emissão de ordens de compra de material referente
às notas enviadas pelos centros;
▪ BW: base de compras de materiais para manutenção.
3.3. TRATAMENTO E ANÁLISE DOS DADOS
Após a coleta, foi realizado o tratamento dos dados coletados para obter
o dataset no formato correto. Primeiramente, foram selecionadas as variáveis de
cada arquivo para serem utilizadas no modelo. Após isso, os arquivos foram
unidos por meio de colunas chave, resultando na base de dados a ser utilizada.
Os arquivos foram unidos pelas colunas de número da ordem e número
da nota, e as variáveis selecionadas para aplicar o modelo foram:
3.3.1. Valor da compra para manutenção
Variável que indica o quanto a empresa gastou com materiais para realizar
a manutenção. Pela tabela 1, nota-se que esse valor pode ser zero, e apesar de
75% dos registros serem de até R$17.985,43, existem manutenções com custos
muito acima da média, chegando a R$406.989,84.
Tabela 1 – Características da variável Valor de Compra
Características da variável Valor de Compra
Tipo Numérica
Contagem 683
Média R$ 14.987,57
Desvio Padrão R$ 27.276,66
Mínimo R$ 0,00
25% R$ 2.037,17
50% R$ 6.294,00
75% R$ 17.985,43
Máximo R$ 406.989,84
31
Figura 10 - Histograma da variável Valor de Compra
3.3.2. Tipo de manutenção
Variável que indica o tipo de manutenção a ser executada. Elas são:
• ZMEL – manutenção em que o equipamento não está defeituoso, apenas
passando por uma melhoria;
• ZAPO – manutenção relacionada a serviços de apoio a uma outra
manutenção;
• ZCOR – manutenção de um equipamento defeituoso;
• ZPRV – manutenção preventiva de um equipamento.
Tabela 2 – Características da variável Tipo de Manutenção
Características da variável Tipo de Manutenção
Tipo Categórica
Contagem 683
Rótulos
ZMEL
ZAPO
ZCOR
ZPRV
32
Figura 11 - Distribuição de valores da variável Tipo de Manutenção
Figura 12 - Número de manutenções dentro e fora do prazo por tipo de manutenção
Analisando os gráficos, nota-se que o tipo de manutenção mais comum é a
ZCOR, correspondendo a 67% das manutenções registradas.
Proporcionalmente, é também o tipo de manutenção com maior número de
atrasos – 64% dos registros foram considerados fora do prazo – enquanto os
outros tipos de manutenção têm percentuais menores (manutenções de tipo
ZAPO, ZMEL e ZPRV possuem 49%, 51% e 54% respectivamente).
33
3.3.3. Tipo de máquina
Variável que indica o tipo de máquina que sofrerá a manutenção, podendo
ser dos tipos M1, M2, M3 ou M7.
Tabela 3 – Características da variável Tipo de Máquina
Características da variável Tipo de Máquina
Tipo Categórica
Contagem 683
Rótulos
M1
M2
M3
M7
Figura 13 - Distribuição de valores da variável Tipo de Máquina
34
Figura 14 - Número de manutenções dentro e fora do prazo por tipo de máquina
Dentre as manutenções registradas, a máquina do tipo M1 foi a mais
frequente. No entanto, o principal a se destacar é em relação às máquinas do
tipo M2. Enquanto os outros tipos tiveram um percentual próximo a 50% de
manutenções fora do prazo, o percentual dela é de 81%. Esse fato pode indicar
que o processo de manutenção de máquinas M2 é menos eficiente em relação
aos outros, ou que o prazo de conclusão para esse tipo de máquina deveria ser
maior.
3.3.4. Data de emissão da nota
Variável que indica a data em que a nota foi emitida para manutenção.
Foram utilizadas notas de aproximadamente 2 anos para o modelo, de junho de
2017 até maio de 2019.
Tabela 4 – Características da variável Data de Emissão da Nota
Características da variável Data de Emissão da Nota
Tipo Data
Contagem 683
Menor data 09/06/2017
Maior data 30/05/2019
35
Figura 15 - Número de manutenções dentro e fora do prazo pela data de emissão
A figura 15 mostra que até julho de 2018, em nenhum mês o número de
notas emitidas em que o prazo de conclusão se cumpriu foi superior ao de notas
atrasada. No entanto, a partir de agosto de 2018, em apenas um mês a maioria
das notas de manutenção foi cumprida com atraso. Isso pode indicar que a
empresa já tomou iniciativas em relação a esse problema.
3.3.5. Código do centro de trabalho
Variável que indica o centro de trabalho onde a máquina referente à
manutenção se encontra. Na base de dados existem 68 diferentes centros de
trabalho, e destacados os que possuem o maior número de registros de
manutenções.
Tabela 5 – Características da variável Código do Centro de Trabalho
Características da variável Código do Centro de Trabalho
Tipo Categórica
Contagem 683
Número de rótulos 68
Mais frequentes T017
36
T064
T060
T036
Figura 16 - Distribuição de valores da variável Centro de Trabalho
3.3.6. Criticidade
Variável que indica o nível de criticidade da manutenção. Uma
manutenção pode ter criticidade A, B ou C, sendo A o nível mais alto e C o mais
baixo de criticidade. Diferente das outras variáveis, essa possui 118 valores
nulos.
Tabela 6 – Características da variável Criticidade
Características da variável Criticidade
Tipo Categórica
Contagem 565
Rótulos
A
B
C
37
Figura 17 - Distribuição de valores da variável Criticidade
Figura 18 - Número de manutenções fora e dentro do prazo por criticidade da manutenção
Analisando os gráficos referentes à criticidade da manutenção, é
observado que manutenções da menor criticidade – criticidade C – tiveram a
maior proporção de registros no prazo (46%), enquanto as manutenções de
criticidade A e B tiveram 36% e 37%, respectivamente. Considerando a
criticidade um fator relevante para a manutenção das máquinas, é possível que
haja um erro na priorização das manutenções por parte da equipe responsável
por executá-las.
38
3.3.7. Prazo de conclusão
Variável que indica o prazo dado para a conclusão de uma manutenção.
Apesar de existirem registros até 2029, no gráfico da figura 19 só foram
apresentados dados até 2019 para que possa ser feita a comparação entre
manutenções concluídas dentro e fora do prazo.
Tabela 7 – Características da variável Prazo de Conclusão
Características da variável Prazo de Conclusão
Tipo Data
Contagem 683
Menor data 15/07/2017
Maior data 29/01/2029
Figura 19 - Número de manutenções dentro e fora do prazo pelo prazo de conclusão
Analisando o número de manutenções concluídas pelo prazo de
conclusão, é possível identificar que houve um aumento de manutenções
finalizadas dentro do prazo e um declínio de manutenções finalizadas com
atraso. Isso reforça que a empresa está conseguindo cumprir com o prazo com
maior frequência em relação aos anos anteriores, e também pode indicar que
notas emitidas com prazos maiores tendem a ser cumpridas.
39
3.3.8. Data de fim da manutenção
Variável que indica a data em que a manutenção foi finalizada. Foram
registradas notas finalizadas entre agosto de 2017 e dezembro de 2019.
Tabela 8 – Características da variável Data de Fim da Manutenção
Características da variável Data de Fim da Manutenção
Tipo Data
Contagem 683
Menor data 29/08/2017
Maior data 28/11/2019
Figura 20 - Número de manutenções dentro e fora do prazo pela data de fim da manutenção
Diferente do que foi apresentado pelas variáveis ‘Data de Emissão da
Nota’ e ‘Prazo de Conclusão’, a figura 20 indica que, a partir de maio de 2018,
em apenas dois meses o número de manutenções concluídas no prazo foi
superior ao de atrasadas.
3.4. PRÉ-PROCESSAMENTO DOS DADOS
40
Após concluir a análise das variáveis selecionadas, alguns ajustes à base
de dados foram necessários para que o algoritmo funcionasse corretamente e
não tivesse seu resultado enviesado.
O primeiro passo foi excluir as linhas da base em que a variável
‘Criticidade’ era nula, visto que esses registros podem prejudicar o resultado do
modelo.
O passo seguinte foi transformar as variáveis categóricas em números.
Essa alteração foi feita por meio de variáveis dummy, ou seja, para cada variável
categórica, foram criadas variáveis binárias em que cada uma representava um
possível valor dela, recebendo valor 1 caso o valor fosse o representado por
aquela coluna e 0 caso contrário. Por exemplo, em relação a ‘Criticidade’, no
lugar da coluna original com os dados, foram criadas três colunas, ‘A’, ‘B’ e ‘C’,
e para uma linha em que a criticidade era ‘A’, ela recebeu 1 na coluna ‘A’, 0 em
‘B’ e 0 em ‘C’. Nos casos de valor vazio, todas as colunas receberam 0.
Em relação às variáveis de data, o tratamento foi feito de forma a obter a
variável resposta do modelo, ou seja, o valor que diz se a manutenção foi
realizada no prazo ou não. A coluna de ‘Data de Emissão da Nota’ foi descartada,
visto que não influenciava nessa resposta, e foi criada a coluna ‘target’. Ela é
uma variável binária, que recebeu valor 1 caso a ‘Data de Fim da Manutenção’
fosse menor ou igual a ‘Prazo de Conclusão’, e 0 caso contrário.
Com todos os dados já numéricos, foi realizada a normalização deles, de
forma que todas as colunas tivessem valores apenas entre 0 e 1. Essa
normalização foi calculada por proporção, em que cada valor é subtraído do
menor valor e, então, dividido pela diferença entre o maior e o menor valores da
mesma coluna.
A última análise feita foi da correlação das variáveis com a variável ‘target’,
a fim de compreender se alguma característica da máquina ou da manutenção
possui alta correlação com o resultado da manutenção no prazo ou não. No
entanto, observou-se que nenhuma das variáveis estava altamente
correlacionada com ela.
Tabela 9 – 5 Maiores correlações com a variável target
41
Variável Correlação
tp_m1 0,2228
cen_t060 0,196318
cen_t044 0,142194
cen_t013 0,113284
cen_t014 0,112933
Tabela 10 – 5 Menores correlações com a variável target
Variável Correlação
tp_m2 -0,290764
tp_zapo -0,128185
cen_t015 -0,101299
cen_t025 -0,094532
cen_t067 -0,094532
3.5. REDUÇÃO DE DIMENSIONALIDADE DA BASE
A etapa seguinte, já com o dataset devidamente preparado para a
aplicação do modelo, foi a utilização do Truncated SVD para reduzir o número
de dimensões dele. O objetivo dessa redução é, principalmente, visualizar os
dados em ℝ2 e ℝ3, visto que a base conta com 81 colunas após o tratamento
dos dados, não sendo possível visualizá-la dessa forma.
42
Figura 21 - Visualização dos dados após aplicação do Truncated SVD para t = 2
Figura 22 - Visualização dos dados após aplicação do Truncated SVD para t = 3
43
3.6. APLICAÇÃO DO MODELO DE CLASSIFICAÇÃO
Para realizar a classificação, foi aplicado o modelo KNN. Com o objetivo
de comparar resultados e escolher a melhor forma de utilizá-lo, a aplicação foi
feita para a base de dados completa de 81 colunas e para as projeções de duas
e três dimensões adquiridas por meio do Truncated SVD. Além disso, foram
testados diferentes valores do parâmetro k, a fim de encontrar o valor ideal de
vizinhos no algoritmo para a classificação dos dados.
A partir dos primeiros testes, foi percebido que, para valores de k > 5, a
performance do modelo piorava, portanto os resultados apresentados serão
correspondentes a valores de k de 2 a 5.
3.6.1. Base de dados completa
Utilizando a base de dados completa, sem a aplicação do Truncated SVD
para reduzir o número de colunas, foram encontrados os resultados do modelo
representados na tabela 11. Ela foi colocada em ordem decrescente em relação
ao valor de F1, que será a principal métrica para a escolha do modelo final. Logo,
utilizando essa base para aplicar o modelo, o valor de k que apresenta o melhor
F1 é k = 2. Dentre as opções apresentadas, é também a de maior acurácia,
atingindo 78,8%, e maior Recall, com 73,1%.
Tabela 11 – Resultados das métricas para o modelo com sua base de
dados completa
K F1 Acurácia Precisão Recall AUC
2 61,3% 78,8% 52,8% 73,1% 76,8%
3 58,7% 72,6% 61,1% 56,4% 68,7%
5 53,7% 72,6% 50,0% 58,1% 68,1%
4 52,5% 74,3% 44,4% 64,0% 70,6%
3.6.2. Projeção 3D
44
A partir da utilização da base de dados com o Truncated SVD aplicado
com t = 3, foram obtidos novos resultados do modelo, como mostra a tabela 12.
Diferente da base original, nota-se que o modelo obteve o maior valor de F1 com
k = 3. Nesse caso, a Acurácia observada não foi a maior entre os diferentes
valores de k.
Tabela 12 – Resultado das métricas para o modelo com a base de
dados reduzida a 3 dimensões pelo Truncated SVD
K F1 Acurácia Precisão Recall AUC
3 63,4% 73,5% 72,2% 56,5% 70,8%
4 58,8% 75,2% 55,6% 62,5% 71,4%
2 57,1% 76,1% 50,0% 66,7% 72,9%
5 56,0% 70,8% 58,3% 53,8% 66,8%
3.6.3. Projeção 2D
Por fim, o modelo foi aplicado à base de dados com 2 dimensões após a
utilização do Truncated SVD. Assim como na base com 3 dimensões, o maior
valor de F1 observado corresponde a k = 3, mas também não obteve a maior
Acurácia.
Tabela 13 – Resultado das métricas para o modelo com a base de
dados reduzida a 2 dimensões pelo Truncated SVD
K F1 Acurácia Precisão Recall AUC
3 56,3% 72,6% 55,6% 57,1% 70,8%
5 52,9% 71,7% 50,0% 56,2% 66,8%
2 49,1% 74,3% 38,9% 66,7% 72,9%
4 48,4% 71,7% 41,7% 57,7% 71,3%
3.7. ESCOLHA DO MODELO FINAL
Na escolha do modelo final, foram considerados os melhores resultados
de cada base de dados utilizada em relação ao seu F1, apresentados na tabela
45
14. Como mostra a tabela, nenhum dos indicadores obtidos pela Projeção 2D foi
superior em relação aos outros modelos, podendo ser descartado da
comparação.
Analisando as duas outras possibilidades, nota-se que a Projeção 3D
obteve melhor F1 com diferença de 2,1%, mas sua Acurácia foi 5,3% menor. É
possível considerar, então, que exista um trade-off entre esses indicadores, mas
que a diferença na aplicação de cada um não seja significante para novos dados.
No entanto, ao comparar a Precisão e Recall dos dois modelos, observa-se que
os valores foram significativamente diferentes entre ambos, apesar de
resultarem em F1’s próximos. Portanto, para decidir qual aplicação do modelo
deve ser replicada, foi necessário identificar qual desses indicadores deve ser
priorizado.
O indicador de Precisão, no presente trabalho, deve ser interpretado como
a porcentagem de manutenções classificadas pelo modelo como ‘Dentro do
Prazo’ que foram finalizadas, de fato, sem atraso. Já o Recall deve ser
interpretado pela porcentagem das manutenções que foram finalizadas no prazo
e o modelo as classificou corretamente dessa forma.
Para a decisão final, foi priorizado o modelo com maior Precisão, visto que
ela avalia os casos em que uma manutenção que ocorreu fora do prazo foi
classificada como ‘Dentro do Prazo’, que são os falsos positivos, enquanto o
Recall avalia os casos em que a manutenção foi feita no prazo, mas o modelo
classificou como ‘Fora do Prazo’, os falsos negativos. Isso porque, para a
empresa, o prejuízo será maior ao ignorar uma manutenção erroneamente
classificada como ‘Dentro do Prazo’ do que atuando em um registro que o
modelo classificou como ‘Fora do Prazo’ de forma errada.
Logo, foi definido que para o modelo final será utilizada a Projeção 3D dos
dados e k = 3, que obteve F1 de 63,4%, 73,5% de Acurácia e 72,2% de Precisão,
sendo a maior entre todas as possibilidades testadas.
Tabela 14 – Resultados das métricas do modelo
Dados K F1 Acurácia Precisão Recall AUC
Projeção 3D 3 63,4% 73,5% 72,2% 56,5% 70,8%
46
Dataset completo 2 61,3% 78,8% 52,8% 73,1% 76,8%
Projeção 2D 3 56,3% 72,6% 55,6% 57,1% 70,8%
Por fim, a partir da definição do modelo final, foi realizada uma análise dos
resultados dos indicadores calculados – acurácia, precisão, recall, F1, curva
ROC e AUC – para ele. O objetivo dessa análise é compreender a forma como
o modelo classificou os dados e explorar os possíveis fatores relacionados a
falsos positivos e falsos negativos na matriz de confusão.
4. RESULTADOS DO MODELO
Por fim, a partir da definição do modelo final, foi realizada uma análise dos
resultados dos indicadores calculados – Acurácia, Precisão, Recall, F1, curva
ROC e AUC – para ele. O objetivo dessa análise é compreender a forma como
o modelo classificou os dados e explorar os possíveis fatores relacionados a
falsos positivos e falsos negativos na matriz de confusão.
4.1. MATRIZ DE CONFUSÃO
Por meio da matriz de confusão apresentada na figura 23, é possível
identificar como o modelo classificou as manutenções da base de teste e
comparar com os valores reais dessas manutenções. O eixo vertical representa
o valor predito pelo modelo, enquanto o eixo horizontal representa a real
classificação daquele registro, sendo ‘0’ o valor correspondente a manutenção
‘Fora do Prazo’ e ‘1’ a manutenção finalizada ‘Dentro do Prazo’.
47
Figura 23 - Matriz de Confusão da base de teste do modelo
4.1.1. Acurácia, Precisão, Recall e F1
O modelo obteve Acurácia de 73,5%, acertando 83 dos 113 registros da
base de testes. Dos 36 dados classificados como ‘Dentro do Prazo’ pelo modelo,
26 foram certos, resultando uma Precisão de 72,2%. Em relação ao Recall,
esses 26 registros corretamente classificados representam 56,5% das 46
manutenções que ocorreram no prazo. Como dito anteriormente, foi priorizado
que o modelo tivesse menor número de falsos positivos em relação aos falsos
negativos, na matriz apresentados como 10 e 20, respectivamente. O F1,
calculado pela média harmônica entre precisão e recall, é de 63,4%, sendo o
maior encontrado ajustando os parâmetros do modelo.
4.1.2. Curva ROC e AUC
A curva ROC indica quão bem o modelo consegue classificar
manutenções como ‘Dentro do Prazo’ corretamente sem gerar falsos positivos.
48
A figura 24 mostra essa curva, e a área abaixo dela, AUC, é de 0,708. Durante
a escolha do modelo final, foram encontrados valores maiores da curva AUC
utilizando outros parâmetros, mas pela priorização da precisão ao recall, esse
indicador não foi utilizado como fator decisivo.
Figura 24 - Curva ROC da base de teste do modelo
5. CONCLUSÃO
Dado o contexto atual referente à temática de ciência de dados e sua
popularização no âmbito corporativo, é evidente a importância que os projetos
nessa área possuem para que as empresas não percam sua competitividade
frente a seus concorrentes, visto que é uma transformação contínua para a
cultura de tomada de decisão baseada em dados.
Esse trabalho teve como objetivo geral elaborar um modelo preditivo que
identificasse se uma manutenção de máquina seria finalizada dentro do prazo
previsto a partir de algumas características dessa manutenção, além de avaliar
49
as variáveis utilizadas pelo modelo para que fosse possível compreender o que
leva uma manutenção a atrasar, auxiliando na tomada de decisão de uma
empresa de transporte e logística de combustíveis. Por meio da seleção de
variáveis relevantes para o modelo, uma análise descritiva delas e a visualização
dos dados com uso do Truncated SVD para redução de dimensionalidade, foi
possível aplicar o KNN com diferentes parâmetros e, a partir dos indicadores
escolhidos para a avaliação do algoritmo, definir a melhor forma de aplicar o
modelo. Depois disso, foi realizada a análise de sensibilidade do modelo,
mostrando os resultados finais da classificação e seus falsos positivos e falsos
negativos.
Para selecionar as melhores variáveis para o modelo, foi feita uma
avaliação inicial das três bases de dados concedidas pela empresa. Observando
cada coluna disponível, a decisão de utilizar uma variável ou não foi feita
considerando principalmente o quanto ela representa uma característica da
máquina ou da manutenção em questão. Além disso, foi avaliada a quantidade
de dados preenchidos, dado que algumas colunas possuíam muitos registros
vazios, não podendo ser aproveitadas no modelo.
As variáveis selecionadas na base de dados final foram analisadas por
meio de uma descrição das suas principais características, como tipo de variável,
distribuição e rótulos de dados, a fim de apresentar o comportamento dos dados
utilizados. A comparação de manutenções dentro e fora do prazo a partir de
algumas variáveis permitiu identificar possíveis características que influenciam
no cumprimento do prazo de uma manutenção, e as visualizações temporais das
manutenções mostraram uma melhoria ao longo dos anos em relação aos
prazos, apesar de uma crescente quantidade de registros sendo finalizados com
atraso a partir de 2018. Ademais, a correlação entre as variáveis utilizadas e a
target, que indica o cumprimento do prazo ou não, não revelou nenhum valor
relevante que sugerisse alguma característica principal associada ao prazo da
manutenção.
A aplicação do Truncated SVD permitiu a visualização dos dados da base
e, com auxílio dos gráficos, foi possível identificar que, no geral, os pontos se
agrupam com outros que têm o mesmo valor na variável target. Ou seja,
50
manutenções ocorridas no prazo aparecem mais próximas entre si, e o mesmo
acontece para as atrasadas. Dado que o KNN utiliza a distância de um ponto aos
seus mais próximos para realizar a classificação, essa característica da base
sugeriu que o modelo traria resultados satisfatórios.
Na aplicação do modelo, foram utilizadas tanto a base de dados original
quanto as bases geradas pela aplicação do Truncated SVD, com 2 e 3
dimensões. Os valores de k do KNN variaram de 2 a 5, visto que números
maiores testados geraram resultados inferiores. Utilizando o F1 Score como
principal indicador de avaliação da classificação, mas analisando também a
acurácia, precisão, recall e AUC de cada possibilidade, foi encontrado o modelo
com melhor resultado. Essa análise foi feita inicialmente com os diferentes
valores de k para cada base de dados, depois entre os melhores resultados
encontrados em cada uma.
Depois da escolha do melhor modelo, uma análise de sensibilidade foi
feita, com o intuito de detalhar os indicadores calculados na base de teste,
observando quantas manutenções foram classificadas erroneamente, tanto para
falsos positivos quanto falsos negativos. A plotagem da matriz de confusão e da
curva ROC auxiliam na compreensão desse resultado, evidenciando, por
exemplo, que o modelo gerou um maior número de falsos negativos, como havia
sido priorizado anteriormente.
Pelo que foi observado ao longo do trabalho, algumas características
relacionadas às manutenções têm maior influência no cumprimento do prazo do
que outras. Alguns indícios disso estão na análise das variáveis, que indicam
maior porcentagem de atrasos os registros de manutenção de equipamentos
defeituosos, principalmente das máquinas do tipo M2 e de criticidade B. A partir
desses resultados, é possível atuar para que próximas manutenções descritas
de tal forma sejam priorizadas, caso necessário.
Considerando os indicadores de avaliação calculados, o resultado final
pode ser considerado satisfatório. Para futuros registros de manutenções,
mantendo-se uma acurácia próxima de 73,5% e precisão de 72,2%, o modelo
poderá servir de balizador na decisão de como a equipe de manutenção da
empresa deve priorizar os trabalhos a serem executados e o esforço e recursos
51
alocados em cada um deles. Isso não deve descartar uma análise qualitativa de
especialistas, visto que o algoritmo não considera todos os fatores existentes
relacionados a uma manutenção ou a outras prioridades da própria empresa,
além de não acertar em todas as classificações.
Pode-se destacar nesse projeto e nos resultados obtidos, que, para o
problema abordado, o modelo utilizado foi uma escolha correta. Isso porque,
considerando que a base de dados utilizada possui a maioria das suas variáveis
sendo categóricas que descrevem atributos específicos de uma manutenção ou
máquina, a classificação por meio da distância entre os pontos aproveita que
esses valores são binários, pois os registros com mesmos atributos tendem a
ficar próximos e distante dos diferentes.
Em estudos futuros, podem ser exploradas outras técnicas de Machine
Learning para classificar os dados de manutenção apresentados, como Random
Forest e redes neurais. Na utilização do Truncated SVD, como nesse trabalho
foram utilizados apenas 𝑡 = 2 e 𝑡 = 3, existe a possibilidade de os resultados
serem melhores para outros valores de t, podendo ser testados valores entre 4
e 80. Outros valores de k também podem ser testados no KNN, pois, apesar de
alguns testes, não foram testadas tantas possibilidades além dos apresentados
no projeto. O mesmo modelo pode ser aplicado também com novas variáveis
consideradas relevantes para o problema, contanto que a empresa tenha esses
dados registrados em volume suficiente para utilização.
52
6. REFERÊNCIAS BIBLIOGRÁFICAS
BAKER, Kirk. Singular Value Decomposition Tutorial. 2005
BRADLEY, Andrew. The use of the Area Under the ROC Curve in the Evaluation
of Machine Learning Algorithms. Pattern Recognition 30-7 pp. 1145-1159, 1997
DAVIS, Jesse; GOADRICH, Mark. The Relationship Between Precision-Recall
and ROC Curves. Proceedings of the 23rd International Conference on Machine
Learning, ACM. 06. 10.1145/1143844.1143874, 2006
DEMMEL, James; BAI, Zhaojun; DONGARRA, Jack; RUHE, Axel; VORST, Henk
van der. Templates for the Solution of Algebraic Eigenvalue Problems: A Practical
Guide. SIAM, Philadelphia, 2000
HANSEN, Per Christian. The Truncated SVD as a Method for Regularization.
BIT 27, 534–553 (1987) doi:10.1007/BF01937276
MCAFEE, Andrew; BRYNJOLFSSON, Erik. Big Data: The Management
Revolution. Harvard Business Review, 2012
POWERS, David. Evaluation: From Precision, Recall and F-Factor to ROC,
Informedness, Markedness & Correlation. 2008
PROVOST, Foster; FAWCETT, Tom. Data Science and its relationship to Big
Data and data-driven decision making. Big Data, 1, 51--59 (2013) doi:
10.1089/big.2013.1508
53
REBAI, Maher; Kacem, Imed; Adjallah, Kondo H. Scheduling jobs and
maintenance activities on parallel machines. Oper Res Int J 13, 363–383 (2013)
doi:10.1007/s12351-012-0130-1
SLACK, Nigel; CHAMBERS, Stuart; JOHNSTON, Robert. Operations
Management.Pearson Education Limited, Sixth edition, 2010
SUN, Jingwen; DU, Weixing; SHI, Niancai. A Survey of kNN Algorithm.
Information Engineering College, Panzhihua University of Technology, Sichuan,
China, 2018
54
7. APÊNDICES
7.1. TABELA DE DADOS
valor_compra tp_manutencao tp_maquina data_nota cen criticidade conclusao_desejada data_fim
7888,45 ZMEL M3 09/06/2017 T041 C 06/12/2017 26/01/2018
7113,28 ZMEL M3 09/06/2017 T041 C 06/12/2017 22/09/2017
7888,45 ZMEL M3 09/06/2017 T041 C 06/12/2017 06/02/2018
0 ZMEL M3 09/06/2017 T041 C 06/12/2017 25/09/2017
286,9 ZMEL M3 09/06/2017 T041 C 06/12/2017 11/09/2017
406989,84 ZMEL M3 03/07/2017 T033 C 30/12/2017 10/02/2018
6780 ZMEL M3 03/07/2017 T033 C 30/12/2017 18/12/2018
16880 ZMEL M3 03/07/2017 T033 C 30/12/2017 05/12/2018
20880 ZMEL M3 03/07/2017 T033 C 30/12/2017 07/11/2018
480,2 ZMEL M3 03/07/2017 T033 C 30/12/2017 05/11/2018
1235,5 ZMEL M3 03/07/2017 T033 C 30/12/2017 30/11/2018
6876,75 ZMEL M3 03/07/2017 T033 C 30/12/2017 31/10/2018
12000 ZMEL M3 03/07/2017 T033 C 30/12/2017 13/11/2018
1120,5 ZAPO M1 19/07/2017 T017 B 15/01/2018 29/08/2017
25725,66 ZCOR M1 09/08/2017 T055 C 05/02/2018 18/10/2017
3997,35 ZMEL M3 14/08/2017 T060 10/02/2018 27/10/2017
3520 ZMEL M3 14/08/2017 T060 10/02/2018 29/09/2017
3968 ZMEL M3 14/08/2017 T060 10/02/2018 17/10/2017
3980 ZMEL M3 14/08/2017 T060 10/02/2018 20/10/2017
3710 ZMEL M3 14/08/2017 T060 10/02/2018 20/10/2017
26209 ZCOR M1 21/06/2017 T057 B 18/12/2017 18/12/2017
9412,42 ZCOR M1 30/06/2017 T033 C 26/12/2017 01/03/2019
9412,42 ZCOR M1 30/06/2017 T033 C 26/12/2017 29/08/2018
4638,16 ZCOR M2 22/08/2017 T064 B 21/09/2017 15/07/2019
59967 ZMEL M1 12/09/2017 T012 B 11/03/2018 28/08/2018
88032 ZCOR M1 19/09/2017 T059 C 24/02/2018 18/07/2018
2208 ZAPO M1 25/08/2017 T036 21/02/2018 20/02/2018
8040 ZAPO M1 31/08/2017 T036 27/02/2018 20/06/2018
9131,72 ZAPO M1 09/06/2017 T036 C 09/06/2019 27/03/2018
2603,94 ZAPO M1 09/06/2017 T036 C 09/06/2019 19/03/2018
14482,3 ZAPO M1 09/06/2017 T036 C 09/06/2019 16/05/2018
17933,76 ZAPO M1 22/09/2017 T064 21/03/2018 17/05/2018
32265,3 ZMEL M3 11/09/2017 T012 A 10/03/2018 02/03/2018
501,52 ZMEL M3 14/08/2017 T037 B 10/02/2018 21/03/2018
14968,61 ZMEL M3 14/08/2017 T037 B 10/02/2018 24/05/2019
88980,53 ZAPO M1 11/08/2017 T036 07/02/2018 19/11/2018
88980,53 ZAPO M1 11/08/2017 T036 07/02/2018 10/12/2018
2010 ZMEL M1 29/08/2017 T012 25/02/2018 16/05/2018
702,83 ZPRV M1 03/07/2017 T018 B 30/12/2017 25/04/2018
55
1905,6 ZCOR M2 12/09/2017 T009 A 11/11/2017 09/12/2018
6495 ZCOR M7 19/07/2017 T085 B 20/07/2019 01/06/2018
37329,87 ZCOR M1 19/10/2017 T097 C 17/04/2018 04/02/2019
1454,56 ZAPO M1 11/09/2017 T009 A 10/03/2018 18/04/2018
31886,8 ZAPO M1 16/10/2017 T036 14/04/2018 03/09/2018
11410,56 ZCOR M2 25/10/2017 T097 A 24/12/2017 09/10/2018
25649,31 ZAPO M1 13/10/2017 T017 30/03/2018 13/08/2018
2416,26 ZCOR M1 20/10/2017 T009 18/04/2018 26/01/2018
2557,7 ZCOR M1 20/10/2017 T009 18/04/2018 02/03/2018
13650 ZCOR M1 20/10/2017 T009 18/04/2018 02/02/2018
4536,06 ZAPO M1 01/09/2017 T009 28/02/2018 04/05/2018
57974 ZMEL M3 01/11/2017 T038 C 30/04/2018 08/08/2018
59882,24 ZCOR M1 02/08/2017 T011 B 29/01/2018 12/12/2018
18553,91 ZCOR M1 29/09/2017 T009 28/03/2018 11/04/2018
12866,24 ZAPO M1 09/10/2017 T036 B 07/04/2018 11/10/2018
9184 ZAPO M1 07/07/2017 T036 B 03/01/2018 18/07/2018
19803,52 ZCOR M1 26/09/2017 T008 25/03/2018 11/07/2018
9440,02 ZCOR M1 26/09/2017 T008 25/03/2018 07/06/2018
4374,04 ZAPO M1 23/10/2017 T036 A 21/04/2018 04/04/2019
4770 ZCOR M2 04/10/2017 T001 B 08/12/2017 02/05/2019
12222,84 ZAPO M1 10/11/2017 T036 09/05/2018 27/03/2018
12222,84 ZAPO M1 10/11/2017 T036 09/05/2018 31/07/2018
6298,2 ZCOR M1 26/10/2017 T007 24/04/2018 03/07/2018
17248 ZCOR M1 26/10/2017 T007 24/04/2018 14/12/2018
844 ZMEL M3 30/10/2017 T085 B 28/04/2018 16/08/2018
4000 ZMEL M3 10/11/2017 T013 C 09/05/2019 30/03/2018
4000 ZMEL M3 10/11/2017 T013 C 09/05/2019 28/03/2018
0 ZMEL M3 29/11/2017 T055 C 28/05/2018 26/04/2018
44133,35 ZAPO M1 29/08/2017 T009 B 03/02/2018 01/10/2018
4315,6 ZCOR M1 16/11/2017 T060 A 15/05/2018 20/03/2018
4315,6 ZCOR M2 28/11/2017 T060 A 08/12/2017 20/03/2018
2155,36 ZCOR M2 05/12/2017 T055 03/06/2018 16/02/2018
912,77 ZCOR M2 05/12/2017 T055 03/06/2018 18/09/2018
912,77 ZCOR M2 05/12/2017 T055 03/06/2018 18/09/2018
912,77 ZCOR M2 05/12/2017 T055 03/06/2018 18/09/2018
912,77 ZCOR M2 05/12/2017 T055 03/06/2018 18/09/2018
912,77 ZCOR M2 05/12/2017 T055 03/06/2018 18/09/2018
534,7 ZCOR M1 26/09/2017 T057 23/07/2018 12/01/2018
3000 ZCOR M1 26/09/2017 T057 23/07/2018 19/03/2018
21750 ZCOR M1 26/09/2017 T057 23/07/2018 29/08/2018
1154,08 ZMEL M3 19/10/2017 T001 A 21/04/2018 10/05/2018
684,8 ZMEL M3 19/10/2017 T001 A 21/04/2018 07/08/2018
1154,08 ZMEL M3 19/10/2017 T001 A 21/04/2018 27/06/2018
4300 ZAPO M1 30/11/2017 T012 C 29/05/2018 15/03/2018
6476,62 ZAPO M1 30/11/2017 T012 C 29/05/2018 14/08/2018
26740 ZAPO M1 30/11/2017 T012 C 29/05/2018 19/12/2018
56
13668,9 ZCOR M2 02/08/2017 T097 B 01/10/2017 23/08/2018
781,23 ZMEL M3 19/10/2017 T001 A 21/04/2018 27/12/2018
683,34 ZMEL M3 19/10/2017 T001 A 21/04/2018 17/09/2018
781,23 ZMEL M3 19/10/2017 T001 A 21/04/2018 12/02/2019
8270 ZMEL M3 19/10/2017 T001 A 21/04/2018 26/09/2018
4783,92 ZMEL M3 22/12/2017 T013 C 20/06/2019 05/10/2018
858 ZMEL M3 27/11/2017 T003 C 26/05/2018 18/04/2018
1680,45 ZCOR M1 25/10/2017 T037 23/04/2018 07/06/2018
145,8 ZCOR M1 25/10/2017 T037 23/04/2018 10/04/2018
1432,45 ZCOR M1 25/10/2017 T037 23/04/2018 07/03/2018
13668,9 ZCOR M2 02/08/2017 T097 B 01/10/2017 23/08/2018
52194,43 ZCOR M2 04/01/2018 T008 A 03/07/2018 23/03/2018
52194,43 ZCOR M2 04/01/2018 T008 A 03/07/2018 18/05/2018
52194,43 ZCOR M2 04/01/2018 T008 A 03/07/2018 01/05/2018
52194,43 ZCOR M2 04/01/2018 T008 A 03/07/2018 17/04/2018
812,6 ZPRV M1 11/09/2017 T040 A 16/12/2017 15/03/2018
2635,25 ZPRV M1 11/09/2017 T040 A 16/12/2017 25/02/2019
2635,25 ZPRV M1 11/09/2017 T040 A 16/12/2017 23/02/2019
35712 ZPRV M1 04/01/2018 T097 C 03/07/2018 06/04/2018
21097,2 ZPRV M1 03/01/2018 T085 B 03/03/2019 06/06/2018
4339,1 ZAPO M1 10/01/2018 T044 09/07/2018 21/02/2018
4339,1 ZAPO M1 10/01/2018 T044 09/07/2018 09/02/2018
4320 ZAPO M1 10/01/2018 T044 09/07/2018 08/06/2018
105223,6 ZCOR M1 18/01/2018 T048 B 17/07/2018 02/07/2018
4137,8 ZCOR M1 06/11/2017 T046 C 02/05/2018 30/04/2018
717 ZCOR M1 06/11/2017 T046 C 02/05/2018 11/05/2018
510,5 ZCOR M1 06/11/2017 T046 C 02/05/2018 31/12/2018
4137,8 ZCOR M1 06/11/2017 T046 C 02/05/2018 30/04/2018
717 ZCOR M1 06/11/2017 T046 C 02/05/2018 11/05/2018
510,5 ZCOR M1 06/11/2017 T046 C 02/05/2018 31/12/2018
7755 ZCOR M1 12/01/2018 T011 11/07/2018 16/04/2019
7755 ZCOR M1 12/01/2018 T011 11/07/2018 16/04/2019
1270,89 ZAPO M1 25/01/2018 T012 A 26/01/2018 21/02/2019
13688,62 ZCOR M1 15/01/2018 T033 14/07/2018 19/07/2018
8714,92 ZCOR M1 15/01/2018 T033 14/07/2018 31/10/2018
14242,93 ZCOR M2 11/12/2017 T064 B 10/01/2018 22/05/2018
15950,39 ZCOR M2 30/01/2018 T017 B 31/03/2018 03/09/2018
5508,08 ZCOR M2 15/01/2018 T022 B 16/03/2018 08/05/2018
1531,28 ZCOR M2 15/01/2018 T022 B 16/03/2018 26/03/2019
1602,83 ZCOR M1 27/12/2017 T009 25/06/2018 03/08/2018
14214,36 ZCOR M2 23/01/2018 T012 B 23/04/2018 09/10/2018
14214,36 ZCOR M1 24/01/2018 T097 B 23/07/2018 09/10/2018
0 ZCOR M1 09/01/2018 T002 A 08/07/2018 24/06/2018
36546,44 ZCOR M1 25/08/2017 T025 C 24/02/2018 12/11/2018
34403,65 ZCOR M1 25/08/2017 T025 C 24/02/2018 05/11/2018
34403,65 ZCOR M1 25/08/2017 T025 C 24/02/2018 05/11/2018
57
26036,96 ZCOR M1 25/08/2017 T025 C 24/02/2018 18/02/2019
26036,96 ZCOR M1 25/08/2017 T025 C 24/02/2018 12/02/2019
2265,6 ZCOR M1 25/08/2017 T025 C 24/02/2018 17/01/2019
8000 ZCOR M1 25/08/2017 T025 C 24/02/2018 20/09/2019
4037,59 ZCOR M1 25/08/2017 T025 C 24/02/2018 26/05/2019
1920 ZCOR M1 02/10/2017 T042 31/03/2018 24/04/2018
91,02 ZCOR M1 02/10/2017 T042 31/03/2018 31/10/2018
91,02 ZCOR M1 02/10/2017 T042 31/03/2018 08/08/2018
303,78 ZMEL M3 27/11/2017 T012 21/04/2018 18/06/2018
690 ZMEL M3 27/11/2017 T012 21/04/2018 11/06/2019
6325,25 ZPRV M1 13/11/2017 T012 A 03/06/2018 18/07/2019
93345,44 ZCOR M2 22/02/2018 T048 B 23/04/2018 10/05/2018
34488,18 ZCOR M2 22/02/2018 T048 B 23/04/2018 01/03/2019
34488,18 ZCOR M2 22/02/2018 T048 B 23/04/2018 01/03/2019
34488,18 ZCOR M2 22/02/2018 T048 B 23/04/2018 29/04/2019
25376 ZCOR M2 20/02/2018 T017 B 21/05/2018 08/06/2018
69953,03 ZCOR M1 02/03/2018 T051 C 29/08/2018 10/09/2018
2173,34 ZCOR M1 02/03/2018 T051 C 29/08/2018 15/06/2018
5800 ZCOR M2 03/01/2018 T051 A 13/01/2018 02/04/2018
4630 ZCOR M2 03/01/2018 T051 A 13/01/2018 20/06/2018
41554,8 ZCOR M2 08/03/2018 T057 B 07/08/2018 11/01/2019
0 ZCOR M2 08/03/2018 T057 B 07/08/2018 30/04/2018
7481,7 ZCOR M2 08/03/2018 T057 B 07/08/2018 19/11/2018
7657,2 ZCOR M2 08/03/2018 T057 B 07/08/2018 22/05/2018
5688 ZCOR M2 23/02/2018 T057 B 02/05/2018 28/12/2018
1734,89 ZCOR M1 16/03/2018 T039 A 12/09/2018 21/02/2019
20926,64 ZCOR M2 14/06/2017 T034 B 13/08/2017 02/08/2018
20926,64 ZCOR M2 14/06/2017 T034 B 13/08/2017 02/08/2018
15366,04 ZCOR M2 17/03/2018 T060 A 27/08/2018 22/08/2018
15031,04 ZCOR M1 14/03/2018 T009 10/09/2018 31/07/2018
10772,22 ZCOR M1 15/03/2018 T074 A 11/09/2018 22/03/2019
0 ZCOR M1 21/03/2018 T039 A 17/09/2018 22/06/2018
1921,8 ZCOR M2 05/07/2017 T003 A 15/07/2017 08/06/2018
1953 ZCOR M2 27/12/2017 T012 A 13/01/2018 14/07/2018
8200 ZCOR M1 12/07/2017 T009 08/01/2018 06/12/2018
1885,75 ZCOR M1 07/03/2018 T055 C 03/09/2018 09/01/2019
10174,76 ZMEL M3 22/03/2018 T060 C 25/07/2018 13/09/2018
10174,76 ZMEL M3 22/03/2018 T060 C 25/07/2018 13/09/2018
0 ZMEL M3 22/03/2018 T060 C 25/07/2018 17/08/2018
43760 ZCOR M1 29/03/2018 T051 25/09/2018 01/08/2018
43760 ZCOR M1 29/03/2018 T051 B 25/09/2018 01/08/2018
16730 ZCOR M1 29/03/2018 T051 B 25/09/2018 01/08/2018
2338,95 ZCOR M1 29/03/2018 T051 25/09/2018 03/05/2018
639,84 ZCOR M1 29/03/2018 T051 25/09/2018 13/09/2018
1909 ZMEL M3 27/03/2018 T003 A 23/09/2018 19/06/2018
4112,68 ZCOR M2 28/02/2018 T010 B 29/04/2018 27/12/2018
58
11296,4 ZCOR M2 16/03/2018 T055 A 26/03/2018 17/09/2018
6981,1 ZCOR M2 08/01/2018 T064 B 26/03/2018 13/06/2018
6981,1 ZCOR M2 08/01/2018 T064 B 26/03/2018 13/06/2018
6607,56 ZCOR M1 05/03/2018 T041 27/08/2018 17/08/2018
96868,33 ZCOR M2 20/12/2017 T076 B 19/01/2018 17/08/2018
96868,33 ZCOR M2 11/04/2018 T076 B 28/11/2018 17/08/2018
96868,33 ZCOR M2 11/04/2018 T076 B 29/11/2018 17/08/2018
96868,33 ZCOR M2 11/04/2018 T076 B 29/11/2018 17/08/2018
580 ZCOR M2 29/06/2017 T085 B 08/10/2017 02/01/2019
2280 ZCOR M2 29/06/2017 T085 B 08/10/2017 07/02/2019
9664,25 ZCOR M1 05/04/2018 T073 02/10/2018 30/04/2019
7948,02 ZCOR M1 05/04/2018 T073 02/10/2018 20/09/2018
33643,56 ZCOR M2 20/03/2018 T076 B 18/06/2018 19/10/2018
33643,56 ZCOR M2 01/06/2018 T076 B 30/08/2018 19/10/2018
7000 ZAPO M1 24/01/2018 T036 A 23/07/2018 10/09/2018
11766 ZCOR M2 18/04/2018 T097 B 02/01/2019 23/08/2018
7007,12 ZCOR M2 15/01/2018 T015 A 23/03/2018 31/07/2018
9535,68 ZCOR M2 15/01/2018 T015 A 23/03/2018 29/08/2018
71712,02 ZCOR M2 15/01/2018 T015 A 23/03/2018 25/09/2018
11092 ZPRV M1 05/02/2018 T076 A 28/04/2018 11/09/2018
11092 ZPRV M1 05/02/2018 T076 A 28/04/2018 11/09/2018
13861,99 ZCOR M2 08/03/2018 T064 A 05/05/2018 08/03/2019
139872,16 ZPRV M1 09/08/2017 T060 B 27/05/2019 09/10/2018
32742,9 ZPRV M1 09/08/2017 T060 B 27/05/2019 23/08/2018
139872,16 ZPRV M1 09/08/2017 T060 B 27/05/2019 09/10/2018
32742,9 ZPRV M1 09/08/2017 T060 B 27/05/2019 07/08/2018
32742,9 ZPRV M1 09/08/2017 T060 B 02/07/2019 23/08/2018
1406,67 ZPRV M1 09/08/2017 T060 B 02/07/2019 18/12/2018
9797,35 ZPRV M1 09/08/2017 T060 B 02/07/2019 12/02/2019
32742,9 ZPRV M1 09/08/2017 T060 B 02/07/2019 07/08/2018
745 ZCOR M2 28/02/2018 T001 A 29/04/2018 28/06/2018
2720 ZCOR M2 28/02/2018 T001 A 29/04/2018 17/10/2018
747,5 ZCOR M2 28/02/2018 T001 A 29/04/2018 21/06/2018
272,4 ZCOR M2 28/02/2018 T001 A 29/04/2018 26/02/2019
1674,32 ZPRV M1 18/04/2018 T004 B 28/11/2018 10/01/2019
6372 ZCOR M1 02/05/2018 T036 B 29/10/2018 12/11/2018
1760 ZCOR M1 02/05/2018 T036 B 29/10/2018 10/09/2018
660 ZCOR M1 02/05/2018 T036 B 29/10/2018 19/10/2018
6378,63 ZCOR M1 12/01/2018 T013 A 11/07/2019 17/09/2018
2315 ZCOR M2 08/05/2018 T097 B 02/09/2018 15/05/2019
1546 ZCOR M2 08/05/2018 T097 B 02/09/2018 23/11/2018
3509,6 ZAPO M1 11/05/2018 T017 B 07/11/2018 07/11/2018
3509,6 ZAPO M1 11/05/2018 T017 B 07/11/2018 07/11/2018
3509,6 ZAPO M1 11/05/2018 T017 B 07/11/2018 07/11/2018
3509,6 ZAPO M1 11/05/2018 T017 B 07/11/2018 07/11/2018
3696 ZCOR M7 19/06/2017 T067 B 10/11/2017 13/11/2018
59
2280,34 ZPRV M1 02/04/2018 T043 A 27/01/2019 26/09/2018
12001,34 ZCOR M2 03/04/2018 T037 B 28/05/2018 02/04/2019
23167,2 ZMEL M1 09/05/2018 T037 B 30/09/2018 13/09/2018
23167,2 ZMEL M1 09/05/2018 T037 B 30/09/2018 09/11/2018
23167,2 ZMEL M1 09/05/2018 T037 B 30/09/2018 01/02/2019
9550 ZMEL M3 13/04/2018 T097 A 10/10/2018 29/08/2018
8296 ZMEL M3 13/04/2018 T097 A 10/10/2018 22/04/2019
2328,58 ZCOR M2 13/04/2018 T055 B 12/06/2018 03/12/2018
639,2 ZCOR M7 16/04/2018 T045 C 17/04/2028 25/10/2018
5467,74 ZPRV M1 02/04/2018 T074 A 10/04/2018 17/01/2019
5467,74 ZPRV M1 20/03/2018 T074 A 05/06/2018 17/01/2019
207,16 ZCOR M7 16/04/2018 T045 A 17/04/2028 06/08/2018
25559,81 ZCOR M2 29/05/2018 T085 B 02/10/2018 20/11/2018
0 ZAPO M1 08/05/2018 T017 B 04/11/2018 01/03/2019
15440 ZAPO M1 08/05/2018 T017 B 04/11/2018 08/05/2018
15440 ZAPO M1 09/05/2018 T017 B 05/11/2018 09/05/2018
5953,5 ZAPO M1 08/05/2018 T017 B 04/11/2018 26/02/2019
10400,02 ZAPO M1 08/05/2018 T017 B 04/11/2018 14/02/2019
7560,36 ZAPO M1 08/05/2018 T017 B 04/11/2018 14/01/2019
33525,66 ZCOR M1 14/05/2018 T015 10/11/2018 13/12/2018
33525,66 ZCOR M1 14/05/2018 T015 10/11/2018 11/12/2018
33525,66 ZCOR M1 14/05/2018 T015 10/11/2018 11/12/2018
33525,66 ZCOR M1 14/05/2018 T015 10/11/2018 13/12/2018
800 ZCOR M1 30/04/2018 T055 27/10/2018 08/11/2018
807,23 ZMEL M3 18/10/2017 T097 A 16/04/2018 28/12/2018
2930,4 ZMEL M3 18/10/2017 T097 A 16/04/2018 13/08/2018
23100 ZCOR M1 06/06/2018 T040 B 19/11/2018 31/12/2018
23100 ZCOR M1 06/06/2018 T040 B 19/11/2018 31/12/2018
23100 ZCOR M1 06/06/2018 T040 B 19/11/2018 31/12/2018
23100 ZCOR M1 06/06/2018 T040 B 19/11/2018 31/12/2018
5892 ZCOR M2 10/05/2018 T064 B 31/07/2018 03/09/2018
995 ZCOR M2 10/05/2018 T064 B 31/07/2018 27/05/2019
4815 ZAPO M1 10/05/2018 T036 C 06/11/2018 13/09/2018
10770,08 ZAPO M1 23/02/2018 T018 B 17/12/2018 25/02/2019
24540 ZAPO M1 24/04/2018 T025 21/10/2018 21/11/2018
4710,97 ZAPO M1 24/04/2018 T025 21/10/2018 26/12/2018
40815 ZCOR M1 06/02/2018 T008 C 30/07/2018 01/11/2018
1480 ZCOR M2 01/09/2017 T003 A 11/09/2017 30/07/2018
503,07 ZMEL M1 27/07/2017 T085 B 23/01/2018 14/09/2018
5904 ZAPO M1 08/06/2018 T044 05/12/2018 01/11/2018
12668,8 ZAPO M1 08/06/2018 T044 05/12/2018 28/08/2018
5336,46 ZAPO M1 08/06/2018 T044 05/12/2018 26/10/2018
8275,77 ZAPO M1 08/06/2018 T044 05/12/2018 28/08/2018
18037,1 ZCOR M7 27/06/2017 T009 A 07/07/2018 03/09/2018
41016 ZCOR M1 23/03/2018 T073 C 19/09/2018 11/12/2018
1980 ZCOR M1 23/03/2018 T073 C 19/09/2018 05/12/2018
60
41016 ZCOR M1 09/06/2017 T073 C 06/12/2017 11/12/2018
1980 ZCOR M1 09/06/2017 T073 C 06/12/2017 05/12/2018
15017,31 ZCOR M1 17/01/2018 T003 B 16/07/2018 02/04/2019
3940 ZAPO M1 26/04/2018 T025 C 23/10/2018 28/08/2018
1769,38 ZAPO M1 26/04/2018 T025 C 23/10/2018 01/11/2018
5537,7 ZAPO M1 26/04/2018 T025 C 23/10/2018 16/04/2019
995 ZAPO M1 26/04/2018 T025 C 23/10/2018 22/08/2018
572,36 ZAPO M1 26/04/2018 T025 C 23/10/2018 17/01/2019
45000 ZAPO M1 26/04/2018 T025 C 23/10/2018 26/11/2018
5167,13 ZAPO M1 26/04/2018 T025 C 23/10/2018 10/04/2019
5132,4 ZCOR M7 23/11/2017 T036 A 24/11/2018 15/04/2019
1443,63 ZCOR M7 26/12/2017 T041 A 17/01/2020 07/01/2019
674,59 ZCOR M2 22/06/2018 T009 B 21/08/2018 01/02/2019
22924,8 ZCOR M1 08/06/2018 T023 B 04/12/2018 01/04/2019
2392,56 ZCOR M7 18/08/2017 T069 B 18/08/2019 14/12/2018
2121,29 ZPRV M1 26/06/2018 T012 A 23/12/2018 31/01/2019
625,95 ZPRV M1 26/06/2018 T012 A 23/12/2018 11/09/2018
3465,69 ZCOR M2 20/06/2018 T076 B 19/04/2018 27/12/2018
3465,69 ZCOR M2 20/06/2018 T076 B 19/04/2018 08/11/2018
30678,48 ZCOR M7 18/08/2017 T069 B 18/08/2019 04/01/2019
15273 ZCOR M7 18/08/2017 T069 B 18/08/2019 20/12/2018
1844,68 ZCOR M7 18/08/2017 T069 B 18/08/2019 12/12/2018
6288 ZCOR M1 16/05/2018 T018 12/11/2018 20/11/2018
3963 ZCOR M1 16/05/2018 T018 12/11/2018 29/03/2019
38314,5 ZCOR M2 26/06/2018 T019 B 24/09/2018 27/03/2019
1560,36 ZCOR M2 26/06/2018 T019 B 24/09/2018 23/01/2019
4370,92 ZCOR M1 27/06/2018 T018 18/06/2019 20/11/2018
5873,82 ZCOR M2 29/05/2018 T054 A 08/06/2018 25/05/2019
500 ZAPO M2 04/12/2017 T054 C 02/06/2018 24/11/2018
5978 ZAPO M1 29/11/2017 T003 A 28/05/2018 12/09/2018
6175 ZAPO M1 11/07/2018 T054 C 07/01/2019 08/10/2018
6175 ZAPO M1 11/07/2018 T054 C 07/01/2019 08/10/2018
6175 ZAPO M1 11/07/2018 T054 C 07/01/2019 08/10/2018
6175 ZAPO M1 11/07/2018 T054 07/01/2019 08/10/2018
12359,22 ZMEL M3 11/07/2018 T017 B 07/01/2019 14/02/2019
400 ZCOR M1 02/07/2018 T097 C 29/12/2018 09/11/2018
0 ZAPO M1 12/07/2018 T054 C 08/01/2019 25/03/2019
25021,44 ZCOR M1 25/06/2018 T048 18/12/2018 24/04/2019
2918,72 ZAPO M1 05/07/2018 T008 B 29/12/2018 14/02/2019
1100 ZAPO M1 05/07/2018 T008 B 29/12/2018 01/11/2018
2640 ZAPO M1 05/07/2018 T008 B 29/12/2018 11/04/2019
7625,82 ZCOR M7 14/06/2017 T064 B 22/06/2018 18/10/2018
1700,46 ZCOR M7 14/06/2017 T064 B 22/06/2018 01/11/2018
3480 ZCOR M7 14/06/2017 T064 B 22/06/2018 04/10/2018
1214,8 ZCOR M7 14/06/2017 T064 B 22/06/2018 04/10/2018
1425,6 ZCOR M7 26/06/2017 T064 B 28/06/2018 13/11/2018
61
1214,8 ZCOR M7 26/06/2017 T064 B 28/06/2018 04/10/2018
33545,22 ZCOR M2 27/06/2018 T067 B 26/08/2018 23/10/2018
33545,22 ZCOR M2 27/06/2018 T067 B 26/08/2018 23/10/2018
33545,22 ZCOR M2 27/06/2018 T067 B 26/08/2018 23/10/2018
1587,6 ZCOR M2 27/06/2018 T067 B 26/08/2018 24/06/2019
2783,09 ZCOR M2 27/06/2018 T067 B 26/08/2018 16/05/2019
23338,12 ZCOR M1 12/07/2018 T060 C 08/01/2019 21/05/2019
33545,22 ZCOR M2 15/05/2018 T067 C 11/11/2018 23/10/2018
1587,6 ZCOR M2 15/05/2018 T067 C 11/11/2018 24/06/2019
2783,09 ZCOR M2 15/05/2018 T067 C 11/11/2018 16/05/2019
4793,7 ZCOR M1 18/07/2018 T037 24/12/2018 07/03/2019
773,7 ZCOR M1 18/07/2018 T037 24/12/2018 15/10/2018
283,3 ZCOR M1 18/07/2018 T037 24/12/2018 15/10/2018
65165,76 ZCOR M1 22/06/2018 T018 B 17/08/2019 10/04/2019
65165,76 ZCOR M1 22/06/2018 T018 B 17/08/2019 10/04/2019
0 ZCOR M2 07/05/2018 T033 B 30/01/2019 30/11/2018
13675 ZCOR M2 07/05/2018 T033 B 30/01/2019 22/04/2019
6488 ZCOR M2 19/07/2018 T095 B 19/10/2018 03/05/2019
12166,22 ZMEL M3 06/07/2018 T026 02/01/2019 05/12/2018
194337 ZCOR M2 20/07/2018 T016 C 16/01/2019 15/06/2019
11200,02 ZAPO M1 05/07/2018 T034 A 01/01/2019 21/01/2019
4350 ZAPO M1 05/07/2018 T034 A 01/01/2019 07/12/2018
10640,52 ZAPO M1 05/07/2018 T034 A 01/01/2019 06/04/2019
6000 ZAPO M1 05/07/2018 T034 A 01/01/2019 17/12/2018
6000 ZAPO M1 05/07/2018 T034 A 01/01/2019 17/12/2018
1458,4 ZAPO M1 05/07/2018 T034 A 01/01/2019 30/03/2019
5606 ZAPO M1 05/07/2018 T034 A 01/01/2019 17/04/2019
24320,05 ZMEL M3 13/07/2018 T017 B 09/01/2019 14/12/2018
46910,96 ZMEL M3 13/07/2018 T017 B 09/01/2019 07/11/2018
1600 ZCOR M7 28/06/2017 T064 B 28/06/2018 12/11/2018
116371,72 ZCOR M2 27/07/2018 T015 B 29/12/2018 25/01/2019
116371,72 ZCOR M2 27/07/2018 T015 B 29/12/2018 25/01/2019
1600 ZCOR M7 28/06/2017 T064 B 28/06/2018 12/11/2018
3140 ZAPO M1 01/08/2018 T036 C 28/01/2019 03/10/2018
25920 ZAPO M1 31/07/2018 T036 C 27/01/2019 19/03/2019
40280,22 ZAPO M1 30/07/2018 T036 B 26/01/2019 26/10/2018
55056,75 ZCOR M1 14/12/2017 T051 12/06/2018 15/08/2019
1743,36 ZMEL M3 03/08/2018 T012 B 30/01/2019 19/11/2018
602,64 ZCOR M2 24/04/2018 T051 A 04/05/2018 01/11/2018
8700 ZCOR M2 24/04/2018 T051 A 04/05/2018 08/03/2019
1287,34 ZMEL M3 12/03/2018 T012 A 08/09/2018 19/12/2018
1287,34 ZMEL M3 12/03/2018 T012 A 08/09/2018 13/11/2018
9231,24 ZCOR M1 17/05/2018 T002 A 13/11/2018 24/10/2018
1689 ZCOR M1 17/05/2018 T002 A 13/11/2018 20/12/2018
1792,8 ZCOR M1 17/05/2018 T002 A 13/11/2018 12/04/2019
2015,7 ZMEL M3 14/05/2018 T067 B 10/11/2018 12/11/2018
62
328,45 ZCOR M1 07/12/2017 T001 A 02/06/2018 29/04/2019
6625 ZCOR M2 10/11/2017 T075 B 08/01/2018 23/01/2019
4214,16 ZMEL M3 14/08/2018 T095 B 19/03/2019 25/02/2019
3369,96 ZCOR M1 08/08/2018 T039 C 28/09/2018 13/02/2019
2568,4 ZCOR M1 08/08/2018 T039 C 28/09/2018 10/04/2019
23506,56 ZAPO M1 22/12/2017 T008 A 20/06/2018 13/05/2019
3687,65 ZCOR M1 18/06/2018 T075 B 09/12/2018 08/02/2019
2280 ZAPO M1 08/06/2018 T055 05/12/2018 26/11/2018
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 22/03/2019
8660,31 ZCOR M2 06/02/2018 T017 A 03/02/2018 15/02/2019
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 05/06/2019
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 22/03/2019
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 19/06/2019
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 01/08/2019
20519,83 ZCOR M2 06/02/2018 T017 A 03/02/2018 19/06/2019
8085,37 ZAPO M1 16/08/2018 T085 A 19/03/2019 05/02/2019
24206,1 ZCOR M2 16/07/2018 L001 A 26/07/2018 08/04/2019
24206,1 ZCOR M1 28/03/2018 L001 A 24/09/2018 08/04/2019
4018,8 ZMEL M3 23/08/2018 T001 A 19/02/2019 16/02/2019
7920 ZMEL M3 23/08/2018 T001 A 19/02/2019 16/11/2018
15078 ZMEL M3 23/08/2018 T001 A 19/02/2019 07/11/2018
1250,4 ZMEL M3 23/08/2018 T001 A 19/02/2019 19/10/2018
5266,8 ZCOR M1 20/08/2018 T024 A 16/02/2019 08/04/2019
4870 ZCOR M1 13/08/2018 T048 B 06/08/2019 29/04/2019
32775,48 ZCOR M1 13/08/2018 T048 06/08/2019 06/12/2018
2021,41 ZCOR M1 13/08/2018 T048 B 06/08/2019 20/02/2019
15295,32 ZCOR M1 15/05/2018 T016 11/11/2018 28/01/2019
3131,95 ZCOR M2 07/06/2018 T001 A 17/06/2018 15/01/2019
225 ZCOR M1 17/04/2018 T023 C 09/10/2018 22/05/2019
21204,74 ZCOR M1 10/08/2018 T041 06/01/2020 26/03/2019
456,07 ZCOR M1 10/08/2018 T041 06/01/2020 07/02/2019
1829 ZCOR M1 10/08/2018 T041 06/01/2020 30/01/2019
1571,7 ZMEL M3 10/08/2018 T074 C 06/02/2019 28/12/2018
30960 ZCOR M2 23/03/2018 T003 B 22/04/2018 03/01/2019
2067,23 ZMEL M3 22/01/2018 T034 C 21/07/2018 14/02/2019
4155 ZCOR M2 20/03/2018 T009 B 18/06/2018 03/12/2018
1518 ZCOR M1 09/07/2018 T041 05/12/2018 18/02/2019
1240 ZCOR M1 09/07/2018 T041 05/12/2018 05/04/2019
7372,8 ZCOR M2 13/06/2018 T064 A 11/08/2018 06/02/2019
2052,93 ZCOR M2 13/06/2018 T064 A 11/08/2018 20/11/2018
6728,1 ZCOR M2 13/06/2018 T064 A 11/08/2018 21/11/2018
6728,1 ZCOR M2 13/06/2018 T064 A 11/08/2018 22/03/2019
6728,1 ZCOR M2 13/06/2018 T064 A 11/08/2018 03/05/2019
518,4 ZCOR M1 28/08/2018 T088 A 11/08/2019 16/01/2019
24840 ZCOR M2 10/08/2018 T054 A 19/08/2018 04/02/2019
5220 ZCOR M2 10/04/2018 T018 B 28/09/2018 08/04/2019
63
5220 ZCOR M2 10/04/2018 T018 B 28/09/2018 08/04/2019
4969,75 ZCOR M2 16/07/2018 T011 B 14/10/2018 23/01/2019
3184 ZAPO M1 30/08/2018 T007 C 26/02/2019 25/10/2018
3267,09 ZCOR M2 13/07/2018 T064 B 09/10/2018 19/05/2019
2305,08 ZAPO M1 22/08/2018 T008 18/02/2019 23/03/2019
239,36 ZCOR M2 07/06/2018 T013 A 06/08/2020 08/01/2019
3320 ZCOR M2 13/09/2018 T073 B 12/04/2019 08/03/2019
15945,04 ZCOR M2 13/09/2018 T073 B 12/04/2019 16/11/2018
6294 ZCOR M1 03/09/2018 T054 C 02/03/2019 28/05/2019
5310 ZAPO M1 12/07/2018 T064 08/01/2019 16/05/2019
122722,01 ZCOR M2 26/07/2018 T008 A 05/08/2018 06/08/2019
1484,2 ZCOR M2 26/07/2018 T008 A 05/08/2018 01/02/2019
1484,2 ZCOR M2 26/07/2018 T008 A 05/08/2018 22/02/2019
6270 ZCOR M2 17/09/2018 T007 B 16/11/2018 26/03/2019
872,96 ZCOR M1 18/09/2018 T017 A 17/03/2019 25/02/2019
335,4 ZCOR M1 18/09/2018 T017 A 17/03/2019 12/11/2018
36142,29 ZCOR M1 12/09/2018 T033 11/03/2019 19/12/2018
13540,42 ZCOR M1 12/09/2018 T033 11/03/2019 19/12/2018
8426,93 ZCOR M1 12/09/2018 T033 11/03/2019 19/04/2019
8426,93 ZCOR M1 12/09/2018 T033 11/03/2019 27/05/2019
16150 ZMEL M3 20/02/2018 T057 17/12/2018 13/02/2019
31874 ZCOR M1 06/06/2018 T078 B 03/12/2018 22/04/2019
3250 ZCOR M1 06/06/2018 T078 B 03/12/2018 25/05/2019
18898 ZCOR M2 21/08/2018 T011 B 20/09/2018 23/01/2019
8948,8 ZCOR M2 25/09/2018 T060 A 26/07/2019 04/06/2019
24955 ZAPO M1 27/08/2018 T011 A 23/02/2019 25/03/2019
8948,8 ZCOR M2 25/09/2018 T060 A 26/07/2019 04/06/2019
8948,8 ZCOR M2 25/09/2018 T060 A 24/07/2019 04/06/2019
8948,8 ZCOR M2 25/09/2018 T060 A 26/07/2019 04/06/2019
8948,8 ZCOR M2 25/09/2018 T060 A 26/07/2019 04/06/2019
24710,93 ZCOR M1 04/07/2018 T085 B 31/12/2018 15/04/2019
5245 ZCOR M2 27/09/2018 T011 B 27/09/2019 07/02/2019
3488,94 ZCOR M2 24/09/2018 T057 B 23/12/2018 08/05/2019
3488,94 ZCOR M2 24/09/2018 T057 B 23/12/2018 08/05/2019
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
6924,1 ZAPO M1 24/09/2018 T017 B 23/03/2019 15/01/2019
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
15360 ZAPO M1 24/09/2018 T017 B 23/03/2019 12/12/2018
4874,94 ZCOR M1 28/05/2018 T042 A 24/11/2018 01/04/2019
2480 ZCOR M2 24/09/2018 T057 B 23/11/2018 22/04/2019
6491,16 ZCOR M2 30/09/2017 T074 B 29/12/2017 18/04/2019
4017,12 ZCOR M1 06/09/2018 T003 B 05/03/2019 27/11/2018
64
2991,16 ZCOR M2 01/12/2017 T003 A 30/01/2018 03/04/2019
0 ZCOR M2 01/12/2017 T003 A 30/01/2018 31/01/2019
6735,63 ZCOR M2 01/12/2017 T003 A 30/01/2018 02/07/2019
14014,96 ZMEL M3 12/09/2018 T064 A 10/03/2019 12/02/2019
4596,6 ZCOR M2 11/10/2018 T071 A 10/12/2018 11/04/2019
29600 ZCOR M2 03/10/2018 T057 B 01/12/2018 01/07/2019
4589,39 ZCOR M2 03/10/2018 T057 B 01/12/2018 23/04/2019
951,72 ZCOR M1 17/10/2018 T041 15/04/2019 13/03/2019
3533 ZCOR M2 04/10/2018 T019 B 30/08/2019 14/12/2018
9240 ZCOR M2 16/10/2018 T074 A 15/12/2018 18/04/2019
78830,88 ZMEL M3 13/09/2018 T071 B 12/03/2019 17/04/2019
4690 ZMEL M3 18/10/2018 T001 C 16/04/2019 23/01/2019
24650 ZCOR M1 09/10/2018 T033 07/04/2019 13/02/2019
19980 ZCOR M2 19/10/2018 T095 B 01/04/2019 15/05/2019
28001 ZCOR M7 30/05/2018 T076 B 01/10/2018 27/03/2019
7672,5 ZCOR M7 30/05/2018 T076 B 01/10/2018 23/04/2019
4005,83 ZCOR M1 15/08/2018 T053 C 09/02/2019 15/03/2019
28780,12 ZCOR M2 14/11/2017 T003 B 12/02/2018 21/03/2019
28780,12 ZCOR M2 14/11/2017 T003 B 12/02/2018 16/04/2019
3780 ZCOR M2 04/09/2018 T046 B 02/12/2018 08/03/2019
2643,02 ZCOR M7 28/06/2018 T008 A 29/06/2019 23/06/2019
2685 ZCOR M2 17/10/2018 T085 B 15/01/2019 15/03/2019
71539,58 ZCOR M1 12/09/2018 T085 A 11/03/2019 12/03/2019
36732,01 ZMEL M3 10/10/2018 T044 A 08/04/2019 29/04/2019
36732,01 ZMEL M3 10/10/2018 T044 A 08/04/2019 29/04/2019
36732,01 ZMEL M3 06/11/2018 T044 05/05/2019 29/04/2019
36732,01 ZMEL M3 10/10/2018 T044 08/04/2019 29/04/2019
36732,01 ZMEL M3 06/11/2018 T044 C 05/05/2019 13/04/2019
2285,31 ZCOR M1 25/10/2018 T057 B 24/05/2019 24/05/2019
1817,69 ZCOR M2 08/11/2018 T039 B 06/02/2019 26/04/2019
4100 ZCOR M2 08/11/2018 T039 B 06/02/2019 01/03/2019
368,8 ZCOR M2 08/11/2018 T039 B 06/02/2019 11/01/2019
6167,4 ZCOR M2 07/11/2018 T095 A 30/06/2019 18/02/2019
22043,84 ZCOR M2 17/10/2018 T011 B 15/03/2019 29/04/2019
26560,8 ZCOR M7 01/06/2018 T076 B 01/10/2018 16/04/2019
1960 ZCOR M7 01/06/2018 T076 B 01/10/2018 12/03/2019
5040 ZCOR M7 01/06/2018 T076 B 01/10/2018 28/02/2019
9520 ZCOR M7 01/06/2018 T076 B 01/10/2018 06/02/2019
23294 ZCOR M7 01/06/2018 T076 B 01/10/2018 02/06/2019
1197,62 ZCOR M1 28/08/2018 T084 C 23/02/2019 03/05/2019
10449,41 ZAPO M1 06/09/2018 T090 B 05/03/2019 22/01/2019
10449,41 ZAPO M1 06/09/2018 T090 B 05/03/2019 22/01/2019
1950 ZCOR M1 30/08/2018 T011 B 26/02/2019 20/03/2019
14220 ZCOR M2 03/11/2018 T060 A 04/09/2019 31/03/2019
4746,82 ZMEL M3 13/11/2018 T064 12/05/2019 07/02/2019
1300 ZCOR M2 08/10/2018 T009 B 06/01/2019 10/05/2019
65
1780 ZCOR M1 24/10/2018 T036 B 22/04/2019 18/01/2019
12988 ZCOR M2 27/09/2018 T033 A 22/09/2018 24/04/2019
31963,66 ZMEL M3 16/10/2018 T018 B 14/04/2019 26/05/2019
15055,2 ZAPO M1 27/11/2018 T054 B 26/05/2019 03/04/2019
7930 ZAPO M1 27/11/2018 T054 B 26/05/2019 04/06/2019
29714,58 ZCOR M2 26/09/2018 T064 B 24/11/2018 28/04/2019
29714,58 ZCOR M2 26/09/2018 T064 B 24/11/2018 02/05/2019
15856 ZCOR M1 10/08/2018 T085 C 06/02/2019 10/05/2019
12107,73 ZCOR M1 02/11/2018 T038 B 01/05/2019 27/03/2019
6779,84 ZCOR M1 22/11/2018 T017 C 28/08/2019 10/02/2019
1071,36 ZCOR M1 22/11/2018 T017 C 28/08/2019 13/02/2019
9162,56 ZMEL M1 14/11/2018 T037 A 23/04/2019 03/04/2019
5944 ZCOR M1 04/12/2018 T080 C 02/06/2019 23/05/2019
5944 ZCOR M1 04/12/2018 T080 C 02/06/2019 20/03/2019
29149,88 ZMEL M3 04/12/2018 T062 C 02/06/2019 01/04/2019
22454,89 ZCOR M2 08/11/2018 T014 B 08/11/2019 14/08/2019
22454,89 ZCOR M2 08/11/2018 T014 B 08/11/2019 28/03/2019
7720 ZCOR M1 01/06/2018 T064 C 27/11/2018 03/09/2019
1276,75 ZAPO M1 24/10/2018 T036 A 22/04/2019 25/04/2019
1530 ZCOR M1 28/11/2018 T003 C 27/05/2019 08/06/2019
40772,6 ZCOR M1 07/12/2018 T079 A 05/06/2019 28/06/2019
40772,6 ZCOR M1 07/12/2018 T079 A 05/06/2019 28/06/2019
1138,5 ZCOR M1 20/09/2018 T057 B 19/03/2019 08/04/2019
2526,36 ZCOR M1 03/12/2018 T060 B 01/10/2019 24/05/2019
5068,8 ZCOR M1 03/12/2018 T060 B 01/10/2019 22/04/2019
1000 ZCOR M1 03/12/2018 T060 B 01/10/2019 25/03/2019
465,2 ZCOR M1 30/11/2018 T042 29/12/2019 15/04/2019
465,2 ZCOR M1 30/11/2018 T042 29/12/2019 22/04/2019
13594,4 ZCOR M1 03/12/2018 T060 B 01/10/2019 05/04/2019
12200 ZCOR M1 03/12/2018 T060 B 01/10/2019 06/04/2019
407,12 ZCOR M1 12/07/2017 T055 C 07/01/2018 18/05/2019
747,6 ZCOR M2 22/11/2018 T017 B 20/01/2019 27/03/2019
2322,24 ZCOR M1 12/12/2018 T054 B 10/06/2019 11/03/2019
7990 ZCOR M1 12/12/2018 T054 B 10/06/2019 28/02/2019
49197,35 ZCOR M2 17/10/2018 T014 B 16/11/2018 26/05/2019
7079,11 ZAPO M1 09/08/2018 T036 B 05/02/2019 12/05/2019
5680 ZCOR M2 05/09/2018 T011 B 04/12/2018 03/05/2019
1459,26 ZCOR M1 16/05/2018 T012 B 17/01/2019 08/06/2019
20942,83 ZCOR M2 26/06/2018 T009 B 24/09/2018 11/07/2019
4080 ZCOR M2 13/12/2018 T039 A 11/06/2019 26/03/2019
16797,3 ZCOR M7 05/09/2018 T044 C 19/09/2020 03/05/2019
2122,1 ZCOR M2 18/09/2018 T001 B 24/12/2018 20/06/2019
2184,2 ZCOR M1 02/04/2018 T036 A 29/09/2018 04/02/2019
3790 ZCOR M1 28/11/2018 T013 C 27/05/2019 26/02/2019
9424,84 ZCOR M2 22/11/2018 T062 B 21/01/2019 17/05/2019
72732 ZMEL M1 30/11/2018 T018 B 29/06/2019 29/09/2019
66
1346 ZCOR M1 20/09/2018 T007 B 19/03/2019 11/08/2019
21216,82 ZAPO M1 19/12/2018 T078 A 03/07/2019 02/04/2019
21216,82 ZAPO M1 19/12/2018 T078 A 03/07/2019 02/04/2019
23630,4 ZMEL M1 19/12/2018 T064 17/06/2019 05/02/2019
23630,4 ZMEL M1 19/12/2018 T064 17/06/2019 05/02/2019
4151,8 ZCOR M1 26/10/2018 T057 C 24/04/2019 26/04/2019
23630,4 ZMEL M1 19/12/2018 T064 10/06/2019 05/02/2019
23630,4 ZMEL M1 19/12/2018 T064 10/06/2019 05/02/2019
47442,4 ZCOR M2 20/12/2018 T009 B 18/02/2019 21/04/2019
23581,32 ZCOR M2 20/12/2018 T009 B 18/02/2019 01/04/2019
4396,2 ZCOR M2 20/12/2018 T009 B 18/02/2019 01/02/2019
17919,48 ZCOR M1 05/12/2018 T012 A 03/06/2019 01/09/2019
1304,83 ZCOR M2 02/04/2018 T009 B 01/07/2018 03/05/2019
12480 ZCOR M2 26/12/2018 T061 C 26/12/2019 24/05/2019
7133,92 ZAPO M1 12/10/2018 T003 B 10/04/2019 25/07/2019
7133,92 ZAPO M1 12/10/2018 T003 B 10/04/2019 25/07/2019
7133,92 ZAPO M1 12/10/2018 T003 B 10/04/2019 25/07/2019
7133,92 ZAPO M1 12/10/2018 T003 B 10/04/2019 25/07/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 27/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 19/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 27/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 19/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 27/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 19/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 27/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 19/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 27/02/2019
1008,48 ZCOR M1 26/12/2018 T048 B 24/06/2019 19/02/2019
7589,67 ZCOR M2 27/11/2018 T009 A 26/01/2019 27/07/2019
749,56 ZPRV M1 05/02/2018 T074 B 16/07/2018 21/03/2019
3080 ZPRV M1 05/02/2018 T074 B 16/07/2018 12/05/2019
69806,34 ZCOR M2 30/10/2018 T012 B 29/12/2018 28/10/2019
69806,34 ZCOR M2 30/10/2018 T012 B 29/12/2018 28/11/2019
960 ZCOR M1 24/05/2018 L001 A 18/11/2018 04/04/2019
749,56 ZPRV M1 05/02/2018 T074 B 16/07/2018 21/03/2019
3080 ZPRV M1 05/02/2018 T074 B 16/07/2018 12/05/2019
1445 ZCOR M2 20/08/2018 T046 B 19/10/2018 21/02/2019
1445 ZCOR M2 20/08/2018 T046 B 19/10/2018 26/03/2019
2666 ZCOR M2 20/08/2018 T046 B 19/10/2018 08/03/2019
2790 ZCOR M1 11/10/2018 T046 31/03/2019 20/05/2019
29218,7 ZCOR M2 09/01/2019 T073 B 08/06/2019 27/02/2019
38630 ZCOR M1 06/11/2018 T051 A 05/05/2019 17/04/2019
10800,8 ZAPO M1 03/08/2018 T010 B 30/01/2019 15/03/2019
5440 ZCOR M1 02/01/2019 T003 A 01/07/2019 07/03/2019
5042,76 ZCOR M1 13/12/2018 T062 C 11/06/2019 09/04/2019
4868,6 ZCOR M1 13/12/2018 T062 C 11/06/2019 27/04/2019
67
4540 ZCOR M1 09/01/2019 T066 B 08/07/2019 03/05/2019
2991,44 ZCOR M1 04/12/2018 T037 C 02/06/2019 08/03/2019
8308,67 ZPRV M1 11/12/2017 T007 B 09/06/2019 03/04/2019
22266 ZCOR M1 10/01/2019 T046 09/07/2019 12/04/2019
31461,6 ZCOR M1 08/01/2019 T095 C 07/07/2019 08/06/2019
8800 ZMEL M3 14/11/2018 T019 B 13/05/2019 26/03/2019
1560,16 ZMEL M3 14/11/2018 T019 B 13/05/2019 31/05/2019
8800 ZMEL M3 14/11/2018 T019 C 13/05/2019 26/03/2019
1560,16 ZMEL M3 14/11/2018 T019 C 13/05/2019 31/05/2019
1459,04 ZCOR M2 15/01/2019 T039 A 31/03/2019 01/06/2019
5259,62 ZMEL M3 29/11/2018 T003 A 29/12/2019 09/05/2019
24913,44 ZMEL M3 29/11/2018 T003 A 29/12/2019 04/05/2019
968 ZCOR M2 16/01/2019 T095 B 29/06/2019 12/05/2019
3800 ZAPO M1 28/12/2018 T006 A 26/06/2019 15/03/2019
8500 ZAPO M1 17/01/2019 T014 C 16/07/2019 25/05/2019
4233 ZCOR M1 09/11/2018 T015 08/05/2019 31/05/2019
94056,31 ZCOR M2 29/10/2018 T051 A 28/12/2018 24/06/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
1131,28 ZCOR M1 08/01/2019 T071 C 07/07/2019 20/02/2019
822,34 ZCOR M2 05/12/2018 T009 A 03/02/2019 12/04/2019
1131,28 ZCOR M1 08/01/2019 T071 C 07/07/2019 20/02/2019
167572,08 ZCOR M2 02/10/2017 T051 A 01/12/2017 10/06/2019
18372,2 ZCOR M2 17/01/2019 T067 B 18/03/2019 05/04/2019
31335,42 ZCOR M1 16/01/2019 T095 B 30/07/2019 18/04/2019
10744 ZCOR M1 25/01/2019 T085 C 03/08/2019 28/06/2019
4440 ZCOR M2 21/01/2019 T008 A 18/03/2019 21/05/2019
1200 ZCOR M2 21/01/2019 T008 A 18/03/2019 12/05/2019
4440 ZCOR M2 21/01/2019 T008 A 18/03/2019 21/05/2019
1200 ZCOR M2 21/01/2019 T008 A 18/03/2019 12/05/2019
1246,51 ZCOR M1 29/01/2019 T054 B 28/07/2019 28/04/2019
23294 ZCOR M7 10/01/2019 T076 B 16/05/2019 02/06/2019
16500 ZCOR M1 24/01/2019 T085 B 23/07/2019 11/03/2019
24000 ZCOR M2 02/10/2018 T017 C 31/03/2019 15/06/2019
360 ZCOR M2 02/10/2018 T017 C 31/03/2019 27/05/2019
6467,01 ZCOR M1 29/01/2019 T066 28/07/2019 25/07/2019
12784,2 ZCOR M1 09/01/2019 T039 07/07/2019 18/04/2019
7090,9 ZCOR M1 09/01/2019 T039 07/07/2019 26/04/2019
3411,08 ZCOR M1 25/01/2019 T023 23/07/2019 29/01/2019
5808 ZCOR M7 29/05/2018 T064 C 07/10/2018 18/04/2019
25215,4 ZCOR M2 24/01/2019 T057 B 25/03/2019 05/07/2019
3905,58 ZCOR M1 06/02/2019 T056 C 05/08/2019 26/03/2019
78000 ZCOR M2 30/01/2019 T060 B 30/03/2019 29/03/2019
68
7840 ZMEL M3 04/02/2019 T014 C 03/08/2019 26/03/2019
3355 ZCOR M1 06/12/2018 T046 C 03/06/2019 27/05/2019
8023 ZCOR M2 11/01/2019 T048 A 21/01/2019 13/05/2019
7695,8 ZMEL M3 29/11/2018 T014 28/05/2019 02/05/2019
895 ZMEL M3 29/11/2018 T014 28/05/2019 15/04/2019
3234 ZMEL M3 29/11/2018 T014 28/05/2019 18/04/2019
17400 ZCOR M1 29/10/2018 T039 27/04/2019 06/06/2019
17861 ZCOR M1 12/02/2019 T084 B 11/08/2019 29/08/2019
21381,26 ZAPO M1 12/02/2019 T061 B 11/08/2019 31/05/2019
8221,9 ZCOR M1 12/02/2019 T071 C 11/08/2019 03/05/2019
1532,68 ZCOR M2 19/09/2018 T097 B 30/11/2018 10/05/2019
8221,9 ZCOR M1 13/02/2019 T071 C 12/08/2019 03/05/2019
6546,56 ZCOR M1 13/02/2019 T075 A 12/08/2019 14/05/2019
14000 ZCOR M2 25/01/2019 T012 A 04/06/2019 13/05/2019
1188 ZCOR M2 04/02/2019 T036 B 05/04/2019 04/06/2019
7686 ZCOR M1 22/01/2019 T084 B 21/07/2019 30/08/2019
8221,9 ZCOR M1 07/02/2019 T071 B 06/08/2019 03/05/2019
23294 ZCOR M7 02/04/2018 T076 B 03/04/2019 02/06/2019
4865 ZCOR M1 15/02/2019 T064 13/08/2019 23/04/2019
17861 ZCOR M1 27/02/2019 T084 B 26/08/2019 14/09/2019
6175 ZCOR M2 25/02/2019 T011 B 24/07/2019 27/04/2019
3980 ZCOR M1 26/02/2019 T014 C 25/08/2019 05/05/2019
389,76 ZCOR M7 28/01/2019 T085 A 29/01/2029 10/04/2019
248,5 ZCOR M7 28/01/2019 T085 A 29/01/2029 09/04/2019
5544 ZCOR M1 08/02/2019 T004 07/08/2019 30/04/2019
3210 ZCOR M1 07/01/2019 T008 C 06/07/2019 03/05/2019
2391 ZCOR M1 11/03/2019 T101 A 07/09/2019 07/05/2019
41046,96 ZCOR M1 07/03/2019 T064 A 03/09/2019 16/05/2019
41046,96 ZCOR M1 07/03/2019 T075 C 03/09/2019 16/05/2019
384 ZCOR M1 11/02/2019 T085 B 28/09/2019 22/04/2019
2388 ZCOR M1 11/02/2019 T085 B 28/09/2019 29/04/2019
5279,68 ZCOR M7 03/07/2018 T044 A 06/07/2019 09/06/2019
5636 ZCOR M7 03/07/2018 T044 A 06/07/2019 26/04/2019
2119,52 ZCOR M7 03/07/2018 T044 A 06/07/2019 30/05/2019
3696 ZCOR M1 04/01/2019 T044 C 03/07/2019 06/05/2019
4600 ZCOR M2 30/05/2019 T067 A 29/07/2019 18/05/2019
16852,08 ZCOR M1 25/03/2019 T100 A 21/09/2019 15/05/2019
3900 ZCOR M2 15/01/2019 T011 B 15/06/2019 18/04/2019
8010 ZCOR M2 04/02/2019 T011 B 05/06/2019 07/06/2019
8010 ZCOR M2 04/02/2019 T011 B 05/06/2019 07/06/2019
8010 ZCOR M2 04/02/2019 T011 B 05/06/2019 07/06/2019
1394,07 ZCOR M1 25/03/2019 T057 B 21/09/2019 30/05/2019
198937,74 ZAPO M1 28/03/2019 T044 24/09/2019 16/05/2019
16852,08 ZCOR M1 29/03/2019 T100 B 25/09/2019 15/05/2019
12500 ZMEL M3 23/01/2019 T051 C 22/07/2019 31/05/2019
328,3 ZCOR M2 04/01/2019 T001 B 04/04/2019 30/05/2019
69
7.2. CÓDIGO PYTHON
############################################################################
# Created by: Prof. Valdecy Pereira, D.Sc.
# UFF - Universidade Federal Fluminense (Brazil)
# email: [email protected]
# Course: Data Science
# Lesson: Classification Methods
# Citation:
# PEREIRA, V. (2019). Project: Classification Methods, File: Python-DS-Classification.py, GitHub
repository: <https://github.com/Valdecy/Classification>
############################################################################
# Libraries
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D
from sklearn.decomposition import TruncatedSVD
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix,
roc_curve, roc_auc_score, f1_score, precision_score, recall_score
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
70
############################################################################
# Util
# Function: ROC Curve
def plot_roc_curve(fpr, tpr):
plt.plot(fpr, tpr, color = 'orange', label = 'ROC')
plt.plot([0, 1], [0, 1], color = 'darkblue', linestyle = '--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend()
plt.show()
############################################################################
# Loading Dataset
dataset = pd.read_csv('Gustavo Pereira Lucchetti-00-Dataset.txt', sep = '\t')
names = dataset.columns
# Feature Scaling
sc0 = MinMaxScaler()
dataset = sc0.fit_transform(dataset)
dataset = pd.DataFrame(data = dataset, columns = names)
71
############################################################################
# Projection
proj_2D = TruncatedSVD(n_components = 2, n_iter = 10, random_state =
101).fit_transform(dataset.iloc[:,:-1])
proj_2D = pd.DataFrame(proj_2D, columns = ['x', 'y'])
proj_2D['labels'] = dataset.iloc[:, -1]
plt.style.use('default')
print(proj_2D)
plot_2D = sns.scatterplot(data = proj_2D, x = 'x', y = 'y', hue = 'labels', palette = 'Set2')
proj_3D = TruncatedSVD(n_components = 3, n_iter = 10, random_state =
101).fit_transform(dataset.iloc[:,:-1])
proj_3D = pd.DataFrame(proj_3D, columns = ['x', 'y', 'z'])
proj_3D['labels'] = dataset.iloc[:, -1]
plt.style.use('default')
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.scatter(proj_3D['x'], proj_3D['y'], proj_3D['z'], c = proj_3D['labels'], s = 50, alpha = 0.6,
edgecolors = 'w')
############################################################################
# Split - Dependent & Independent Variables
X = dataset.iloc[:,:-1] # Independent Variables
y = dataset.iloc[:, -1] # Dependent Variables (Target)
72
X = proj_2D.iloc[:,:-1] # Independent Variables
y = proj_2D.iloc[:, -1] # Dependent Variables (Target)
X = proj_3D.iloc[:,:-1] # Independent Variables
y = proj_3D.iloc[:, -1] # Dependent Variables (Target)
# Split - Training & Tests Datasets
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.20, random_state = 101)
# Feature Scaling
sc1 = MinMaxScaler()
sc2 = MinMaxScaler()
train_X = sc1.fit_transform(train_X)
test_X = sc2.fit_transform(test_X)
# Proj3D / No Scaling.
############################################################################
# KNN
# Algorithm
knn = KNeighborsClassifier(n_neighbors = 3)
knn.fit(train_X, train_y)
# Prediction - Train
knn_pred_y_train = knn.predict(train_X)
73
# Metrics - Train
cm_knn_train = confusion_matrix(knn_pred_y_train, train_y)
print(cm_knn_train)
acc_knn_train = round(accuracy_score(knn_pred_y_train, train_y), 3)
print(acc_knn_train)
print(classification_report(knn_pred_y_train, train_y))
auc_knn_train = roc_auc_score(knn_pred_y_train, train_y)
auc_knn_train
fpr, tpr, thresholds = roc_curve(knn_pred_y_train, train_y)
plot_roc_curve(fpr, tpr)
# Prediction - Test
knn_pred_y_test = knn.predict(test_X)
# Metrics - Test
cm_knn_test = confusion_matrix(knn_pred_y_test , test_y)
print(cm_knn_test)
acc_knn_test = round(accuracy_score(knn_pred_y_test , test_y), 3)
print('Acurácia:',acc_knn_test)
precision_knn_test = round(precision_score(knn_pred_y_test , test_y), 3)
print('Precisão:',precision_knn_test)
recall_knn_test = round(recall_score(knn_pred_y_test , test_y), 3)
print('Recall:',recall_knn_test)
f1_knn_test = round(f1_score(knn_pred_y_test , test_y), 3)
print('F1 Score:',f1_knn_test)
74
print(classification_report(knn_pred_y_test , test_y))
auc_knn_test = roc_auc_score(knn_pred_y_test , test_y)
print('AUC:',auc_knn_test)
fpr, tpr, thresholds = roc_curve(knn_pred_y_test , test_y)
plot_roc_curve(fpr, tpr)