#연관분석 : 연관된 규칙을 찾는 무방향성 데이터 마이닝 기법
#연관 규칙은 특정 사건이 발생했을 때 함께 (빈번히)발생하는 또 다른 사건의 규칙이다.
#컬럼명은 영어로 써야 알이 이해 한다.
install.packages("arules")
library(arules)
cust <- read.csv("testdata/priori_data2.csv", stringsAsFactors = F)
cust
cust$sangpum[cust$irum=="홍길동"]
cust.list <-split(cust$sangpum, cust$irum) #이름을 기준으로 구매한 상품들을 짤라서 나눔
cust.list
#trainsaction type 으로 변환이 됨
cust.tran <- as(cust.list, "transactions") #as합수는 타입을 바꿔줌
cust.tran
class(cust.tran)
cust.rules <-apriori(cust.tran) # apriori 에서 transaction 함수를 달라고 함. 그래서 as라는 함수로 transaction 객체를 만듬
cust.rules #4개의 룰이 만들어 졌음
summary(cust.rules)
inspect(cust.rules) # {자갈치 를 구매하고 맛동산을 구매한사람} support지지도 0.2 1 confidence(1)보다 크면 양의 상관관계 1
#
# (support confidence lift)지지도 신뢰도 향상도
# -------------------------------------------------------------
#customer <- read.csv("testdata/priori_data.csv", stringsAsFactors = F)
customer <- read.csv("testdata/priori_data.csv", stringsAsFactors = F) #stringsAsFactors == as.is=T
customer <- read.csv("testdata/priori_data.csv", as.is=T) #as.is=T 는 chr로 옴
str(customer)
customer
customer$sangpum[customer$irum=='홍길동'] #특정사람이 구매한 모든 상품 확인
#스플릿으로 사람들이 구매한 상품 나누기
customer.list<-split(customer$sangpum, customer$irum) #거래별 항목정리
customer.list
#거래별 항목정리 후 transaction 객체 생성
customer.tran<-as(customer.list,"transactions") #에러 (중복)
customer.list<-sapply(customer.list, unique) #customer.list 중복제거
customer.tran<-as(customer.list,"transactions")
customer.tran #트랜잭션 6개와 9개의 아이탬으로 만들어 졌음
summary(customer.tran) #자세한 정보 보기
#빈도수 따로보기
itemFrequency(customer.tran)
itemFrequency(customer.tran[,1:5]) #1열에서 5열까지
itemFrequencyPlot(customer.tran,main="지지도 1%이상 항목들") #비도에 대한 차트 그리기
itemFrequencyPlot(customer.tran,topN=5,main="지지도 상위 5% 항목들")
#연관 규칙 생성
customer.rules <- apriori(customer.tran) #신뢰도 0.8
#요약정보
summary(customer.rules) #80개의 룰이 만들어짐
#연관 규칙 확인하는 함수
inspect(customer.rules)
#부분적으로 보기
#높은순으로 보기
inspect(sort(customer.rules,by ="lift")[1:5])
#낮은순으로 보기
inspect(sort(customer.rules,by ="lift",decreasing = FALSE)[1:5])
inspect(sort(customer.rules,by ="support")[1:5]) #지지도 별로, 신뢰도별 향상도별로 볼수 있다.
rule_subset<-subset(customer.rules, items %in% c("맛동산","짱구"))
inspect(rule_subset[1:5])
#시각화
install.packages("arulesViz")
library(arulesViz)
plot(customer.rules, method = "grouped")
plot(customer.rules, method = "graph")
댓글 영역
강의 시간이 촉박하기 때문에 학교처럼 깊이 있게 다루진 못합니다. 비중은 이론(원리)/실습이 2:8 정도 되는 것 같고, 대신 반복 실습해서 개념 익힐 수 있게 노력하고 있습니다.