Büyük Veri Analitiği - İlişkilendirme Kuralları

Let Ben = 1 i 2 , ..., i , n ürün adı verilen bir kümesi n ikili özelliklerini olun. Let D = t 1 , t 2 , ..., t m veritabanı olarak adlandırılan bir set işlem olabilir. D'deki her işlemin benzersiz bir işlem kimliği vardır ve I'deki öğelerin bir alt kümesini içerir. Bir kural, X, Y ⊆ I ve X ∩ Y = ∅ olan X ⇒ Y formunun bir sonucu olarak tanımlanır.

Öğe setlerine (kısa öğe setleri için) X ve Y, kuralın öncülü (sol taraf veya LHS) ve sonucu (sağ taraf veya RHS) olarak adlandırılır.

Kavramları açıklamak için süpermarket alanından küçük bir örnek kullanıyoruz. Öğe seti I = {süt, ekmek, tereyağı, bira} ve öğeleri içeren küçük bir veritabanı aşağıdaki tabloda gösterilmektedir.

İşlem Kimliği Öğeler
1 süt ekmeği
2 ekmek, tereyağı
3 bira
4 süt, ekmek, tereyağı
5 ekmek, tereyağı

Süpermarket için örnek bir kural {süt, ekmek} ⇒ {tereyağı} olabilir, yani süt ve ekmek alınırsa müşteriler de tereyağı alır. Olası tüm kurallar kümesinden ilginç kurallar seçmek için, çeşitli önem ve ilgi ölçüleri üzerindeki kısıtlamalar kullanılabilir. En iyi bilinen kısıtlamalar, destek ve güven konusunda minimum eşik değerlerdir.

Bir öğe setinin X destek desteği (X), öğe setini içeren veri setindeki işlemlerin oranı olarak tanımlanır. Tablo 1'deki örnek veri tabanında, öğe seti {süt, ekmek}, tüm işlemlerin% 40'ında (5 işlemden 2'si) olduğu için 2/5 = 0,4'lük bir desteğe sahiptir. Sık ürün setlerini bulmak, denetimsiz öğrenme probleminin basitleştirilmesi olarak görülebilir.

Bir kuralın güvenirliği conf (X ⇒ Y) = supp (X ∪ Y) / supp (X) olarak tanımlanır. Örneğin, Tablo 1'deki veri tabanında {süt, ekmek} rule {tereyağı} kuralı 0,2 / 0,4 = 0,5'lik bir güvene sahiptir, bu da süt ve ekmek içeren işlemlerin% 50'si için kuralın doğru olduğu anlamına gelir. Güven, bu işlemlerin LHS'yi de içermesi koşuluyla, işlemlerde kuralın sağlığını bulma olasılığı olan P (Y | X) olasılığının bir tahmini olarak yorumlanabilir.

Bulunan komut dosyasında bda/part3/apriori.R uygulama kodu apriori algorithm bulunabilir.

# Load the library for doing association rules
# install.packages(’arules’) 
library(arules)  

# Data preprocessing 
data("AdultUCI") 
AdultUCI[1:2,]  
AdultUCI[["fnlwgt"]] <- NULL 
AdultUCI[["education-num"]] <- NULL  

AdultUCI[[ "age"]] <- ordered(cut(AdultUCI[[ "age"]], c(15,25,45,65,100)), 
   labels = c("Young", "Middle-aged", "Senior", "Old")) 
AdultUCI[[ "hours-per-week"]] <- ordered(cut(AdultUCI[[ "hours-per-week"]], 
   c(0,25,40,60,168)), labels = c("Part-time", "Full-time", "Over-time", "Workaholic")) 
AdultUCI[[ "capital-gain"]] <- ordered(cut(AdultUCI[[ "capital-gain"]], 
   c(-Inf,0,median(AdultUCI[[ "capital-gain"]][AdultUCI[[ "capitalgain"]]>0]),Inf)), 
   labels = c("None", "Low", "High")) 
AdultUCI[[ "capital-loss"]] <- ordered(cut(AdultUCI[[ "capital-loss"]], 
   c(-Inf,0, median(AdultUCI[[ "capital-loss"]][AdultUCI[[ "capitalloss"]]>0]),Inf)), 
   labels = c("none", "low", "high"))

Apriori algoritmasını kullanarak kurallar oluşturmak için bir işlem matrisi oluşturmamız gerekir. Aşağıdaki kod, bunun R'de nasıl yapılacağını gösterir.

# Convert the data into a transactions format
Adult <- as(AdultUCI, "transactions") 
Adult 
# transactions in sparse format with 
# 48842 transactions (rows) and 
# 115 items (columns)  

summary(Adult)  
# Plot frequent item-sets 
itemFrequencyPlot(Adult, support = 0.1, cex.names = 0.8)  

# generate rules 
min_support = 0.01 
confidence = 0.6 
rules <- apriori(Adult, parameter = list(support = min_support, confidence = confidence))

rules 
inspect(rules[100:110, ]) 
# lhs                             rhs                      support     confidence  lift
# {occupation = Farming-fishing} => {sex = Male}        0.02856148  0.9362416   1.4005486
# {occupation = Farming-fishing} => {race = White}      0.02831579  0.9281879   1.0855456
# {occupation = Farming-fishing} => {native-country     0.02671881  0.8758389   0.9759474
                                       = United-States}