Aplicações Mineração de Dados (Regras de associação) Perfis de clientes ( Market basket analysis ) Merchandizing Detecção de fraudes em seguros de saúde Organização de produtos em vitrines de lojas M. Sc. Luiz Alberto lasf.bel@gmail.com Aula Mineração de Dados 1 Uma regra de associação representa um padrão de relacionamento entre itens de dados do domínio da aplicação que ocorre com uma determinada freqüência na base de dados. parte significativa das compras de homens, às sextas-feiras à noite, que inclui fraldas, inclui também cerveja. {fralda} {cerveja} o cliente que compra pão e manteiga, 80% das vezes compra leite. {pão, manteiga} {leite} muitos pacientes aidético que contraem a doença candidíase também têm pneumonia. {candidíase} {pneumonia} Considere a regra A B. Aé chamado de antecedenteda regra e Bé chamado de conseqüente. a sua medida de suporte(sup) representa a porcentagem de transações da base de dados que contêm os itens de Ae B, indicando a relevância da mesma. Já a sua medida de confiança(conf) representa, dentre as transações que possuem os itens de A, a porcentagem de transações que possuem também os itens de B, indicando a validade da regra. Aula Mineração de Dados 2 Aula Mineração de Dados 3
Definições úteis Regra A ==> B Confidência = P (A e B ocorrerem juntos) / P(A) = P (B A) O problema da mineração de regras de associação, conforme definido originalmente em1993, consiste em encontrar todas as regras de associação que possuam suporte e confiança maiores ou iguais, respectivamente, a um suporte mínimo (SupMin) e uma confiança mínima (ConfMin), especificados pelo usuário. Suporte = P (A e B ocorrerem juntos) Prof. 4 Luiz Alberto Aula Mineração de Dados 5 TID Produtos Comprados ------------------------------------------------------ 1 biscoito, cerveja, chá, salaminho 2 cerveja, couve, lingüiça, pão, queijo 3 café, brócolis, couve, pão 4 brócolis, café, cerveja, couve, pão, salaminho 5 brócolis, café, couve, pão, refrigerante 6 couve, lingüiça Observe que cada registro da base de dados armazena a relação de produtos adquiridos por um cliente específico. Um exemplo de regra de associação que poderia ser minerada nesta base de dados, através da utilização de uma ferramenta de data mining, é dado por: {cerveja} => {salaminho}. Note que duas das seis transações que compõem a base contêm os produtos {cerveja} e {salaminho}. Desta maneira, o suporte da regra {cerveja} =>{salaminho} pode ser calculado da seguinte forma: 2/6 = 33,33%. Aula Mineração de Dados 6 Aula Mineração de Dados 7
Observe agora que na base de dados, existem duas transações que contêm os produtos {cerveja} e {salaminho} juntos e três transações que contêm o produto {cerveja}. A confiança da regra {cerveja}=>{salaminho} pode então ser calculada da seguinte maneira: 2/3 = 66,67%. Este valor indica que 66,67% dos consumidores que compraram {cerveja} também compraram {salaminho}. Regras de associação são extraídas a partir de bases de dados que contêm transações - formadas por conjuntos de itens do domínio da aplicação. Id-Transação (TID) Itens Comprados 1 leite, pão, refrigerante 2 cerveja, carne 3 cerveja, fralda, leite, refrigerante 4 cerveja, fralda, leite, pão 5 fralda, leite, refrigerante {fralda} {cerveja} confiança de 66% (suporte médio) {fralda} {leite} confiança de 100% (suporte alto) {leite} {fralda} confiança de 75% (suporte alto) {carne} {cerveja} confiança de 100% (suporte baixo) Aula Mineração de Dados 8 Aula Mineração de Dados 9 Regras de associação possuem índices que indicam sua relevância e a validade. O fator de suporte de uma regra X Y é definido pela porcentagem de transações que incluem todos os itens do conjunto X U Y. Representa a fração das transações que satisfazem tanto o antecedente quanto o conseqüente da regra. O suporte de uma regra indica sua relevância. Seja R a regra X Y. Seja T o número de transações consideradas. Seja T XUY o número de transações que incluem os elementos de X U Y. Suporte(R) = T XUY / T O fator de confiança de uma regra X Y é definido pela porcentagem de transações que incluem os itens X e Y em relação a todas que incluem os itens de X. Representa o grau de satisfatibilidade do conseqüente, em relação às transações que incluem o antecedente. A confiança indica a validade da regra. Seja R a regra X Y. Seja T X o número de transações que incluem os elementos de X. Seja T XUY o número de transações que incluem os elementos de X U Y. Confiança(R) = T XUY / T X TID Itens Comprados Suporte({leite} {suco}) = 2 / 4 = 50% 101 leite, pão, suco Suporte({suco} {leite}) = 50% 792 leite, suco Suporte({pão} {suco}) = 1130 leite, ovos Suporte({pão} {ovos}) = 1735 pão, biscoito, café Suporte({pão,café} {biscoito}) = Id-T. Itens Comprados Confiança({leite} {suco}) = 2 / 3 = 67% 101 leite, pão, suco Confiança({suco} {leite}) = 2 / 2 = 100% 792 leite, suco Confiança({pão} {suco}) = 1130 leite, ovos Confiança({pão} {ovos}) = 1735 pão, biscoito, café Confiança({pão,café} {biscoito}) = Aula Mineração de Dados 10 Aula Mineração de Dados 11
Mineração de Entrada: Base de dados de transações; Suporte mínimo; Confiança mínima. Algoritmos de Mineração (de ) Apriori Partition Saída: Todas as regras de associação que possuem suporte e confiança maiores ou iguais ao suporte e à confiança mínimos. Aula Mineração de Dados 12 Aula Mineração de Dados 13
L2 L2 L2 L3
Conjunto de itens frequentes L2 L3 Exemplos de regras: Se {Pão} => {Manteiga} = 43% Se {Pão,Leite} => {Cerveja} = 60% Se {Leite} => {Pão,Cerveja} = 38% WEKA: JAVA para Data Mining WEKA: JAVA para Data Mining @relation produtos @attribute leite {yes, no} @attribute cafe {yes, no} @attribute biscoito {yes, no} @attribute farinha {yes, no} @attribute açucar {yes, no} @attribute pao {yes, no} @attribute feijao {yes, no} @data no, yes, no, yes, yes, no, no yes, no, yes, yes, yes, no, no no, yes, no, yes, yes, no, no yes, yes, no, yes, yes, no, no no, no, no, no, yes, no, no no, no, no, no, yes, no, no yea, no, no, no, yes, no, no yes, no, yes, yes, yes, no, no yes, no, yes, no, yes, no, no yes, no, yes, yes, yes, no, yes Carga do arquivo; Análise dos atributos e seus valores; Indicação de pré-processamento; Escolha da tarefa de data mining; Escolha do algoritmo a aplicar; Acerto dos parâmetros; Execução; Análise dos resultados de saída.
WEKA: JAVA para Data Mining WEKA: JAVA para Data Mining === Run information === Scheme: weka.associations.apriori -N 10 -T 0 -C 0.9 -D 0.05 -U 1.0 -M 0.1 -S -1.0 Relation: paoeleite Instances: 10 Attributes: 7 leite cafe biscoito farinha açucar pao feijao === Associator model (full training set) === Apriori ======= Minimum support: 0.5 Minimum metric <confidence>: 0.9 Number of cycles performed: 8 Generated sets of large itemsets: Size of set of large itemsets L(1): 7 Size of set of large itemsets L(2): 12 Size of set of large itemsets L(3): 6 WEKA: JAVA para Data Mining Produtos.arff Best rules found: 1. pao=no 10 ==> açucar=yes 10 conf:(1) 2. açucar=yes 10 ==> pao=no 10 conf:(1) 3. feijao=no 9 ==> açucar=yes 9 conf:(1) 4. feijao=no 9 ==> pao=no 9 conf:(1) 5. pao=no feijao=no 9 ==> açucar=yes 9 conf:(1) 6. açucar=yes feijao=no 9 ==> pao=no 9 conf:(1) 7. feijao=no 9 ==> açucar=yes pao=no 9 conf:(1) 8. açucar=yes 10 ==> feijao=no 9 conf:(0.9) 9. pao=no 10 ==> feijao=no 9 conf:(0.9) 10. açucar=yes pao=no 10 ==> feijao=no 9 conf:(0.9) @relation produtos @attribute leite {yes,no} @attribute cafe {yes,no} @attribute biscoito {yes,no} @attribute farinha {yes,no} @attribute açucar {yes,no} @attribute pao {yes,no} @attribute feijao {yes,no} @data no, yes, no, yes, yes, no, no yes, no, yes, yes, yes, no, no no, yes, no, yes, yes, no, no yes, yes, no, yes, yes, no, no no, no, no, no, yes, no, no no, no, no, no, yes, no, no yes, no, no, no, yes, no, no yes, no, yes, yes, yes, no, no yes, no, yes, no, yes, no, no yes, no, yes, yes, yes, no, yes @relation produtos @attribute leite {yes} @attribute cafe {yes} @attribute biscoito {yes} @attribute farinha {yes} @attribute açucar {yes} @attribute pao {yes} @attribute feijao {yes} @data?, yes,?, yes, yes,?,? yes,?, yes, yes, yes,?,??, yes,?, yes, yes,?,? yes, yes,?, yes, yes,?,??,?,?,?, yes,?,??,?,?,?, yes,?,? yes,?,?,?, yes,?,? yes,?, yes, yes, yes,?,? yes,?, yes,?, yes,?,? yes,?, yes, yes, yes,?, yes 27
Dúvidas? 28