Veri Madenciliği: İlişki Analizi ve Birliktelik Kuralları
İlişki Analizi ve Birliktelik Kuralları Temel tanımlar ve yol haritası Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Çeşitli birliktelik kuralları bulma Birliktelik kurallarından korelasyon analizine Özet
Yaygın Örüntü analizi nedir? Yaygın örüntü (Frequent pattern): bir veri tabanında sık olarak beraber geçen nesneler arasındaki ilişki örüntüleri İlk olarak Agrawal, Imielinski, and Swami [AIS93] tarafından yaygın öğeler (frequent itemsets) ve birliktelik kuralı (association rule mining) konuları üzerine önerilmiştir. Motivasyon: Veri içindeki düzenleri bulmak Hangi ürünler çoğunlukla birlikte satılıyor? -Bira ve bebek bezi?! PC alanlar daha sonraki alışverişlerinde neler alıyor? Yeni bir ilaca duyarlı olan DNA tipleri hangileridir? Web dokümanları otomatik olarak sınıflandırılabilir mi?
Niye yaygın örüntü analizi önemli? Veri kümelerinin esas ve önemli özelliklerini ortaya çıkarır Birçok veri madenciliği yönteminde kullanılır Birliktelik, korelasyon ve nedensellik analizi Sıralı yada yapısal (e.g., sub-graph) örüntüler spatiotemporal, multimedia, ve stream data üzerinde analizler Demetleme ve sınıflandırma yöntemlerinde Birçok başka uygulama
Birliktelik Kuralları Bilgisayar alan bir müşterinin aynı zamanda antivirus yazılımı almasına ait ilişkilendirme kuralı PC antivirus-sw [support =2%, conf= 60%] Support (destek) müşterilerin %2’si bilgisayar ve antivirüs yazılımını beraber almışlar Confidence (güven) bilgisayar alan müşterilerin %60’I antivirüs yazılımı da almış Geçerli olabilmesi için minimum support ve confidence değerlerini sağlaması gerekir
Tanımlar Bütün öğelerden oluşan küme: Transaction (Hareket) I = {ekmek, süt, bira, kola, yumurta, bez} Transaction (Hareket) T1 = {süt, yumurta} Öğeler kümesi (Itemset) Bir veya daha çok öğeden oluşan küme k-öğeler kümesi (k-itemset): k öğeden oluşan küme Yaygın öğeler (Frequent itemset) Destek değeri minimum support eşik değerinden daha büyük ya da eşit olan öğeler kümesi
Hareket verisi: dokümanlar kümesi Dokümanın içerdiği metin kelimeler kümesi olarak ifade edilir. doc1: Student, Teach, School doc2: Student, School doc3: Teach, School, City, Game doc4: Baseball, Basketball doc5: Basketball, Player, Spectator doc6: Baseball, Coach, Game, Team doc7: Basketball, Team, City, Game CS583, Bing Liu, UIC
İlişkilendirme Kuralları Oluşturma Destek s (Support) Bir öğeler kümesinin içinde bulunduğu hareketlerin toplam hareketlere oranı s({Süt, Ekmek,Bez}) = 2/5 Birliktelik kuralı (Association rule): ima kuralı (implication) Veri kümesi içinden en az, minimum destek ve güven değerine sahip A B şeklinde kuralların bulunması A B A ⊂I, B⊂I, A∩B=∅ Örnek: {Süt,Bez} {Bira}
İlişkilendirme Kuralları Belli bir destek (support) ve güven (confidence) oranına göre değerlendirilir Support (AB): A U B öğeler kümesinin bulunduğu hareketler sayısının toplam hareket sayısına oranı P(A U B) Confidence (AB): A öğesini içeren bir hareketin B öğesini de içerme olasılığı P(B|A) = freq(AUB) / freq(A) Minimum support ve minimum confidence önceden belirlenen eşik değerleri
Basic Concepts: Frequent Patterns and Association Rules Transaction-id Items bought 1 A, B, D 2 A, C, D 3 A, D, E 4 B, E, F 5 B, C, D, E, F Öğeler kümesi I = {i1, …, ik} minimum support and confidence değerlerini sağlayan tüm X Y kurallarını bul support, s, hareketin X Y içerme olasılığı confidence, c, X içeren hareketin Y yi de içerme olasılığı Customer buys diaper buys both buys beer Let supmin = 50%, confmin = 50% Yaygın öğeler: {A:3, B:3, D:4, E:3, AD:3} Birliktelik kuralları: A D (60%, 100%) D A (60%, 75%)
Geçerli İlişkilendirme Kuralları Oluşturma Amaç minimum support ve confidence sağlayan tüm kuralları çıkartmak İki adımda gerçeklenir Yaygın öğeleri belirleme: destek değeri minimum support değerinden büyük ya da eşit olan öğeler kümelerini bulma Güçlü Kural Oluşturma: Güven değeri minconf değerinden büyük ya da eşit olan ve yaygın öğelerin ikili bölünmeleri olan kurallar oluşturma İlk kısım daha zor
Kapalı Örüntüler Çok fazla yaygın öğe var: eğer bir öğe kümesi yaygın ise tüm alt kümeleri de yaygındır Uzun örüntülerin çok fazla alt örüntüsü olacaktır e.g., {a1, …, a100} içerdiği alt kümeler Hesaplamak ve depolamak için çok büyük Çözüm: kapalı örüntüler (closed patterns) üzerinde çalışmak
Kapalı Örüntü Bir X öğe kümesi kapalıdır eğer: X yaygınsa (frequent) ve aynı destek seviyesinde X’i kapsayan baska bir öğe kümesi yoksa (Pasquier, et al. @ ICDT’99) i.e. belli bir destek seviyesi (support level) için en büyük öğe kümesi (itemset) Yaygın örüntüleri kayıpsız sıkıştırır Örüntü ve kural sayısını azaltır
Kapalı örüntü Örnek. DB = {<a1, …, a100>, < a1, …, a50>} Min_sup = 1. closed itemset (kapalı örüntüler) kümesi? <a1, …, a100>: 1 < a1, …, a50>: 2 Tüm örüntüler kümesi? 2100-1!!
İlişki Analizi ve Birliktelik Kuralları Temel tanımlar ve yol haritası Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Çeşitli birliktelik kuralları bulma Birliktelik kurallarından korelasyon analizine Özet
Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Yaygın örüntülerin aşağıya doğru kapalılık özelliği Yaygın bir öğe kümesinin tüm alt kümeleri de yaygın olmak zorundadır Eğer {bira, b. bezi, çerez} yaygın ise, {bira, b. bezi} de yaygındır i.e., bir hareket {bira, b. bezi, çerez} içeriyorsa {bira, b. bezi} de içerir Birkaç farklı yaklaşım: İki temel yönteme bakıcaz Apriori (Agrawal & Srikant@VLDB’94) Freq. pattern growth (FPgrowth—Han, Pei & Yin @SIGMOD’00) Her yöntem aynı sonucu çıkartmalı ama verimlilik ve hafıza ihtiyaçları değişebilir
Apriori: yaygın örüntü aday kümeleri Yaygın öğe aday sayısını azaltma yöntemi (Apriori pruning principle): Yaygın öğe olmayan bir kümenin üst kümeleri yaygın öğe adayı olarak oluşturulmaz (destek değeri hesaplanmaz) Yöntem: Başlangıç: DB’yi bir kere tara ve yaygın 1-öğeler kümesi (1-itemset) çıkar K uzunlukta yaygın öğekümelerinden, (k+1) uzunlukta aday öğe kümeleri yarat Adayları verikümesinde test et Eğer yeni aday veya yaygın öğekümesi üretemezsen dur
The Apriori Algorithm—Örnek Supmin = 2 Itemset sup {A} 2 {B} 3 {C} {D} 1 {E} Database TDB Itemset sup {A} 2 {B} 3 {C} {E} L1 C1 Tid Items 10 A, C, D 20 B, C, E 30 A, B, C, E 40 B, E 1st scan C2 Itemset sup {A, B} 1 {A, C} 2 {A, E} {B, C} {B, E} 3 {C, E} C2 Itemset {A, B} {A, C} {A, E} {B, C} {B, E} {C, E} L2 2nd scan Itemset sup {A, C} 2 {B, C} {B, E} 3 {C, E} C3 L3 Itemset {B, C, E} 3rd scan Itemset sup {B, C, E} 2
The Apriori Algorithm Pseudo-code: Ck: Candidate itemset of size k Lk : frequent itemset of size k L1 = {frequent items}; for (k = 1; Lk !=; k++) do begin Ck+1 = candidates generated from Lk; for each transaction t in database do increment the count of all candidates in Ck+1 that are contained in t Lk+1 = candidates in Ck+1 with min_support end return k Lk;
Apriori Algorithm Yaygın öğe setlerini belirleme Uzunluğu k=1 olan yaygın öğe setlerini oluştur Yeni yaygın öğeseti kalmayana kadar tekrarla k uzunluğundaki yaygın öğe setlerinden (k+1) uzunluğundaki aday öğe setlerini oluştur k uzunluğunda yaygın olmayan altkümelere sahip aday öğe setlerini ele Veri tabanını tarayarak aday öğe setlerinin support countlarını hesapla Yaygın olmayan aday öğe setlerini ele ve sadece yaygın olanlarla devam et
Apriori – önemli detaylar Nasıl aday yaratlıyor? Step 1: self-joining Lk Step 2: pruning (azaltma) Aday yaratma örneği L3={abc, abd, acd, ace, bcd} Self-joining: L3*L3 abc ve abd kullanarak abcd acd ve ace kullanarak acde Azaltma: ade L3 miçinde geçmediği için acde elenir C4={abcd}
2inci adım: Yaygın öğelerden Kuralları çıkartmak Yaygın öğeler ≠ birliktelik kuralları Her yaygın öğeler kümesi X için Tüm alt kümeleri A lar için B = X-A ise A B birliktelik kuralıdır eğer; Confidence(AB) > min_conf Confidence(A B) ≥ minconf, support(A B) = support(AB) = support(X) confidence(A B) = support(A B) / support(A)
Kural olusturma: Örnek {2,3,4} sup=50% ile yaygın öğekümesi olsun Alt kümeleri: {2,3}, {2,4}, {3,4}, {2}, {3}, {4}, Sırasıyla sup=50%, 50%, 75%, 75%, 75%, 75% Şu birliktelik kuralları oluşur: 2,3 4, confidence=100% 2,4 3, confidence=100% 3,4 2, confidence=67% 2 3,4, confidence=67% 3 2,4, confidence=67% 4 2,3, confidence=67% Tüm kuralların supportu = 50% support(A B) = support(AB)
Kural olusturma: Özet kısaca, A B kuralını oluşturmak için, support(A B) ve support(A) bilgileri lazım Confidence hesaplamak için gereken tüm değerler başta zaten hesaplanmış oluyor. Veriyi tekrar taramaya gerek yok Dolayısıyla bu adım yaygın öğekümelerini çıkartmaya kıyasla çok daha kolay. Han and Kamber 2001
Apriori Alg Sıkıntılı noktası Sık veritabanı taraması çok maliyetli Uzun örüntüleri çıkarmak tekrar tekrar tarama gerektirir ve çok fazla sayıda aday yaratılır i1i2…i100 örüntüsünü bulmak için Tarama sayısı: 100 Dar boğaz : aday yaratma ve test Aday yaratma aşamasından kaçınmak mümkün mü?
Aday Yaratmadan Yaygın Örüntüleri Çıkarma Yerel yaygın öğeleri kullanarak kısa örüntülerden uzun örüntülere ulaşmak “abc” bir yaygın örüntü Veritabanından “abc” içeren tüm hareketleri (transaction) çek: DB|abc Eğer “d” DB|abc içinde yaygın bir öğe ise abcd yaygın bir örüntüdür
Hareket tablosundan FP-tree (yaygın örüntü ağacı) yaratmak TID Alınan ürünler (sıralı) yaygın ürünler 100 {f, a, c, d, g, i, m, p} {f, c, a, m, p} 200 {a, b, c, f, l, m, o} {f, c, a, b, m} 300 {b, f, h, j, o, w} {f, b} 400 {b, c, k, s, p} {c, b, p} 500 {a, f, c, e, l, p, m, n} {f, c, a, m, p} min_support = 3 {} f:1 c:1 a:1 m:1 p:1 Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 Veri Tabanını 1kere tara, yaygın 1-itemset (tek öğeli örüntü) bul Yaygın öğeleri sıklığına göre büyükten küçüğe sırala, f-list Veri tabanını tekrar tara, FP-tree oluştur
Construct FP-tree from a Transaction Database TID Alınan ürünler (sıralı) yaygın ürünler 100 {f, a, c, d, g, i, m, p} {f, c, a, m, p} 200 {a, b, c, f, l, m, o} {f, c, a, b, m} 300 {b, f, h, j, o, w} {f, b} 400 {b, c, k, s, p} {c, b, p} 500 {a, f, c, e, l, p, m, n} {f, c, a, m, p} min_support = 3 {} f:2 c:2 a:2 b:1 m:1 p:1 Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 F-list=f-c-a-b-m-p
Construct FP-tree from a Transaction Database TID Alınan ürünler (sıralı) yaygın ürünler 100 {f, a, c, d, g, i, m, p} {f, c, a, m, p} 200 {a, b, c, f, l, m, o} {f, c, a, b, m} 300 {b, f, h, j, o, w} {f, b} 400 {b, c, k, s, p} {c, b, p} 500 {a, f, c, e, l, p, m, n} {f, c, a, m, p} min_support = 3 {} f:4 c:1 b:1 p:1 c:3 a:3 m:2 p:2 m:1 Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 F-list=f-c-a-b-m-p
Construct FP-tree from a Transaction Database TID Items bought (ordered) frequent items 100 {f, a, c, d, g, i, m, p} {f, c, a, m, p} 200 {a, b, c, f, l, m, o} {f, c, a, b, m} 300 {b, f, h, j, o, w} {f, b} 400 {b, c, k, s, p} {c, b, p} 500 {a, f, c, e, l, p, m, n} {f, c, a, m, p} min_support = 3 {} f:4 c:1 b:1 p:1 c:3 a:3 m:2 p:2 m:1 Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 F-list=f-c-a-b-m-p
X öğesini içeren örüntüleri bulmak FP-tree deki yaygın öğeler tablosundan Her yaygın öğeye ulaşan tüm linkleri takip et x öğesine ulaşan ama x’i içermeyen tüm transformed prefix path’leri çıkar {} f:4 c:1 b:1 p:1 c:3 a:3 m:2 p:2 m:1 Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 Conditional pattern bases item cond. pattern base c f:3 a fc:3 b fca:1, f:1, c:1 m fca:2, fcab:1 p fcam:2, cb:1
Örnek: ‘p’ içerme koşullu örüntüler ‘p’ ye giden tüm rotaları bul Bunlar: (f:4, c:3, a:3, m:2, p:2) ve (c:1, b:1, p:1) ‘p’ içeren rotalar (f:2, c:2, a:2, m:2, p:2) ve (c:1, b:1, p:1) Prefix rotalar (‘p’ yi sil) (f:2, c:2, a:2, m:2) ve (c:1, b:1)
Koşullu örüntü rotalarından koşullu FP-tree lere For each pattern-base Koşullu rotadaki tüm öğeler için toplam sayımları tut Koşullu rotadaki yaygın öğeler için FP-tree oluştur min_sup=3 m-conditional pattern base: fca:2, fcab:1 {} Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3 f:4 c:1 All frequent patterns relate to m m, fm, cm, am, fcm, fam, cam, fcam {} f:3 c:3 a:3 m-conditional FP-tree c:3 b:1 b:1 a:3 p:1 m:2 b:1 p:2 m:1
örnek2 Min_sup = 2 Transaction itemset Sorted itemset Freq items T1 a,b,e b,a,e b:7 T2 b,d a:6 T3 b,c c:6 T4 a,b,d b,a,d d:2 T5 a,c e:2 T6 T7 T8 a,b,c,e b,a,c,e T9 a,b,c b,a,c Min_sup = 2
Örnek- devam Item Koşullu örüntü koşullu FP-tree Yaygın örüntüler e {b,a:1}{b,a,c:1} <b:2,a:2> {b,e:2}{a,e:2}{a,b,e:2} d {b,a:1}{b:1} <b:2> {b,d:2} c {b,a:2}{b:2}{a:2} <b:4,a:2><a:2> {b,c:4}{a,c:4}{a,b,c:2} a {b:4} <b:4> {b,a:4}
FP-tree Yapısının Faydaları Bütünlük (Completeness) Tüm yaygın örüntüleri bulur Hiçbir hareketin uzun örüntüsünü bölmez Compactness Gereksiz bilgi tutulmaz — yaygın olmayan öğeler atılır Öğeler yaygınlık oranına göre büyükten küçüğe sıralıdır: en yaygın olan en çok paylaşılan öğedir Orjinal veritabanından daha büyük yer tutmaz
Örüntüleri Bölmek f-list kullanılarak uzun örüntülerden kısa örüntüler türetilebilir F-list=f-c-a-b-m-p p içeren örüntüler m içeren ama p içermeyenler … c ve m içeren ama a yada b içermeyenler
VT yansıtma ile FP-tree ölçeklendirme FP-tree hafızaya sığmassa? VT yansıtma (DB projection) Önce veri tabanını dha ufak parçalara ayır Her parça için ayrı FP-tree oluştur Küçük FP-treelerde kurallar olusturup sonra birleştir
Niye FP-Growth daha iyi? Divide-and-conquer: Hem madencilik işini hem de veri tabanını o ana kadar çıkartılmş yaygın örüntülere göre parçalıyor Daha ufak veri üzerinde odaklanmış çalışmaya imkan veriyor Diğer faktörler Aday yaratma ve aday testi yok Sıkıştırılmış veritabanı: FP-tree structure Tüm veriyi tekrar tekrar taramak gerekmiyor Basit işlemler —yerel yaygın öğelerin sayımı ve alt ağaçlar yaratımı
İlişki Analizi ve Birliktelik Kuralları Temel tanımlar ve yol haritası Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Farklı birliktelik kurallarını bulma Birliktelik kurallarından korelasyon analizine Özet
Farklı birliktelik kurallarını bulma Çok seviyeli birliktelikler Çok boyutlu birliktelikler Nicel (quantitative) verilerde birliktelikler Diğer ilginç birliktelikler
Çok seviyeli birliktelik kuralları çıkarma Öğeler genellikle hiyerarşik bir yapı içerir Alt eviyelerde olan ürünlerin support seviyeleri de düşüktür Logitech wireless laser mouse M505 & Norton antivirus 2015 Bu öğelerden güçlü kurallar çıkarmak zordur Birden fazla min_sup seviyesi kullan uniform support Milk [support = 10%] 2% Milk [support = 6%] Skim Milk [support = 4%] Level 1 min_sup = 5% Level 2 min_sup = 3% reduced support
uniform support sıkıntı yaratır Eğer öğelerin geçme sıklıkları çok değişiyorsa iki temel sıkıntı vardır Eğer min_sup çok yüksek seçilirse, nadir geçen öğeleri içeren kurallar bulunamaz. Bu kuralları da çıkartabilmek için, min_sup çok düşük seçilmeli. Bu seferde kural sayısında patlama yaşanır. Çok fazla yaygın öğe olacağından, herşey herşeyle ilişkiliymiş gibi gözükür Çok seviyeli yapı bunu çözer
Çok-boyutlu kurallar Tek-boyutlu kurallar: buys(X, “milk”) buys(X, “bread”) Çok-boyutlu kurallar: 2 boyut yada nitelik Inter-dimension (boyutlar arası) kurallar (sağ ve sol taraftaki nitlikler farklı) age(X,”19-25”) occupation(X,“student”) buys(X, “coke”) Hibrit boyutlu kurallar (ilişkili nitelikler) age(X,”19-25”) buys(X, “popcorn”) buys(X, “coke”) Kategorik nitelikler: sonlu sayıda seçenek var, değerler arasında büyüklük karşılaştırması yapılamaz— veri küpleri Nicel nitelikler: sayısal, değerler arasında sıralama- ayrık yapma, demetleme
Nicel Birliktelik Kuralları Yaş, maaş gibi nicel yani sayısal veriler verinin yapısına göre farklı tekniklerle işlenir Statik ayrıklama: baştan belirlenmiş kurallara göre gruplara ayırma {0-15},{15-30}….gibi Dinamik ayrıklama: Verinin nasıl dağıldığına bağlı olarak grupların sınırlarını dinamik olarak belirler Intervals dynamically determined Demetleme: konumların bribirlerine uzaklığına bağlı olarak gruplara ayırır Önce tek boyutlu demetleme sonra birliktelik kuralları yaratma
Diğer ilginç örüntüler Esnek support koşulları Mücevher gibi bazı öğeler nadir geçer ama önemi yüksektir Ürüne özel supmin belirleme Top-K yakın yaygın örüntüler 5li gruplar halinde alınan ürünler Supmin belirlemek zordur
İlişki Analizi ve Birliktelik Kuralları Temel tanımlar ve yol haritası Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Çeşitli birliktelik kuralları bulma Birliktelik kurallarından korelasyon analizine Özet
İlginçlik ölçümü Güçlü kurallar herzaman önemli değildir Sadece bir yaklaşımdır, ilişkinin gerçek gücünü ölçemez Basketball oynamak peynir yemek [40%, 66.7%] yanıltıcıdır Toplamda peynir yeme oranı 75% > 66.7%. Basketball oynamak peynir yememek [20%, 33.3%] daha doğrudur, dah düşük support ve confidence içerse de Basketball evet hayır Toplam (row) Peynir-evet 2000 1750 3750 Peynir-hayır 1000 250 1250 Toplam(col.) 3000 5000
İlginçlik Ölçümü Lift (kaldıraç): Korelasyon Alakalı/korelasyon içeren olaylar ölçümü: lift lift > 1 pozitif korelasyon lift < 1 negatif korelasyon lift = 0 independent (bağımsız) Basketball evet hayır Toplam (row) Peynir-evet 2000 1750 3750 Peynir-hayır 1000 250 1250 Toplam(col.) 3000 5000
İlişki Analizi ve Birliktelik Kuralları Temel tanımlar ve yol haritası Verimli ve ölçeklenebilir yaygın örüntü bulma yöntemleri Çeşitli birliktelik kuralları bulma Birliktelik kurallarından korelasyon analizine Özet
Özet Yaygın örüntüleri çıkarma —veri madenciliğinin çok önemli bir aşaması Support (destek) & Confidence (güven) Ölçeklenebilir yaygın örüntü bulma yöntemleri Apriori (Candidate generation & test) FPgrowth (Projection-based) Yaygın örüntü birliktelik kuralları Korelasyon/alaka analizi Lift (kaldıraç)