Regras de Associação: Suporte, Confiança, Lift
Objetivos de Aprendizagem
- Calcular suporte, confiança e lift de uma regra e citar as variantes dessas medidas em livros e bibliotecas.
- Provar que o lift é simétrico e a confiança não é, e mostrar as duas coisas em dados.
- Enunciar o caso exato em que a confiança é antimonótona e mostrar o que acontece fora dele.
- Gerar regras a partir de itemsets frequentes com poda por confiança e conferi-las com
mlxtend. - Mostrar uma regra de confiança alta com lift abaixo de 1, e um lift alto produzido por ruído.
Contexto e Motivação
frequent-itemsets-and-the-apriori-algorithm e fp-growth produziram os mesmos 18 itemsets frequentes a partir de 10 vagas de emprego inventadas, com minsup 3. Um itemset diz que itens ocorrem juntos. Uma regra diz mais: entre os registros com , com que frequência aparece, e isso é mais do que apareceria de qualquer forma? Esta lição usa os mesmos dados. A mineração é exploratória, sem divisão entre treino e teste, então uma regra descreve estas 10 linhas e nada além delas. Ela descreve coocorrência, e nenhuma regra aqui diz que uma habilidade leva a outra.
As contagens de itens isolados são D 8, S 8, K 7, J 6, P 4, G 1, com .
Teoria Central
Definições
Uma regra tem e não vazios e disjuntos. Com a contagem de suporte, e como abreviação de :
A confiança é a estimativa amostral de . O lift a compara com a taxa de base . Lift 1 significa , o que a independência daria nesta amostra. Acima de 1, e coocorrem mais que isso, e abaixo de 1, menos.
Os nomes variam, então compare fórmulas, não palavras:
| Nome | Fórmula | Onde |
|---|---|---|
| suporte de uma regra | Zaki e Meira, a coluna support do mlxtend e esta lição |
|
| suporte de uma regra | , só o lado esquerdo | slides de Mining of Massive Datasets |
| interest | , uma diferença (o exemplo resolvido dos slides informa o valor absoluto) | slides de Mining of Massive Datasets |
| lift | , uma razão | Zaki e Meira, mlxtend |
| leverage | Zaki e Meira, mlxtend |
Para abaixo, isso dá interest de , lift de e leverage de . As três medidas põem a regra abaixo da taxa de base, em escalas diferentes.
Simetria
Com o suporte tomado como , suporte e lift não dependem da direção, porque e não mudam quando se trocam e . Por isso, o lift não pode dizer para que lado uma regra "aponta". A confiança depende da direção:
O lift também tem uma cota superior. Como , vale . Um consequente com nunca passa de lift 1,25, então valores de lift de regras sobre itens de frequências diferentes não estão em pé de igualdade.
Onde a confiança é antimonótona
O suporte é antimonótono sobre itemsets. A confiança não é, e não deve ser podada como se fosse. A propriedade que serve tem uma forma estreita.
Propriedade. Fixe um itemset e tome conjuntos não vazios . Então
Prova. As duas confianças têm numerador . Como , a antimonotonicidade do suporte dá , então a primeira fração tem o denominador maior.
Em palavras: mover itens do antecedente para o consequente, dentro de um único itemset fixo, não pode aumentar a confiança. A hipótese é que continue o mesmo, o que mantém o numerador fixo.
Sem ela, a conclusão se perde. Compare com para um fixo: os itemsets diferem, numerador e denominador encolhem e a confiança pode ir para qualquer lado. O Exemplo 3 mostra as duas direções. (Aumentar só o consequente, com fixo, também não pode elevar a confiança, porque só o numerador encolhe. Isso é pura antimonotonicidade do suporte, compara regras de itemsets diferentes e não é o que poda a geração de regras dentro de .) Zaki e Meira também observam que o lift não é fechado para baixo.
Gerando regras
Zaki e Meira e os slides de MMDS dividem o problema em dois: achar os itemsets frequentes e depois derivar regras. Para cada frequente com , todo subconjunto próprio não vazio dá uma regra , então tem regras candidatas. Seu suporte já atende ao limiar, então só a confiança precisa de teste, e já está guardado, pois todo subconjunto de um itemset frequente é frequente. Nenhuma passada pelos dados é necessária.
A propriedade dá a poda, na forma usada pelo Algoritmo 8.6 de Zaki e Meira: tente primeiro os antecedentes grandes e, se reprovar em minconf, pule todo antecedente . O que isso economiza são consultas, não varreduras.
Exemplos Resolvidos
Exemplo 1: as regras dos dados da lição
Os 18 itemsets frequentes incluem 13 de tamanho pelo menos 2, a saber 8 pares, 4 trincas e DJKS, o que dá regras. Uma seleção, saída de um script:
textrule s(XY) s(X) s(Y) conf lift K -> S 0.7 0.7 0.8 1.000 1.250 S -> K 0.7 0.8 0.7 0.875 1.250 JS -> K 0.5 0.5 0.7 1.000 1.429 J -> K 0.5 0.6 0.7 0.833 1.190 P -> J 0.3 0.4 0.6 0.750 1.250 P -> D 0.3 0.4 0.8 0.750 0.938 D -> S 0.6 0.8 0.8 0.750 0.938 S -> D 0.6 0.8 0.8 0.750 0.938 DK -> J 0.3 0.5 0.6 0.600 1.000 D -> J 0.4 0.8 0.6 0.500 0.833
O mlxtend 0.25.0 dá as mesmas 54 regras, com confiança e lift iguais, a partir de association_rules(frequent, metric="confidence", min_threshold=0.0, num_itemsets=10) sobre a saída de apriori com min_support=0.3.
As duas primeiras linhas mostram a assimetria. tem confiança 1, porque as 7 vagas com Kubernetes listam SQL, enquanto tem . A razão é , e o lift é 1,25 nos dois sentidos. Esse 1,25 também é a cota para este consequente, pois .
Exemplo 2: confiança alta, lift abaixo de 1
parece forte: 75% das vagas com Docker listam SQL. Só que 80% de todas as vagas listam SQL. Então, entre as vagas com Docker, SQL é menos comum do que no total:
A confiança sozinha manteria essa regra com qualquer minconf até 0,75. Um único antecedente mostra isso de forma ainda mais direta: e têm confiança 0,75, com lift 1,25 e 0,9375. A primeira fica acima de sua taxa de base de 0,6, e a segunda, abaixo de sua taxa de base de 0,8. Das 24 regras com confiança de pelo menos 0,7, 6 têm lift abaixo de 1.
Não perca de vista o tamanho da amostra. Com 10 linhas, isto é descrição, não achado. Até a regra perfeita tem p-valor hipergeométrico unilateral de contra a independência com estas margens.
Exemplo 3: a propriedade restrita, e fora dela
Dentro do itemset fixo DJKS, com , mover itens para a direita só pode baixar a confiança:
textrule sigma(Z)/sigma(X) conf DJK -> S 3/3 1.000 DJ -> KS 3/4 0.750 D -> JKS 3/8 0.375
Fora dele, tome o consequente fixo S e aumente o antecedente, de modo que muda:
textrule sigma(XY)/sigma(X) conf lift D -> S 6/8 0.750 0.938 DK -> S 5/5 1.000 1.250 DP -> S 1/3 0.333 0.417
Acrescentar K eleva a confiança e acrescentar P a reduz, então reprovar em minconf em não diz nada sobre . O lift se move do mesmo jeito aqui e cruza 1 em .
Exemplo 4: a poda, contada
Gerando regras dos 13 itemsets, com os maiores antecedentes primeiro e pulando os subconjuntos de um antecedente reprovado:
textminconf rules tested, no pruning rules tested, pruned rules kept 0.7 54 39 24 0.8 54 35 11 0.9 54 34 6
As regras mantidas são idênticas com e sem poda nos três limiares. A economia aqui é modesta, porque a maioria dos itemsets é pequena.
Exemplo 5: quando o lift engana
O lift depende de . Acrescente linhas que não contêm nenhuma dessas habilidades, como vagas de outras áreas. A confiança não muda, mas o lift escala com :
textrows added n conf(D -> S) lift(D -> S) lift(K -> S) 0 10 0.75 0.9375 1.25 10 20 0.75 1.875 2.50 90 100 0.75 9.375 12.50
passou de abaixo de 1 para cerca de 9 sem mudar nenhuma vaga que menciona essas habilidades. Assim, o lift é uma afirmação relativa a uma população escolhida, e essa população precisa ser declarada.
Lift alto vindo de ruído. Sorteie X = rng.random((1000, 200)) < 0.02 com rng = numpy.random.default_rng(0), de modo que cada item esteja presente de forma independente com probabilidade 0,02 e nenhum par tenha relação por construção. Espera-se um par em 0,4 transação. Dos 19.900 pares, 147 alcançam contagem de pelo menos 3, e seus lifts vão de 3,03 a 13,99, com mediana 6,07. Testando cada um com um teste hipergeométrico unilateral, 145 dos 147 ficam abaixo de , e o menor é . Nenhum sobrevive a uma correção de Bonferroni para todos os 19.900 pares, cujo limiar é . A confiança deles é no máximo 0,31, então um piso de confiança também os removeria, mas os valores de lift sozinhos parecem descobertas. Um par plantado, os itens 0 e 1 acrescentados às linhas de rng.choice(1000, 20, replace=False) do mesmo gerador, alcança lift 18,4 com e passa pela mesma correção. Zaki e Meira também avisam que itemsets raros podem ter lift muito alto em conjuntos pequenos.
Equívocos Comuns e Armadilhas
- "Confiança alta significa associação forte." tem confiança 0,75 e lift abaixo de 1. Compare com a taxa de base.
- "Lift alto significa padrão real." Os 147 pares do Exemplo 5 vieram de itens independentes.
- "O lift dá a direção." Ele é simétrico. Só a confiança difere por direção, e essa diferença só reflete .
- "A confiança é antimonótona como o suporte." A propriedade de poda exige mover itens dentro de um único itemset fixo. supera .
- "Regras dizem o porquê." informa que todas as vagas com Kubernetes desta tabela listam SQL. Não diz que uma coisa exige a outra, e um fator comum ou o modo como as linhas foram coletadas poderia produzir isso.
- "O lift é uma propriedade dos dois itens." Ele depende das linhas incluídas, como mostram as linhas acrescentadas.
Resumo
Regras vêm de itemsets frequentes: o suporte de é , a confiança é e o lift é a confiança sobre , com nomes que variam entre as fontes. Lift e suporte são simétricos, a confiança não é, e o lift tem cota em . A confiança não tem a antimonotonicidade do suporte: o caso que vale é mover itens do antecedente para o consequente dentro de um único itemset fixo, e é isso que permite podar as regras de . Nas vagas, tem confiança 0,75 e lift 0,9375, abaixo da taxa de base. O lift muda com e chegou a 13,99 com itens independentes, então uma regra precisa da taxa de base, da população e de alguma conferência contra o acaso. Uma regra descreve coocorrência nos dados minerados.