ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R샘플] 연관분석(eclat, apriori)
    R분석/함수 2023. 1. 26. 18:48
    728x90

    텍스트마이닝에서 자주 활용하는 연관분석에 대한 R 코드 샘플입니다.

    arules 패키지의 eclat, apriori 함수를 사용합니다.

     

    연관분석에서 사용되는 용어는 다음과 같습니다.

    A ⇒ B : A가 나타나면 B가 나타난다.
    lhs(left hand side) : 선행
    rhs(right hand side) : 후행
    support(지지도) : A, B의 연관성 (전체 횟수에 대한 A, B가 함께 나타난 횟수)
    confidence(신뢰도) : A, B의 인과성. A가 나타났을 때 B가 나타남. (A가 포함된 횟수에 대한 A, B가 동시에 나타난 횟수)
    lift(향상도) : 무심코(아무 관계없이 그냥) B가 나타날 때에 비해 A가 나타난 후 B가 나타날 가능성
    library(arules)
    
    rm(list=ls())
    
    nums = read.csv("data/nums.csv")
    
    nums_only = nums[,c(6:12)]
    nums_only$X1 = as.character(nums_only$X1)
    nums_only$X2 = as.character(nums_only$X2)
    nums_only$X3 = as.character(nums_only$X3)
    nums_only$X4 = as.character(nums_only$X4)
    nums_only$X5 = as.character(nums_only$X5)
    nums_only$X6 = as.character(nums_only$X6)
    nums_only$B1 = as.character(nums_only$B1)
    
    nums_list= list()
    for(i in 1:nrow(nums_only))
    {
        tmp = c(nums_only[i,]$X1, nums_only[i,]$X2, nums_only[i,]$X3,
                nums_only[i,]$X4, nums_only[i,]$X5, nums_only[i,]$X6, nums_only[i,]$B1)
    
        nums_list = append(nums_list, list(tmp))
    }
    
    wordtran = as(nums_list, "transactions")
    wordtable = crossTable(wordtran)
    
    # A => B : A 이면 B 이다.
    # lhs(left hand side) : 선행
    # rhs(right hand side) : 후행
    # support(지지도) : A, B 의 연관성 측정, (A, B가 함께 나타난 횟수 / 전체 횟수)
    # confidence(신뢰도) : A, B의 인과성 측정, A 나타났을 때 B가 나타남. (A, B가 동시에 나타난 횟수 / A가 포함된 횟수)
    # coverage :
    # lift(향상도) : 무심코(아무 관계없이 그냥) B가 나타날 때에 비해 A가 나타난 후 B가 나타날 가능성
    transrules = eclat(wordtran, parameter = list(supp=0.008, minlen=3))
    transrules = head(sort(transrules, by="support"), 1000)
    inspect(transrules)
    
    # apriori 연관규칙분석
    transrules2 = apriori(wordtran, parameter = list(supp=0.003, minlen=3))
    transrules2 = head(sort(transrules2, by="support"), 1000)
    inspect(transrules2)

     

    샘플에 사용된 로또 당첨 번호 파일은 아래 링크를 참고해주세요.

     

    https://lion2ryan.tistory.com/23

     

    로또 복권 역대 당첨 번호 목록 (1051회)

    로또 복권 역대 당첨 번호 목록입니다. 23년 1월 21일, 1051회까지 데이터입니다.

    lion2ryan.tistory.com

     

    728x90
Designed by Tistory.