[결과물]
[코드]
install.packages(c("arules", "arulesViz", "visNetwork", "igraph" ))
library(arules) ## 연관관계 분석을 위한 aprior() 를 쓰기 위함
library(arulesViz) ## 시각화에 필요
library(visNetwork) ## 시각화 중 네트워크 표현에 필요
library(igraph) ## 시각화 결과물을 인터렉티브(움직이게) 해줌
## 파일 로드
bui <- read.csv("building.csv", header = T)
head(bui, 3)
## NA 처리
bui[is.na(bui)] <- 0
trans <- bui
#데이터 정제
roname <- bui[ , 1]
trans <- bui[, -1]
trans <- as.matrix(trans, "Transaction")
rownames(trans) <- roname
# 모델링
rules <- apriori(trans, parameter = list(supp = 0.001, conf = 0.6, target = "rules"))
rules
# 결과 출력
inspect(sort(rules))
연관관계 모델링 및 결과 출력을 위한 코드입니다.
lhs rhs support confidence lift
[1] {일반음식점} => {패밀리레스토랑} 0.40 1.0000000 2.222222
[2] {패밀리레스토랑} => {일반음식점} 0.40 0.8888889 2.222222
[3] {약국} => {휴대폰매장} 0.25 1.0000000 3.333333
[4] {휴대폰매장} => {약국} 0.25 0.8333333 3.333333
[5] {약국} => {병원} 0.25 1.0000000 3.333333
[6] {병원} => {약국} 0.25 0.8333333 3.333333
[7] {휴대폰매장} => {병원} 0.25 0.8333333 2.777778
[8] {병원} => {휴대폰매장} 0.25 0.8333333 2.777778
[9] {편의점} => {일반음식점} 0.25 1.0000000 2.500000
[10] {일반음식점} => {편의점} 0.25 0.6250000 2.500000
* 야매 개념 소개
- Support : 지지도, 두 사건이 동시에 일어날 확률
- Confidence : 신뢰도, 한 사건이 일어났을 때 다른 사건에 영향을 미치는 정도
- Lift : 리프트, 상관관계와 유사한 개념.
## 시각화
subrules2 <- head(sort(rules, by="lift"), 20) ## lift 기준으로 상위 20개만을 시각화
ig <- plot( subrules2, method="graph", control=list(type="items") )
# saveAsGraph seems to render bad DOT for this case
tf <- tempfile( )
saveAsGraph( subrules2, file = tf, format = "dot" )
# clean up temp file if desired
#unlink(tf)
# 인터렉티브 코드
ig_df <- get.data.frame( ig, what = "both" )
visNetwork(
nodes = data.frame(
id = ig_df$vertices$name
,value = ig_df$vertices$support # could change to lift or confidence
,title = ifelse(ig_df$vertices$label == "",ig_df$vertices$name, ig_df$vertices$label)
,ig_df$vertices
)
, edges = ig_df$edges
) %>%
visEdges( ig_df$edges ) %>%
visOptions( highlightNearest = T )
## 참고(Reference)
R visualization of arules with arulesViz + igraph + visNetwork
'모조리 Data > 모조리 R' 카테고리의 다른 글
맥에서 ggplot 한글 깨질때 해결법 (0) | 2018.01.24 |
---|---|
dplyr 연습 (0) | 2018.01.20 |
앙상블 (Ensemble) 기법 중 배깅(Bagging) 기법 원리 이해하기 :: R 모조리 정복하기 (0) | 2017.11.22 |
히스토그램(histogram)과 막대그래프(bar plot) 비교 이해하기 :: R 모조리 정복하기 (0) | 2017.11.22 |
K 평균 군집분류 (K-Means Classification) 알고리즘 원리 이해하기 :: R 모조리 정복하기 (0) | 2017.11.21 |