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}