Regras de Associação para Mineração de Dados baseadas em Operadores SQL Bianca Caruso da Paixão
Agenda Regras de Associação Sintaxe Geral Regras de Associação Simples Regras de Associação com Clusterização Regras de Associação com Condição Regras de Associação com Generalização Mineração de Dados
Regras de Associação Ex: Compras de uma loja {brown_boots, jackets} => {col_shirts} Sup=0,25 Conf=1 Mineração de Dados
Regras de Associação Representam padrões de relacionamento entre itens de uma base de dados  Suporte: Porcentagem de transações da base de dados que contêm os itens do antecedente e do consequente, indicando a relevância da mesma Confiança: Representa, dentre as transações que possuem os itens do antecedente, a porcentagem de transações que possuem também os itens do consequente, indicando a validade da regra Mineração de Dados
Sintaxe Geral <MineRuleOp> := MINE RULE <TableName> AS SELECT DISTINCT <BodyDescr>, <HeadDescr>  [,SUPPORT] [,CONFIDENCE] [WHERE <WhereClause>] FROM <FromList> [WHERE <WhereClause>] GROUP BY <Attribute> <AttributeList> [HAVING <HavingClause>] [CLUSTER BY <Attribute> <AttributeList> [HAVING <HavingClause>] ] EXTRACTING RULES WITH SUPPORT: <real>,    CONFIDENCE: <real> Mineração de Dados
Sintaxe Geral <BodyDescr> := [<CardSpec>] <AttrName> <AttrList> AS BODY /* cardinalidade default: 1..n */ <HeadDescr> := [<CardSpec>] <AttrName> <AttrList> AS HEAD /* cardinalidade default: 1..1 */ <CardSpec> := <Number> ..  (<Number> | n) <AttributeList> := {, <AttributeName>} Mineração de Dados
Regras de Associação Simples Mineração de Dados
Regras de Associação Simples MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY,   1..1 item AS HEAD,   SUPPORT, CONFIDENCE FROM compras GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0.1,   CONFIDENCE: 0.2 Mineração de Dados
Regras de Associação Simples Variações das regras de associação simples: Agora, estamos interessados em compras cujo o preço seja menor que R$150 MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY,     1..1 item AS HEAD,     SUPPORT, CONFIDENCE FROM compras  WHERE price <= 150 GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0.1,     CONFIDENCE: 0.2 Mineração de Dados
Regras de Associação Simples Supondo que queremos compras com menos de 6 itens MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY,     1..1 item AS HEAD,     SUPPORT, CONFIDENCE FROM compras  GROUP BY transacao HAVING COUNT(*) <= 6 EXTRACTING RULES WITH SUPPORT: 0.1,     CONFIDENCE: 0.2 Mineração de Dados
Regras de Associação Simples Podemos agrupar a tabela origem por qualquer atributo, o que altera o sentido da regra Por exemplo: Se agruparmos a tabela compras pelo cliente, ao invés de agruparmos pela transação, teremos regularidades de cada cliente, independente da ordem que os itens foram comprados. MINE RULE CustomerAssociations AS SELECT DISTINCT item AS BODY,     1..n item AS HEAD,     SUPPORT, CONFIDENCE FROM compras GROUP BY cliente EXTRACTING RULES WITH SUPPORT: 0.1,     CONFIDENCE: 0.2 Mineração de Dados
Regras de Associação com Clusterização Até agora, as tuplas foram agrupadas de forma que cada grupo possui o mesmo valor de atributo.  A partir de agora, vamos assumir que um grupo de tuplas é particionado em sub-grupos, chamados Cluster. Cada cluster é determinado por um atributo. Com cluster, extraímos regras onde o antecessor e o consequente referenciam clusters do mesmo grupo. Os conceitos de Suporte e Confiança são computados por grupos, dado que essas regras refletem regularidades de um grupo.  Mineração de Dados
Regras de Associação com Clusterização Tabela Compra agrupada por cliente e clusterizada por data Mineração de Dados
Regras de Associação com Clusterização MINE RULE ClusteredByDate AS SELECT DISTINCT 1..n item AS BODY,   1..n item AS HEAD,   SUPPORT, CONFIDENCE FROM compras GROUP BY cliente CLUSTER BY data  EXTRACTING RULES WITH SUPPORT: 0.1,     CONFIDENCE: 0.2   Mineração de Dados
Regras de Associação com Clusterização Mineração de Dados
Regras de Associação com Clusterização MINE RULE OrderedSets AS SELECT DISTINCT 1..n item AS BODY,   1..n item AS HEAD,   SUPPORT, CONFIDENCE FROM compras GROUP BY cliente CLUSTER BY data HAVING BODY.data < HEAD.data  EXTRACTING RULES WITH SUPPORT: 0.1,     CONFIDENCE: 0.2   Mineração de Dados
Regras de Associação com Clusterização Mineração de Dados
Regras de Associação com Condição Mineração de Dados Neste caso, estamos interessados em regras onde o antecedente possui preço maior ou igual a R$100 e o consequente itens inferiores a R$100. Não podemos usar:  o predicado Where associado a cláusula From (modifica a tabela original) O predicado Having da cláusula Group By (descarta os grupos) Cluster By (não possui esse tipo de especificação) Solução: Novo Predicado
Regras de Associação com Condição MINE RULE FilteredOrderedSets AS  SELECT DISTINCT item AS BODY,    1..n item AS HEAD,    SUPPORT, CONFIDENCE WHERE BODY.price >=100 AND HEAD.price < 100 FROM compras GROUP BY cliente CLUSTER BY data HAVING BODY.data  < HEAD.data EXTRACTING RULES WITH SUPPORT: 0,1,   CONFIDENCE: 0,2 Mineração de Dados
Regras de Associação com Condição Mineração de Dados
Regras de Associação com Generalização Dada uma tabela de onde regras de associações são extraídas, através de uma taxonomia sobre as tuplas das tabelas, regras de associação podem ser especificadas por meio das propriedades descritas na taxonomia.  A taxonomia pode ser representada por uma Árvore Hierárquica, onde os nós representam a classe dos itens, e seus filhos são as sub-classes. Os nós folha correspondem aos itens do database.  Mineração de Dados
Regras de Associação com Generalização Mineração de Dados ITEM SHOES BOOTS HIKING_BOOTS OTHER_SHOES NORMAL_BOOTS BROWN_BOOTS DARK_BOOTS CLOTHES PANTS SKI_PANTS NORMAL_PANTS JACKETS SHIRTS WHITE_SHIRTS COLORED_SHIRTS
Regras de Associação com Generalização Hierarquias na Condição de Mineração: Restringir as regras de associação extraídas da tabela de origem, de forma que essas regras referenciam uma parte específica da hierarquia Por exemplo: Queremos extrair regras que associem itens que são da classe  boots  com itens que são da classe  pants.  Problema: A tabela de origem não possui informações a respeito da hierarquia dos itens. Mineração de Dados
Regras de Associação com Generalização MINE RULE BootsPantsRules AS  SELECT DISTINCT item AS BODY,    item AS HEAD,    SUPPORT, CONFIDENCE WHERE HEAD.item in (SELECT node  FROM HierarquiaItem WHERE ancestor = ‘pants’) AND BODY.item in (SELECT node  FROM HierarquiaItem WHERE ancestor = ‘boots’) FROM compras GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,2   CONFIDENCE: 0,5 Mineração de Dados
Regras de Associação com Generalização Hierarquias na Condição de Mineração: Da tabela origem, a única regra que podemos extrair com essas caracteristicas é : {hiking_boots} => {ski_pants}  /  Suporte = 0,25 e Confiança = 1 Mineração de Dados
Regras de Associação com Generalização Hierarquias na Tabela Origem: Regras de Associação podem ser generalizadas para obter regras que associem classes Podemos obter generalizações a partir da substituição de cada folha da hierarquia por um de seus antecedentes. Por exemplo; {hiking_boots} => {ski_pants} pode ser generalizado como:   {hiking_boots} => {pants}, {hiking_boots} => {clothes},   {boots} => {ski_pants}, {shoes} => {ski_pants},   {boots} => {pants}, {boots} => {clothes} ,    {shoes} => {pants} e {shoes} => {clothes}  Mineração de Dados
Regras de Associação com Generalização MINE RULE GeneralizedRules AS  SELECT DISTINCT ancestor AS BODY,    1..n  ancestor AS HEAD,    SUPPORT, CONFIDENCE FROM  (SELECT * FROM compras, HierarquiaItem WHERE node = item) GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,3   CONFIDENCE: 0,5 Mineração de Dados
Regras de Associação com Generalização Mineração de Dados transacao cliente data item preco quantidade ord_num ancestor level 1 C1 17/12/95 ski_pants 150 1 1 ski_pants 0 1 C1 17/12/95 ski_pants 150 1 1 pants 1 1 C1 17/12/95 ski_pants 150 1 1 clothes 2 1 C1 17/12/95 hiking_boots 180 1 2 hiking_boots 0 1 C1 17/12/95 hiking_boots 180 1 2 boots 1 1 C1 17/12/95 hiking_boots 180 1 2 shoes 2 ... ... ... ... ... ... ... ... ... body head Suporte Confiança {ski_pants} {hiking_boots} 0.25 1 {ski_pants} {boots} 0.25 1 {ski_pants} {shoes} 0.25 1 {clothes} {hiking_boots} 0.25 0.25 {clothes} {boots} 0.5 0.5 {clothes} {shoes} 0.5 0.5 {clothes} {boots, shoes} 0.25 0.5 ... ... ... ...
Regras de Associação com Generalização Uso Generalizado de Hierarquia Hierarquia pode ser usado tanto na Condição de mineração como na tabela de origem Por exemplo: Supondo que estamos interessados em extrair regras de associação generalizadas que possuam sub classes de  boots  no antecedente e sub classes de  pants  no consequente Esse problema requer o uso de hierarquias na tabela de origem para produzir regras de associação generalizadas e posteriormente na Condição de Mineração, para reduzir o numero de regras extraídas. Mineração de Dados
Regras de Associação com Generalização MINE RULE GeneralizedBootsPantsRules AS  SELECT DISTINCT ancestor AS BODY,    1..n  ancestor AS HEAD,    SUPPORT, CONFIDENCE WHERE HEAD.item in (SELECT node  FROM HierarquiaItem WHERE ancestor = ‘pants’) AND BODY.item in (SELECT node  FROM HierarquiaItem WHERE ancestor = ‘boots’) FROM  (SELECT * FROM compras, HierarquiaItem WHERE node = item) GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,3   CONFIDENCE: 0,5 Mineração de Dados
Dúvidas

A New SQL-Like Operator for Mining Association Rules Presentation

  • 1.
    Regras de Associaçãopara Mineração de Dados baseadas em Operadores SQL Bianca Caruso da Paixão
  • 2.
    Agenda Regras deAssociação Sintaxe Geral Regras de Associação Simples Regras de Associação com Clusterização Regras de Associação com Condição Regras de Associação com Generalização Mineração de Dados
  • 3.
    Regras de AssociaçãoEx: Compras de uma loja {brown_boots, jackets} => {col_shirts} Sup=0,25 Conf=1 Mineração de Dados
  • 4.
    Regras de AssociaçãoRepresentam padrões de relacionamento entre itens de uma base de dados Suporte: Porcentagem de transações da base de dados que contêm os itens do antecedente e do consequente, indicando a relevância da mesma Confiança: Representa, dentre as transações que possuem os itens do antecedente, a porcentagem de transações que possuem também os itens do consequente, indicando a validade da regra Mineração de Dados
  • 5.
    Sintaxe Geral <MineRuleOp>:= MINE RULE <TableName> AS SELECT DISTINCT <BodyDescr>, <HeadDescr> [,SUPPORT] [,CONFIDENCE] [WHERE <WhereClause>] FROM <FromList> [WHERE <WhereClause>] GROUP BY <Attribute> <AttributeList> [HAVING <HavingClause>] [CLUSTER BY <Attribute> <AttributeList> [HAVING <HavingClause>] ] EXTRACTING RULES WITH SUPPORT: <real>, CONFIDENCE: <real> Mineração de Dados
  • 6.
    Sintaxe Geral <BodyDescr>:= [<CardSpec>] <AttrName> <AttrList> AS BODY /* cardinalidade default: 1..n */ <HeadDescr> := [<CardSpec>] <AttrName> <AttrList> AS HEAD /* cardinalidade default: 1..1 */ <CardSpec> := <Number> .. (<Number> | n) <AttributeList> := {, <AttributeName>} Mineração de Dados
  • 7.
    Regras de AssociaçãoSimples Mineração de Dados
  • 8.
    Regras de AssociaçãoSimples MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY, 1..1 item AS HEAD, SUPPORT, CONFIDENCE FROM compras GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 9.
    Regras de AssociaçãoSimples Variações das regras de associação simples: Agora, estamos interessados em compras cujo o preço seja menor que R$150 MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY, 1..1 item AS HEAD, SUPPORT, CONFIDENCE FROM compras WHERE price <= 150 GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 10.
    Regras de AssociaçãoSimples Supondo que queremos compras com menos de 6 itens MINE RULE SimpleAssociations AS SELECT DISTINCT 1..n item AS BODY, 1..1 item AS HEAD, SUPPORT, CONFIDENCE FROM compras GROUP BY transacao HAVING COUNT(*) <= 6 EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 11.
    Regras de AssociaçãoSimples Podemos agrupar a tabela origem por qualquer atributo, o que altera o sentido da regra Por exemplo: Se agruparmos a tabela compras pelo cliente, ao invés de agruparmos pela transação, teremos regularidades de cada cliente, independente da ordem que os itens foram comprados. MINE RULE CustomerAssociations AS SELECT DISTINCT item AS BODY, 1..n item AS HEAD, SUPPORT, CONFIDENCE FROM compras GROUP BY cliente EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 12.
    Regras de Associaçãocom Clusterização Até agora, as tuplas foram agrupadas de forma que cada grupo possui o mesmo valor de atributo. A partir de agora, vamos assumir que um grupo de tuplas é particionado em sub-grupos, chamados Cluster. Cada cluster é determinado por um atributo. Com cluster, extraímos regras onde o antecessor e o consequente referenciam clusters do mesmo grupo. Os conceitos de Suporte e Confiança são computados por grupos, dado que essas regras refletem regularidades de um grupo. Mineração de Dados
  • 13.
    Regras de Associaçãocom Clusterização Tabela Compra agrupada por cliente e clusterizada por data Mineração de Dados
  • 14.
    Regras de Associaçãocom Clusterização MINE RULE ClusteredByDate AS SELECT DISTINCT 1..n item AS BODY, 1..n item AS HEAD, SUPPORT, CONFIDENCE FROM compras GROUP BY cliente CLUSTER BY data EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 15.
    Regras de Associaçãocom Clusterização Mineração de Dados
  • 16.
    Regras de Associaçãocom Clusterização MINE RULE OrderedSets AS SELECT DISTINCT 1..n item AS BODY, 1..n item AS HEAD, SUPPORT, CONFIDENCE FROM compras GROUP BY cliente CLUSTER BY data HAVING BODY.data < HEAD.data EXTRACTING RULES WITH SUPPORT: 0.1, CONFIDENCE: 0.2 Mineração de Dados
  • 17.
    Regras de Associaçãocom Clusterização Mineração de Dados
  • 18.
    Regras de Associaçãocom Condição Mineração de Dados Neste caso, estamos interessados em regras onde o antecedente possui preço maior ou igual a R$100 e o consequente itens inferiores a R$100. Não podemos usar: o predicado Where associado a cláusula From (modifica a tabela original) O predicado Having da cláusula Group By (descarta os grupos) Cluster By (não possui esse tipo de especificação) Solução: Novo Predicado
  • 19.
    Regras de Associaçãocom Condição MINE RULE FilteredOrderedSets AS SELECT DISTINCT item AS BODY, 1..n item AS HEAD, SUPPORT, CONFIDENCE WHERE BODY.price >=100 AND HEAD.price < 100 FROM compras GROUP BY cliente CLUSTER BY data HAVING BODY.data < HEAD.data EXTRACTING RULES WITH SUPPORT: 0,1, CONFIDENCE: 0,2 Mineração de Dados
  • 20.
    Regras de Associaçãocom Condição Mineração de Dados
  • 21.
    Regras de Associaçãocom Generalização Dada uma tabela de onde regras de associações são extraídas, através de uma taxonomia sobre as tuplas das tabelas, regras de associação podem ser especificadas por meio das propriedades descritas na taxonomia. A taxonomia pode ser representada por uma Árvore Hierárquica, onde os nós representam a classe dos itens, e seus filhos são as sub-classes. Os nós folha correspondem aos itens do database. Mineração de Dados
  • 22.
    Regras de Associaçãocom Generalização Mineração de Dados ITEM SHOES BOOTS HIKING_BOOTS OTHER_SHOES NORMAL_BOOTS BROWN_BOOTS DARK_BOOTS CLOTHES PANTS SKI_PANTS NORMAL_PANTS JACKETS SHIRTS WHITE_SHIRTS COLORED_SHIRTS
  • 23.
    Regras de Associaçãocom Generalização Hierarquias na Condição de Mineração: Restringir as regras de associação extraídas da tabela de origem, de forma que essas regras referenciam uma parte específica da hierarquia Por exemplo: Queremos extrair regras que associem itens que são da classe boots com itens que são da classe pants. Problema: A tabela de origem não possui informações a respeito da hierarquia dos itens. Mineração de Dados
  • 24.
    Regras de Associaçãocom Generalização MINE RULE BootsPantsRules AS SELECT DISTINCT item AS BODY, item AS HEAD, SUPPORT, CONFIDENCE WHERE HEAD.item in (SELECT node FROM HierarquiaItem WHERE ancestor = ‘pants’) AND BODY.item in (SELECT node FROM HierarquiaItem WHERE ancestor = ‘boots’) FROM compras GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,2 CONFIDENCE: 0,5 Mineração de Dados
  • 25.
    Regras de Associaçãocom Generalização Hierarquias na Condição de Mineração: Da tabela origem, a única regra que podemos extrair com essas caracteristicas é : {hiking_boots} => {ski_pants} / Suporte = 0,25 e Confiança = 1 Mineração de Dados
  • 26.
    Regras de Associaçãocom Generalização Hierarquias na Tabela Origem: Regras de Associação podem ser generalizadas para obter regras que associem classes Podemos obter generalizações a partir da substituição de cada folha da hierarquia por um de seus antecedentes. Por exemplo; {hiking_boots} => {ski_pants} pode ser generalizado como: {hiking_boots} => {pants}, {hiking_boots} => {clothes}, {boots} => {ski_pants}, {shoes} => {ski_pants}, {boots} => {pants}, {boots} => {clothes} , {shoes} => {pants} e {shoes} => {clothes} Mineração de Dados
  • 27.
    Regras de Associaçãocom Generalização MINE RULE GeneralizedRules AS SELECT DISTINCT ancestor AS BODY, 1..n ancestor AS HEAD, SUPPORT, CONFIDENCE FROM (SELECT * FROM compras, HierarquiaItem WHERE node = item) GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,3 CONFIDENCE: 0,5 Mineração de Dados
  • 28.
    Regras de Associaçãocom Generalização Mineração de Dados transacao cliente data item preco quantidade ord_num ancestor level 1 C1 17/12/95 ski_pants 150 1 1 ski_pants 0 1 C1 17/12/95 ski_pants 150 1 1 pants 1 1 C1 17/12/95 ski_pants 150 1 1 clothes 2 1 C1 17/12/95 hiking_boots 180 1 2 hiking_boots 0 1 C1 17/12/95 hiking_boots 180 1 2 boots 1 1 C1 17/12/95 hiking_boots 180 1 2 shoes 2 ... ... ... ... ... ... ... ... ... body head Suporte Confiança {ski_pants} {hiking_boots} 0.25 1 {ski_pants} {boots} 0.25 1 {ski_pants} {shoes} 0.25 1 {clothes} {hiking_boots} 0.25 0.25 {clothes} {boots} 0.5 0.5 {clothes} {shoes} 0.5 0.5 {clothes} {boots, shoes} 0.25 0.5 ... ... ... ...
  • 29.
    Regras de Associaçãocom Generalização Uso Generalizado de Hierarquia Hierarquia pode ser usado tanto na Condição de mineração como na tabela de origem Por exemplo: Supondo que estamos interessados em extrair regras de associação generalizadas que possuam sub classes de boots no antecedente e sub classes de pants no consequente Esse problema requer o uso de hierarquias na tabela de origem para produzir regras de associação generalizadas e posteriormente na Condição de Mineração, para reduzir o numero de regras extraídas. Mineração de Dados
  • 30.
    Regras de Associaçãocom Generalização MINE RULE GeneralizedBootsPantsRules AS SELECT DISTINCT ancestor AS BODY, 1..n ancestor AS HEAD, SUPPORT, CONFIDENCE WHERE HEAD.item in (SELECT node FROM HierarquiaItem WHERE ancestor = ‘pants’) AND BODY.item in (SELECT node FROM HierarquiaItem WHERE ancestor = ‘boots’) FROM (SELECT * FROM compras, HierarquiaItem WHERE node = item) GROUP BY transacao EXTRACTING RULES WITH SUPPORT: 0,3 CONFIDENCE: 0,5 Mineração de Dados
  • 31.