빅 데이터 분석-연결 규칙
하자 내가 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}