빅 데이터 분석-연결 규칙

하자 내가 I = 1 전, 2 , ..., i가 n 개의 항목이라는 세트 N 이진 속성을합니다. D = t 1 , t 2 , ..., t m을 데이터베이스라고하는 트랜잭션 집합이라고 합시다 . D의 각 트랜잭션은 고유 한 트랜잭션 ID를 가지며 I에있는 항목의 하위 집합을 포함합니다. 규칙은 X ⇒ Y 형식의 의미로 정의됩니다. 여기서 X, Y ⊆ I 및 X ∩ Y = ∅.

항목 세트 (짧은 항목 세트의 경우) X 및 Y는 규칙의 선행 (왼쪽 또는 LHS) 및 결과 (오른쪽 또는 RHS)라고합니다.

개념을 설명하기 위해 슈퍼마켓 도메인의 작은 예를 사용합니다. 항목 집합은 I = {우유, 빵, 버터, 맥주}이며 항목이 포함 된 작은 데이터베이스가 다음 표에 나와 있습니다.

거래 ID 아이템
1 우유, 빵
2 빵, 버터
맥주
4 우유, 빵, 버터
5 빵, 버터

슈퍼마켓에 대한 규칙의 예는 {milk, bread} ⇒ {butter} 일 수 있습니다. 즉, 우유와 빵을 구매하면 고객도 버터를 구매합니다. 가능한 모든 규칙 집합에서 흥미로운 규칙을 선택하기 위해 다양한 중요도 및 관심도에 대한 제약 조건을 사용할 수 있습니다. 가장 잘 알려진 제약은 지원 및 신뢰에 대한 최소 임계 값입니다.

항목 세트 X의 지원 supp (X)는 항목 세트를 포함하는 데이터 세트의 트랜잭션 비율로 정의됩니다. 표 1의 예제 데이터베이스에서 항목 세트 {milk, bread}는 모든 트랜잭션의 40 % (5 개 트랜잭션 중 2 개)에서 발생하므로 2/5 = 0.4를 지원합니다. 자주 항목 세트를 찾는 것은 비지도 학습 문제의 단순화로 볼 수 있습니다.

규칙의 신뢰도는 conf (X ⇒ Y) = supp (X ∪ Y) / supp (X)로 정의됩니다. 예를 들어, {milk, bread} ⇒ {butter} 규칙은 표 1의 데이터베이스에서 0.2 / 0.4 = 0.5의 신뢰도를 가지며 이는 우유와 빵을 포함하는 트랜잭션의 50 %에 대해 규칙이 정확함을 의미합니다. 신뢰는 확률 P (Y | X)의 추정치로 해석 될 수 있으며, 이러한 트랜잭션에도 LHS가 포함된다는 조건 하에서 트랜잭션에서 규칙의 RHS를 찾을 확률입니다.

에있는 스크립트에서 bda/part3/apriori.R 구현하는 코드 apriori algorithm 찾을수있다.

# 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 알고리즘을 사용하여 규칙을 생성하려면 트랜잭션 매트릭스를 만들어야합니다. 다음 코드는 R에서이를 수행하는 방법을 보여줍니다.

# 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}