Você está na página 1de 31

UNIDADE

2 PRÉ-PROCESSAMENTO
DE DADOS E
CLASSIFICAÇÕES

Mineração de dados - Unidade2.indd 38 08/07/19 16:34


Objetivos da unidade
Conhecer o processo de pré-processamento de dados;

Aprender a limpar e integrar dados;

Aprender a transformar dados a fim de normalizar;

Aprender a reduzir dados em intervalos maiores;

Conhecer relações de vendas através de regras de associação;

Analisar padrões em cálculos de confiança, suporte e Lift;

Aprender a fazer mineração do MySQL e no Excel;

Aprender conceitos de algoritmos de mineração baseados em Apriori.

Tópicos de estudo
Pré-processamento de dados Tipos de regras de associação e
Limpeza de dados algoritmos
Integração de dados Algoritmo Apriori
Algoritmo Partition
Transformação de dados, redução e
discretização
Transformação
Redução
Discretização

Regras de associação: cálculo de


suporte, de confiança e de Lift
Cálculo de suporte
Cálculo de confiança
Cálculo de Lift

MINERAÇÃO DE DADOS 39

Mineração de dados - Unidade2.indd 39 08/07/19 16:34


Pré-processamento de dados
Para iniciar a limpeza e o tratamento de dados, primeiro deve-se ter uma tabela. Toda empre-
sa possui bancos de dados, que são feitos em MySQL, Excel ou similares. Havendo uma estrutura
de Data Warehouse, pode-se aproveitar e incorporar no processo KDD; caso não haja tal estrutu-
ra, deve-se criar o KDD. O MySQL exporta para Excel e, assim, fica viável selecionar e transformar
no MySQL, além de facilitar a criação de dashboards no Excel depois.
Veremos como enviar arquivos do SQL para o Excel e também criaremos uma tabela no MySQL.
Primeiramente, ative o XAMPP e abra o MySQL. A Fig. 1 mostra o script a ser digitado com
explicações. Logo após a Fig. 1, está o código para facilitar cópia.

Figura 1. Criando um banco de dados e uma tabela.

Note que o banco de dados se chama mineração, que a tabela se chama vendas_trimes-
trais e que foram inseridos sete registros, apesar de na prática haver muito mais. O último co-
mando select *from vendas_trimestrais faz a seleção da tabela, gerando a tabela abaixo do
comando, que poderá ser exportada para Excel clicando em Export. Guarde bem esse botão,
pois o próximo exercício será sobre ele.

MINERAÇÃO DE DADOS 40

Mineração de dados - Unidade2.indd 40 08/07/19 16:35


O script para copiar e executar está abaixo; se até agora você nunca usou o Excel, recomen-
da-se começar da seguinte forma:
1. Instale o XAMPP e o Excel;
2. Abra o XAMPP e ative-o;
3. Abra o Workbench MySQL.

create database mineracao;


use mineracao;

create table vendas_trimestrais(


numero_produto int,
nome_produto varchar(45),
data_do_pedido date ,
nome_cliente varchar(45),
forma_pagamento varchar(20),
valor_produto float(6,2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

insert into vendas_trimestrais values


(1, ‘Mala’, ‘2019-01-01’, ‘Marcelo’, ‘Cartão’, 200),
(2, ‘Mochila’, ‘2019-01-02’, ‘Julio’, ‘Cartão’, 300),
(3, ‘Tenis’, ‘2019-01-07’, ‘Julio’, ‘Cartão’, 600),
(4, ‘Boné’, ‘2019-02-08’, ‘Fabio’, ‘Dinheiro’, 100),
(5, ‘Luva’, ‘2019-02-12’, ‘Daniela’, ‘Dinheiro’, 50),
(6, ‘Calça’, ‘2019-02-10’, ‘Daniela’, ‘Dinheiro’, 150),
(7, ‘Blusa’, ‘2019-03-11’, ‘Gabriel’, ‘Cartão’, 400);

select * from vendas_trimestrais;

Figura 2. Código MySQL para copiar e colar.

Depois que tiver executado, quando aparecer o botão Export, será necessário exportar
para ver no Excel. A Fig. 3 mostra esse processo.

MINERAÇÃO DE DADOS 41

Mineração de dados - Unidade2.indd 41 08/07/19 16:35


Figura 3. Exportar para Excel no formato ponto e vírgula CSV (;).

O formato CSV é muito utilizado em Data Science e significa “arquivo separado por vírgula”,
mas pode ser separado por ponto e vírgula também.
Agora, é necessário importar no Excel, conforme ilustrado na Fig. 4.

Figura 4. Importar arquivo CSV no Excel como UTF-8.

MINERAÇÃO DE DADOS 42

Mineração de dados - Unidade2.indd 42 08/07/19 16:36


Depois de clicar em carregar, será importada a tabela para o Excel, como ilustra a Fig. 5.

Figura 5. Tabela vendas_trimestrais importada.

Limpeza de dados
Ao pegar uma tabela, existem dados ruidosos, errados (discrepantes ou inconsistentes) e
faltantes, por isso, precisaremos fazer uma limpeza. Ela pode ser feita tanto no Excel, quanto
no SQL. No exemplo a seguir, foi feita no SQL.
Nunca use uma tabela central para deletar; crie tabelas novas a partir das existentes e te-
nha sempre backups das tabelas.
• Dados com ruídos são valores muito acima ou muito abaixo do esperado. Por exemplo,
salário acima de R$ 20.000,00 entre vendedores; pesos abaixo de 40 quilos para homens adul-
tos. Façamos uma inclusão (insert) em nossa tabela (Fig. 6).
Digite o comando:
insert into vendas_trimestrais (8, ‘Blusa’, ‘2019-03-12’, ‘Julio’, ‘Cartão’, 1500);
Após inserir e selecionar, você verá que este dado é um outlier, ou seja, atípico, pois ne-
nhuma blusa naquela loja custaria R$ 1.500,00. Assim, para deletar valores maiores que R$
1.000,00, basta digitar: delete from vendas_trimestrais where valor_produto > 1000;.
Ou então, para remover apenas blusas com valor maiores que R$ 1.000,00:
delete from vendas_trimestrais where nome_produto = ‘blusa’ and valor_produto > 1000 ;.

MINERAÇÃO DE DADOS 43

Mineração de dados - Unidade2.indd 43 08/07/19 16:36


Figura 6. Inserindo e deletando dados ruidosos.

• Dados discrepantes são mais latentes e menos subjetivos. Por exemplo, um treino de
futebol masculino com uma aluna do sexo feminino. Nesse caso, pode-se deletar pela última
letra do nome ou mesmo por análise, pois às vezes nomes confundem. Uma análise prévia é
sempre útil para evitar erros. Veja o exemplo de deletar dados que terminam com a letra a,
sabendo que não se aplica à tabela, servindo apenas como explicação: delete from vendas_tri-
mestrais where nome_produto LIKE ‘%A’ ;.
• Dados faltantes são simplesmente dados que faltam. Cabe ao especialista determinar
quais podem estar incluídos ou não. Para deletar dois dados faltantes, primeiro insira um re-
gistro com dados faltantes, depois faça a limpeza, de acordo com a Fig. 7.

Figura 7. Inserindo dados ruidosos.

MINERAÇÃO DE DADOS 44

Mineração de dados - Unidade2.indd 44 08/07/19 16:36


Note que a forma de inserir foi diferente, pois serão inseridos menos dados, logo, a sintaxe
também muda. Observe, agora, o Diagrama 1:

DIAGRAMA 1. DIFERENÇAS NA FORMA DE INSERIR

Inserir de forma idêntica a tabela

● Insert int vendas_trimestrais values (8, ‘blusa’, ‘2019-03-12’, ‘julio’, ‘cartão’, 1500);

Inserir dados a menos


● Insert into vendas_trimestrais (numero_produto, nome_produto, nome_cliente, valor_produto)
values (9, ‘perfume’, ‘julio’, 300)

Observe que nem a data nem a forma de pagamento foram inseridas no segundo exemplo.
Existem duas saídas na hora de selecionar em que null significa “vazio”: proibir a inserção ou
deletar dados vazios na empresa. Há consultas em que alguns dados, de fato, não são necessá-
rios e deixar de registrar clientes por faltar dados pode ser um prejuízo. Pode-se utilizar tanto
o operador AND quanto OR para deletar campos vazios. O OR deleta quando faltar um ou
outro campo, já o AND deleta quando faltarem os dois, obrigatoriamente. Pode-se selecionar
também quando um dado for vazio (is null):
delete from vendas_trimestrais where data_do_pedido or forma_pagamento is null;
select * from vendas_trimestrais where data_do_pedido and forma_pagamento is null;

Integração de dados
Integrar dados significa uni-los. Após a explicação teórica, veremos como fazer a integração
em MySQL através de Inner Join e, quando abordarmos Python e Numpy, veremos como utili-
zar o comando merge.
Como unir tabelas em MySQL com o Inner Join
Antes de mais nada, é necessário observar alguns fatores:
• Datas diferentes: deve-se sempre observar se a união de tabelas ou bancos de dados po-
derá gerar redundância; analisar se uma das tabelas é mais antiga que a outra e se possuem
os mesmos dados. O erro será induzido, caso haja a redundância;
• Sobrecarga: outro ponto a se observar é que as vezes a redundância sobrecarrega o
sistema, ou database, fato que o torna ineficiente;
• Confusão de nomes: dados da mesma categoria ou iguais podem, às vezes, ter diferentes
nomes; por exemplo, alguns departamentos taxam a coluna de compras como “investimento”,
outros, como “compras”, mas, às vezes, são os mesmos dados;

MINERAÇÃO DE DADOS 45

Mineração de dados - Unidade2.indd 45 08/07/19 16:36


• Medidas discrepantes: outro ponto importante antes de fundir dados é analisar se as
medidas são idênticas ou diferentes; por exemplo, um banco de dados está em metros, outro,
em quilômetros.
Logicamente, a integração de dados não precisa ser feita por MySQL, pode ser feita pelo Ex-
cel ou de qualquer outro modo. A Fig. 8 mostrará como exibir a união de duas tabelas, a partir
dos seguintes passos:
• Será criada a tabela editora, com código da editora (ID_editora) e nome da editora
(nome_editora).
• Logo, será criada a tabela de livros nome_livro; data_pub; prec_livro; ID_editora; nome_autor.
Note que o ID_editora aparecerá nas duas tabelas. Depois de criadas as tabelas, será feita
uma seleção com os dois dados. Observe no Quadro 1 a sintaxe para copiar e colar; a Fig. 8
mostra o processo completo e a tabela já com a união.

QUADRO 1. SINTAXE PARA CRIAÇÃO DAS TABELAS

Create database vendas_livros;


use vendas_livros;
create table tbl_livro(
id_editora INT,
nome_livro varchar(50),
nome_autor varchar(50),
data_pub INT,
prec_livro INT );

create table tbl_editora(


id_editora INT,
nome_editora varchar(50) );

insert into tbl_livro( nome_livro, nome_autor,data_pub, prec_livro,id_editora) VALUES


(‘Access’,’Fabio Souza’, 2019, 68.35, 4),
(‘Java’, ‘Marcos Junior’, 2008, 63.00, 3),
(‘Web’, ‘Fabio Soares’, 2017, 50.00, 2);

insert into tbl_editora values (1, ‘Viena’),(2, ‘Saraiva’),(3,’Cultura’),(4,’Campos’);

select * from tbl_livro


INNER JOIN tbl_editora
ON tbl_livro.ID_editora =tbl_editora.ID_editora;

MINERAÇÃO DE DADOS 46

Mineração de dados - Unidade2.indd 46 08/07/19 16:36


Criar tabela livro

Criar tabela editora

Inserir tabela editora

Inserir na tabela livro


Selecionar tabela livro com tabela editora onde o
ID_editora for igual nas duas

Resultado da união de tabelas

Figura 8. Inner Join para integração de dados.

Depois de fazer a seleção, você pode exportar clicando em Export. Pronto: a união de tabe-
las estará feita! Aí é só importar para o Excel, como já demonstrado.

Transformação de dados, redução e discretização


A seguir, será explicado como fazer a transformação (normalização) e depois a redução.

Transformação
Em análises estatísticas, alguns valores podem gerar resultados tendenciosos. Para corrigir
isso, alguns procedimentos de normalização podem ser feitos.
• Normalização pela amplitude ou normalização linear: consiste em pegar os valores má-
ximos e mínimos e gerar um número de 0 até 1. Observe a Tabela 1, com os dados já inseridos.

MINERAÇÃO DE DADOS 47

Mineração de dados - Unidade2.indd 47 08/07/19 16:37


TABELA 1. DADOS

NUM NOME DAT NOME2 FORMA VALOR

1 Mala 2019-01-01 Marcelo Cartão 200

2 Mochila 2019-01-02 Júlio Cartão 300

3 Tênis 2019-01-07 Júlio Cartão 600

4 Boné 2019-02-08 Fábio Dinheiro 100

5 Luva 2019-02-12 Daniela Dinheiro 50

6 Calça 2019-02-10 Daniela Dinheiro 150

7 Blusa 2019-03-11 Gabriel Cartão 400

A equação a seguir demonstra como normalizar para evitar dados tendenciosos. Logo
após, há um exemplo apenas com a primeira linha e todos os resultados na Tabela 2.

Valor - Mínimo
Valor normalizado =
Máximo - Mínimo
200 - 50
Valor normalizado = = 0,428 ou 0,42
400 - 50

TABELA 2. RESULTADO COM NORMALIZAÇÃO PELOS MÁXIMOS E MÍNIMOS

NORMALIZADO
NUM NOME_PROD DAT NOME_CLIEN FORMA VALOR
– LINEAR

1 Mala 2019-01-01 Marcelo Cartão 200 0,273

2 Mochila 2019-01-02 Júlio Cartão 300 0,455

3 Tênis 2019-01-07 Júlio Cartão 600 1,000

4 Boné 2019-02-08 Fábio Dinheiro 100 0,091

5 Luva 2019-02-12 Daniela Dinheiro 50 0,000

6 Calça 2019-02-10 Daniela Dinheiro 150 0,182

7 Blusa 2019-03-11 Gabriel Cartão 400 0,636

MINERAÇÃO DE DADOS 48

Mineração de dados - Unidade2.indd 48 08/07/19 16:37


Agora, supondo que o banco de dados é enorme, como fazer para descobrir o máximo ou o
mínimo no MySQL? Na tabela já criada anteriormente, pode-se utilizar a sintaxe select max(-
valor_produto), min(valor_produto) from vendas_trimestrais;. Veja o Quadro 2:

QUADRO 2. ACHANDO O MÁXIMO E MÍNIMO PELO MYSQL

use mineracao;
create table vendas_trimestrais(
numero_produto int,
nome_produto varchar(45),
data_do_pedido date ,
nome_cliente varchar(45),
forma_pagamento varchar(20),
valor_produto float(6,2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into vendas_trimestrais values
(1, ‘Mala’, ‘2019-01-01’, ‘Marcelo’, ‘Cartão’, 200),
(2, ‘Mochila’, ‘2019-01-02’, ‘Julio’, ‘Cartão’, 300),
(3, ‘Tenis’, ‘2019-01-07’, ‘Julio’, ‘Cartão’, 600),
(4, ‘Boné’, ‘2019-02-08’, ‘Fabio’, ‘Dinheiro’, 100),
(5, ‘Luva’, ‘2019-02-12’, ‘Daniela’, ‘Dinheiro’, 50),
(6, ‘Calça’, ‘2019-02-10’, ‘Daniela’, ‘Dinheiro’, 150),
(7, ‘Blusa’, ‘2019-03-11’, ‘Gabriel’, ‘Cartão’, 400);

select * from vendas_trimestrais;


select max(valor_produto), min(valor_produto) from vendas_trimestrais;

• Normalização pela soma: ao somar todos os elementos da coluna valor, o resultado é R$


1.800,00. Desse modo, pode-se dividir o valor pela soma, conforme a seguinte equação:

Valor
Valor normalizado =
Somatório
200
Valor normalizado = = 0,11
1.800

MINERAÇÃO DE DADOS 49

Mineração de dados - Unidade2.indd 49 08/07/19 16:37


TABELA 3. RESULTADO COM NORMALIZAÇÃO PELOS MÁXIMOS E
MÍNIMOS E NORMALIZAÇÃO PELA SOMA

NOME_ NORMALIZADO NORMALIZADO


NUM DAT NOME_CLIEN FORMA VALOR
PROD – LINEAR – SOMA

1 Mala 2019-01-01 Marcelo Cartão 200 0,273 0,11

2 Mochila 2019-01-02 Júlio Cartão 300 0,455 0,17

3 Tênis 2019-01-07 Júlio Cartão 600 1,000 0,33

4 Boné 2019-02-08 Fábio Dinheiro 100 0,091 0,06

5 Luva 2019-02-12 Daniela Dinheiro 50 0,000 0,03

6 Calça 2019-02-10 Daniela Dinheiro 150 0,182 0,08

7 Blusa 2019-03-11 Gabriel Cartão 400 0,636 0,22

Pode-se escolher qual procedimento de normalização utilizar de acordo com análises de


qual traz mais acertos ao longo do tempo.

Redução
Depois de fazer a transformação, é necessário seguir para a redução. Além de transformar
os dados através da normalização, pode-se reduzir valores a fim de melhorar o desempenho,
uma vez que valores muito específicos podem ser irrelevantes.
Quando forem variáveis nominais, é possível reduzi-las através de tabelas dinâmicas no
Excel. Variáveis numéricas podem ser reduzidas através de gráficos, seja em Excel ou em
Pyhton com Matplotlib (será explicado mais adiante).
A tabela dinâmica da Fig. 9 mostrará apenas os valores, analisando forma de pagamento
versus valor. A coluna D aparece como Nome2, pois foi editada e ficou igual propositalmente
para que seja exemplificado o risco de colocar colunas iguais. A primeira coluna é o nome do
produto, a segunda é o nome do cliente.

MINERAÇÃO DE DADOS 50

Mineração de dados - Unidade2.indd 50 08/07/19 16:37


1 Clique na tabela e inserir tabela dinâmica

2 Clique em planilha existente e após clicar na caixa branca,clique na célula A10

3 Arraste o campo nome para colunas


Arraste o campo forma para linhas
Arraste o campo valor para valores

Figura 9. Criar uma tabela dinâmica.

Para remover os filtros de colunas, basta desativá-los no menu da direita. Agora, observe as
Figs. 10 e 11: da mesma forma que o nome ficou dentro, pode-se fazer zonas ficarem dentro de
cidades para agilizar o processo de mineração.

Figura 10. Fazendo macrofiltros.

MINERAÇÃO DE DADOS 51

Mineração de dados - Unidade2.indd 51 08/07/19 16:38


A Fig. 11 foi editada para entender outro tipo de aplicação: os subfiltros.

Figura 11. Subfiltros.

É muito importante citar que, apesar de nosso exemplo ter utilizado o valor original, é reco-
mendado, em alguns cenários de valores um pouco mais aberrantes – isto é, outliers que não
eram tão aberrantes a ponto de ter que fazer a limpeza –, usar o valor normalizado linear ou
usar a soma no lugar da coluna valor. O especialista de domínio deve avaliar como proceder.

DICA
Tabelas dinâmicas são muito úteis; procure cursos de curta duração de tabela dinâmica
e depois de dashboards em Excel ou dashboards em Power Bi.

Discretização
A discretização nada mais é do que criar intervalos; por exemplo, crianças de 0 até 12 anos,
adolescentes de 12 a 17 etc. Será mostrado em MySQL como fazer isso e, posteriormente, você
poderá aplicar também a Python. Para isso, criaremos funções.
Foi criada uma tabela no MySQL para descobrir idades por horário de academia, como pode
se observar a Fig. 12.

MINERAÇÃO DE DADOS 52

Mineração de dados - Unidade2.indd 52 08/07/19 16:38


Como será a primeira função criada, exigirá um pouco mais de atenção. Não é um procedi-
mento difícil, mas já entra no âmbito da programação. No exemplo, iremos transformar discre-
tizando, ou seja, criando intervalos.

Criação da tabela com nome,


hora_aula, faixa_etária e sexo

Inserção de dados

Resultado

Figura 12. Criação de database e de tabela de academia por idade no MySQL.

Mais adiante, você observará o código para copiar e colar.


Uma vez criada a tabela, deve-se criar uma query nova (canto superior esquerdo da Fig. 13)
e copiar os códigos de criação de função, conforme a Fig. 13. Observe que quem vai antes das
12h é pessoa matinal; caso vá antes das 18h, é vespertina; caso vá à noite, é noturna.

Nova Query

A função chamará “filtro_de_idade” e pegará a “hora_aula”


O nome da operação é “resultado”
If significa SE, Then significa ENTÃO, Elself significa SENÃO
Se a aula_hora for menor que 12, então pessoa matinal
Se a aula_hora for menor que 18, então pessoa vespertina
Se a aula_hora for menor que 23, então pessoa noturna

Figura 13. Criando uma nova query e criação de função chamada filtro_de_idade.

MINERAÇÃO DE DADOS 53

Mineração de dados - Unidade2.indd 53 08/07/19 16:39


Por fim, existem vários tipos de seleção estratégica. O Quadro 3 e a Fig. 14 mostram três
seleções diferentes e muito úteis.

QUADRO 3. DOIS TIPOS DE SELECT

select faixa_etaria, filtro_de_idade(hora_aula) from horarios;


Seleciona a faixa etária da função

select count(*), filtro_de_idade(hora_aula) from horarios group by


filtro_de_idade(hora_aula);
Conta os grupos criados

Figura 14. Resultado da função e da seleção.

MINERAÇÃO DE DADOS 54

Mineração de dados - Unidade2.indd 54 08/07/19 16:40


No Quadro 4 estão os códigos para copiar e colar.

QUADRO 4. QUERYS

Query 1

create database academia;


use academia;
create table horarios (
nome varchar (45),
hora_aula time DEFAULT NULL,
faixa_etaria varchar(45),
sexo ENUM(‘f’, ‘m’)
);
insert into horarios values
(‘Julio’, ‘06:00’, ‘adulto’, ‘m’),
(‘Marcia’, ‘16:00’, ‘jovem’, ‘f’),
(‘Gabriela’, ‘06:00’, ‘3 idade’, ‘f’),
(‘Gabriel’, ‘21:00’, ‘jovem’, ‘m’),
(‘Daniela’, ‘16:00’, ‘jovem’, ‘f’),
(‘Daniel’, ‘21:00’, ‘adulto’, ‘m’);
select * from horarios;

Query 2
delimiter $$
create function filtro_de_idade(hora_aula time) returns varchar(60)
begin
declare resultado varchar(60);
if(hora_aula < ‘12:00’) then
set resultado = ‘Pessoa matinal’;
elseif (hora_aula <= ‘18:00’) then
set resultado = ‘Pessoa vespertina’;
elseif (hora_aula <= ‘23:00’) then
set resultado = ‘Pessoa noturna’;
end if;
return resultado;
end $$
delimiter ;
select faixa_etaria, filtro_de_idade(hora_aula) from horarios;
select count(*), filtro_de_idade(hora_aula) from horarios group by
filtro_de_idade(hora_aula);

Regras de associação: cálculo de suporte, de con-


fiança e de Lift
Veremos, agora, como fazer três tipos de cálculos, que posteriormente serão demonstrados
em programação.

MINERAÇÃO DE DADOS 55

Mineração de dados - Unidade2.indd 55 08/07/19 16:40


Ao descobrir associações entre vendas, descobre-se regras de associação. Como será mos-
trado adiante, em um conjunto de dados, pode-se descobrir quando a venda de um produto
induz a venda de outro produto. Por exemplo, quantas vezes a venda de café induz a venda de
açúcar, e quantas vezes a venda de café e açúcar induz a venda de leite. O objetivo de desco-
brir regras de associação é fazer promoções de vendas de dois produtos juntos, colocando-os
lado a lado nas prateleiras; fazer degustações e promoções especiais no corredor específico;
reajustar os folhetos, revistas e sites da loja etc.

Cálculo de suporte
O cálculo de suporte é a quantidade de vezes que um dado se repete, sendo, portanto, a
quantidade de repetição dividida pela quantidade total.
Analisando a Tabela 4, pode-se perceber que a caneta foi o produto mais vendido. Em com-
pras casadas, o único conjunto que se destacou foi lápis com borracha.

TABELA 4. COMPRAS DE CANETAS, LÁPIS E PAPEL

Suporte de
Vendas Suporte de venda dupla
venda individual

Código Caneta Lápis Borracha Item Suporte Item Suporte

1 SIM NÃO NÃO Caneta 0,5 ou 50% Caneta,


0
lápis
2 SIM NÃO NÃO Lápis 0,3 ou 30% Caneta,
0
borracha
3 NÃO SIM NÃO Borracha 0,4 ou 40%
Lápis,
0,2
borracha
4 NÃO SIM SIM
Caneta,
5 NÃO SIM SIM lápis, 0
borracha
6 SIM NÃO NÃO

7 SIM NÃO NÃO

8 NÃO NÃO SIM

9 NÃO NÃO SIM

10 SIM NÃO NÃO

Em primeiro lugar, para calcular o suporte de conjuntos com um item levando em conta que
o administrador estipulou um suporte mínimo de 0,4 ou 40%, utilizou-se a seguinte equação.

MINERAÇÃO DE DADOS 56

Mineração de dados - Unidade2.indd 56 08/07/19 16:40


Número de registros com x e y
suporte ≥ 0,4 =
Números totais de linhas (registros)
A Tabela 5 mostra itens vendidos; a Tabela 6 analisa os itens mais vendidos, com suporte
mínimo de 0,4; e a Tabela 7 mostra os conjuntos mais vendidos com suporte de 0,4.

TABELA 5. VENDAS DE ITENS AUTOMOTIVOS

Sabão para Silicone Suporte Farol de Roda de


Código Cera
carros pneu óculos milha ferro

1 SIM SIM SIM NÃO NÃO NÃO

2 NÃO NÃO NÃO SIM SIM SIM

3 SIM SIM NÃO NÃO SIM NÃO

4 NÃO NÃO SIM SIM SIM NÃO

5 NÃO NÃO SIM NÃO NÃO SIM

6 NÃO SIM SIM NÃO SIM SIM

7 SIM SIM SIM NÃO NÃO NÃO

8 NÃO NÃO NÃO SIM SIM SIM

9 NÃO SIM SIM NÃO NÃO NÃO

10 SIM SIM NÃO NÃO NÃO NÃO

TABELA 6. SUPORTES ACIMA DE 0,4 PARA UM ITEM

Suporte para um item

Cera 0,4

Sabão para carros 0,6

Silicone pneu 0,6


Suporte > = 0,4
Suporte óculos 0,3

Farol de milha 0,5

Roda de ferro 0,4

MINERAÇÃO DE DADOS 57

Mineração de dados - Unidade2.indd 57 08/07/19 16:40


TABELA 7. SUPORTES ACIMA DE 0,4 PARA UM ITEM

Suporte para um item

Cera, sabão 0,4

Cera, silicone 0,2

Cera, farol 0,1

Cera, roda 0

Sabão, silicone 0,4

Sabão, farol 0,2 Suporte > = 0,4

Sabão, roda 0,1

Silicone, farol 0,3

Silicone, roda 0,2

Farol, roda 0,3

Sabão, silicone 0,5

Resultado final da primeira fase: os conjuntos aprovados em suporte foram sabão com
silicone e cera com sabão.

Cálculo de confiança
Se em primeiro lugar foi feito o cálculo de suporte, em segundo lugar será feito o cálculo
de confiança, que analisa a frequência de venda de um conjunto combinado dividido pela
repetição do segundo item em todas as vendas.
Segue, então, a fórmula do cálculo de confiança com um valor mínimo de 90%, estipulado
pelo cientista de dados ou administrador de dados:

Número de registros com x e y (combinado)


confiança ≥ 0,9 =
Números de registros com X (repetições do segundo item)
Então surgem algumas dúvidas:
• Quando ele compra cera, ele compra sabão?
• Quando ele compra sabão, ele compra cera?
• Quando ele compra sabão, ele compra silicone?
• Quando ele compra silicone, ele compra sabão?

MINERAÇÃO DE DADOS 58

Mineração de dados - Unidade2.indd 58 08/07/19 16:40


TABELA 8. ANÁLISE DE DADOS COM SUPORTE DE ITENS
COMBINADOS ABAIXO DE 0,4 EXCLUÍDOS

Código Cera Sabão para carros Silicone pneu

1 SIM SIM SIM

2 NÃO NÃO NÃO

3 SIM SIM NÃO

4 NÃO NÃO SIM

5 NÃO NÃO SIM

6 NÃO SIM SIM

7 SIM SIM SIM

8 NÃO NÃO NÃO

9 NÃO SIM SIM

10 SIM SIM NÃO

Hipótese 1: quando ele compra cera, ele compra sabão combinadamente?


SE cera ENTÃO sabão?
4 compras combinadas de sabão(y) com cera(x)/dividido por 4 ceras(x).
A confiança é 1,0 x 100 = 100%.
Resultado da hipótese 1: todos que compram cera compram sabão.
Hipótese 2: quando ele compra sabão, ele compra cera combinadamente?
SE sabão ENTÃO cera?
4 compras combinadas de ceras(y) com sabão(x)/6 sabões(x).
A confiança é 0,66 x 100 = 66%.
Resultado da hipótese 2: só 66% dos que compram sabão compram cera.
Hipótese 3: quando ele compra silicone, ele compra sabão combinadamente?
SE silicone ENTÃO sabão?
4 compras combinadas de sabão(y) com silicone(x)/6 silicones(x).
A confiança é 0,66 x 100 = 66%.
Resultado da hipótese 3: só 66% dos que compram silicone compram sabão.
Resultado final da segunda fase: tendo a média da confiança mínima estipulada pelo ad-
ministrador em 0,9 ou 90%, o único conjunto que terá promoção de vendas combinadas (isto
é, vender os dois itens juntos em uma promoção) é sabão com cera, os demais tiveram empate
técnico e passarão para a terceira etapa.

MINERAÇÃO DE DADOS 59

Mineração de dados - Unidade2.indd 59 08/07/19 16:40


Cálculo de Lift
O Lift divide a confiança pela quantidade de vezes que o item repete para saber:
• Quais itens repetem menos por ter menos do mesmo?
• Quais itens repetem mais por ter mais do mesmo?
• Quais itens repetem menos tendo mais?
• Qual item repete mais tendo menos?
Às vezes, pode-se repetir mais por ter mais itens, mas isso não significa que é mais
provável, quando se analisa empates. Assim, Lift é uma medida mais justa. Caso as ven-
das de sabão e silicone empatem com as de silicone e cera, guardadas as devidas pro-
porções, qual das duas se repetiu mais? Ou seja, qual conjunto tem mais chances de ser
vendido? Pode-se fazer cinco propagandas e vender quatro produtos, ou 10 propagandas
e vender os mesmos quatro produtos. A propaganda mais eficiente foi a que rendeu qua-
tro vendas cinco vezes, em vez das 10 que trouxeram o mesmo resultado. Assim, as cinco
propagandas renderam duas vezes mais que as 10.
Uma vez que a hipótese 1 aparece como vencedora até então, faremos a análise das hipó-
teses 2 e 3.
Hipótese 2 revisada por Lift
4 compras combinadas de ceras(y) com sabão(x)/6 sabões(x).
A confiança é 0,66 x 100 = 66%.
Resultado da hipótese 2: 66% dos que compram cera compram sabão.
Cálculo de Lift: tendo quatro ceras, o cálculo de Lift será 0,66/0,4 = 1,65.
Resultado revisado: clientes que compram cera têm 1,65 chances de comprar sabão.
Hipótese 3 revisada por Lift
4 compras combinadas de sabão(y) com silicone(x)/6 silicones(x).
A confiança é 0,66 x 100 = 66%.
Cálculo de Lift: tendo seis silicones, o cálculo de Lift será 0,66/0,6 = 1,1.
Resultado revisado: clientes que compram sabão têm 1,1 chances de comprar silicone.
Resultado final fase 3: quem compra cera tem mais chance de comprar sabão do que
quem compra sabão tem mais chance de comprar silicone. Isso pode ser inferido pois
todas as compras de cera tinham sabão, mas nem todas as compras de sabão tinham
silicone.
Por fim, esses três parâmetros, suporte, confiança e Lift, servem para a descoberta de
regras de associação. Existe, ainda, a descoberta de sequências, cujo foco é analisar ao longo
do tempo o crescimento ou o declínio de um produto.

MINERAÇÃO DE DADOS 60

Mineração de dados - Unidade2.indd 60 08/07/19 16:40


A descoberta de sequências avalia quais produtos foram vendidos no decorrer do tempo,
para fazer promoções ou lançar produtos por épocas do ano, datas especiais, em crises am-
bientais, como enchentes ou até mesmo em campanhas presidenciais.

Tipos de regras de associação e algoritmos


Usaremos o programa Weka para fazer mineração aplicando o algoritmo Apriori. Vale citar que
a linguagem Python, mais para frente, demonstrará como fazer o algoritmo por programação. Não
há uma forma melhor que a outra: é uma questão de que cada caso exige uma aplicação, ou que
cada pessoa prefere uma a outra.

Algoritmo Apriori
Antes de explicar o que é o algoritmo Apriori, veremos um exemplo prático: faremos neste
momento a mineração no programa Weka. É indicado que você baixe o programa Weka, de
acordo com a Fig. 15.

Figura 15. Baixar e abrir Weka.

O Weka trabalha com arquivos do tipo .arff feitos em blocos de notas. Assim como está no
Quadro 5, você deve colar em um bloco de notas e salvar como vendas.arff.
Neste arquivo, o nome é RELATION. Os atributos (@attribute) são refrigerante, cereais, sor-
vete, café, pão e quatro meses – de janeiro até abril. E os dados (@Data) são nove registros
de vendas, mostrando quais produtos foram vendidos em cada mês. Na hora de salvar, tome
bastante cuidado, observando bem a Fig. 16.

MINERAÇÃO DE DADOS 61

Mineração de dados - Unidade2.indd 61 08/07/19 16:41


Figura 16. Salvar como vendas.arff, mudar o tipo para todos os arquivos.

QUADRO 5. ALGORITMO-BASE PARA AULA

%Vendas em um mercado
@RELATION vendas

@attribute refrigerante {sim, não}


@attribute cereais {sim, não}
@attribute sorvete {sim, não}
@attribute café {sim, não}
@attribute pão {sim, não}
@attribute mes {janeiro, fevereiro, marco, abril}

@data
sim,não,sim,não,não,janeiro
sim,não,sim,não,sim,fevereiro
sim,não,não,não,sim,fevereiro
não,sim,não,sim,não,marco
não,não,não,sim,sim,abril
sim,não,sim,sim,não,fevereiro
não,sim,não,não,não,marco
sim,não,não,sim,não,janeiro
não,não,sim,não,sim,janeiro

A Fig. 17 mostra como importar arquivos, já a Fig. 18 mostra os dados exibidos em gráficos.

Figura 17. Importar arquivos .arff do Weka.

MINERAÇÃO DE DADOS 62

Mineração de dados - Unidade2.indd 62 08/07/19 16:41


Figura 18. Resultado do gráfico da seleção.

Depois, clique em Associate, e, logo, em Start. O próprio programa já faz os cálculos de


confiança e de Lift instantaneamente. Em seguida, iremos configurar mudando os valores de
suporte mínimo. A Fig. 19 mostra como executar o algoritmo Apriori.

Figura 19. Resultados de cálculo de confiança e de Lift sem determinar suporte mínimo.

MINERAÇÃO DE DADOS 63

Mineração de dados - Unidade2.indd 63 08/07/19 16:42


Analisando os resultados, percebe-se que, na linha 4, o Lift de compras de refrigerante em
fevereiro foi o maior (1,8). Ou seja, é muito provável que em fevereiro a venda de refrigerantes
seja alta. Volte e analise o arquivo vendas.arff, você verá que maioria das compras de refrige-
rante foram feiras em fevereiro. Outro itemset significativo se encontra na linha 9, em que a
venda de refrigerante quase nunca é acompanhada de venda de pão.
Caso a empresa queira aumentar o filtro mudando o suporte mínimo para 0,4 e o mínimo
de confiança para 0,9, veremos que só sobraram três certezas, como podemos observar na Fig.
20. Nela, refrigerante e cereais não combinam, sorvete e cereais também não. Claro que esses
dados foram totalmente inventados, mas, se não fossem, refletiriam a realidade do marketing
e hábitos de consumo.

Figura 20. Aumentando o critério do filtro.

O algoritmo Apriori analisa a função se então. Caso 70% dos dados individuais (arroz ou
suco ou cereais, por exemplo) tenham suporte mínimo maior que 0,4, por exemplo, os outros
30% são descartados. Desses 70% que restaram, o algoritmo seguirá para avaliar quais con-
juntos (arroz com suco, ou arroz com cereais) são maiores que 0,4; e, supondo que 50% sejam
maiores que 0,4, os outros 20% serão descartados, funcionando como uma função.

MINERAÇÃO DE DADOS 64

Mineração de dados - Unidade2.indd 64 08/07/19 16:42


Algoritmo Partition
O algoritmo Partition divide o conjunto de dados inteiros em alguma partição. Por exemplo,
separam-se cinco conjuntos maiores que o suporte mínimo. O exemplo do Diagrama 2 é aleatório.

DIAGRAMA 2. ALGORITMO PARTITION, PARTIÇÃO 1

Partição 1 Partição 2 Partição 3 Partição 4 Partição 5


Cinco vendas de Duas vendas de Uma venda de Duas vendas de Duas vendas em
carro em feverei- carro em abril e carro em abril, carro em junho, fevereiro, duas
ro e quatro ven- duas vendas em uma venda carro uma em fevereiro vendas em julho
das em março. junho. em junho e duas e duas vendas em e duas vendas em
em julho. março. março.

No Diagrama 2, descobriu-se que a primeira partição (pivô) teve mais itemsets. Foram
cinco vendas em fevereiro e quatro em março, pois sempre se analisa apenas valores maiores
que o suporte mínimo utilizando a Apriori. O Partition calculará a relação de proporção entre
partições locais sobre repetições globais (quantas vezes fevereiro e março aparecem na
primeira partição/quantidade total de fevereiro com março no conjunto) em cada uma das
variáveis (fevereiro, março, abril, junho e julho), sendo o desenho da segunda fase do processo
exemplificado no Diagrama 3.

DIAGRAMA 3. ALGORITMO PARTITION, PARTIÇÃO 2

Partição 1 Partição 2 Partição 3 Partição 4 Partição 5


Cinco vendas de Duas vendas de Uma venda de Duas vendas de Duas vendas em
carro em feverei- carro em abril e carro em abril; carro em junho, fevereiro, duas
ro e quatro ven- quatro vendas em uma venda carro uma em fevereiro vendas em julho
das em março. junho. em junho e duas e duas vendas em e duas vendas em
em julho. março. março.

MINERAÇÃO DE DADOS 65

Mineração de dados - Unidade2.indd 65 08/07/19 16:42


Esse algoritmo geralmente é feito junto com QuickSort em Python, mas o conceito é de
particionar e analisar a partir do Pivot. Depois de analisar as relações entre a quantidade da
partição e a quantidade total, será possível analisar, de fato, as maiores repetições.
Além de avaliar os padrões, há casos em que será necessário fazer uma hierarquia de pa-
drões, o que chamamos de medidas de interesse. Entretanto, há casos que um padrão desco-
berto pode ser irrelevante para a empresa.

MINERAÇÃO DE DADOS 66

Mineração de dados - Unidade2.indd 66 08/07/19 16:42


Sintetizando
Nesta unidade, aprendemos sobre o pré-processamento de dados, começando pela limpe-
za, que elimina valores ruidosos, ou seja, maiores ou menores do que o normal; valores nulos
ou vazios; e valores aberrantes ou inconsistentes, como é o caso de uma pessoa do sexo mas-
culino em um grupo de grávidas. Tal limpeza é necessária para evitar falhas após a mineração.
Vimos, ainda, a redução em nomes maiores, como dados que, ao invés de serem lidos por
zonas, são lidos por cidades.
Falamos, também, sobre discretização, que nada mais é do que a criação de intervalos,
conceitos de tabelas dinâmicas, importações em Excel, exportações em MySQL, criação de
funções em MySQL, estratégias de uso do comando select em MySQL etc.
Foi demonstrado através de fórmulas, bem como através de select max. e select min., no
MySQL, como fazer a normalização de dados, que é uma estratégia para mudar as escalas dos
valores, a fim de reduzir os valores ruidosos.
Aprendemos como fazer cálculos de suporte, que é a proporção de repetições de um, dois ou
até três produtos, no conjunto inteiro. Em outras palavras, quantas vezes se repete tal produto.
O cálculo de confiança foi demonstrado, a fim de saber como descobrir relações entre com-
pras, ou seja, qual a porcentagem da chance de que, ao adquirir um produto, o consumidor
adquira outro.
O cálculo de Lift refere-se à quantidade de certeza sobre o cálculo de confiança, ao analisar
com “pente fino” o quanto a confiança é verdadeira.
Foi demonstrado através do Weka como calcular confiança pelo algoritmo Apriori, de ma-
neira bem rápida e eficiente, automatizando os cálculos de confiança e Lift. Por fim, vimos
conceitos sobre o algoritmo Partition, que pode ser feito de forma manual, pelo Excel ou por
programação.

MINERAÇÃO DE DADOS 67

Mineração de dados - Unidade2.indd 67 08/07/19 16:42


Referências bibliográficas
CASTRO, G. R. Discussão conceitual sobre dado, informação e conhecimento: perspectiva
dos alunos concluintes do curso de Biblioteconomia da UFPB. 2011. 51 f. Monografia – Universi-
dade Federal da Paraíba, João Pessoa, 2011.
GOLDSHIMDIT, R.; BEZERRA, E.; PASSOS, E. Data Mining: conceitos, técnicas, algoritmos, orien-
tações e aplicações. Rio de Janeiro: Elsiever, 2015.
INSTALAR MySQL e XAMPP online video cutter com 1. Disponível em: <https://www.youtube.
com/watch?v=srcl7b1LeCg&feature=youtu.b>. Acesso em: 27 mar. 2019. POWER BI.
Welcome to The Data Stories Gallery. Disponível em: <https://community.powerbi.com/t5/Da-
ta-Stories-Gallery/bd-p/DataStoriesGallery>. Acesso em: 27 mar. 2019.
PRIMEIROS passos com MySQL. 2019. Disponível em: <https://www.youtube.com/watch?v=-
QoCcYpf_ZXw&feature=youtu.be>. Acesso em: 27 mar. 2019.

MINERAÇÃO DE DADOS 68

Mineração de dados - Unidade2.indd 68 08/07/19 16:42

Você também pode gostar