R:연관성분석
R언어 공부를 위한 틀 틀:R
개요
데이터 간의 연관규칙을 찾는 기법. market basket analysis라고도 한다.(땅콩을 샀을 때 맥주를 살 확률 등 연관성을 분석한다.)
이를 통해 상품진열, 보험사기 적발, 홍보물 제작 등에 사용한다.
연관성규칙은 조건과 결과로 구성한다. {조건} => {결과} 형태로.
지표
3가지 지표로 연관성 규칙을 평가한다.
지표 | 설명 | 수식 |
---|---|---|
지지도. support. | 연관성규칙을 구성하는 항목들이 모두 포함되는 비율을 의미.
어떤 숫자가 좋다 하는 규칙은 없다. |
조건,결과항목포함거래 / 전체거래
(사과와 배를 포함한 거래수 / 전체과일 거래수) |
신뢰도. confidence. | 조건이 발생할 때 결과가 일어날 확률.
1이 될 수록 좋다. |
조건,결과항목포함거래 / 조건항목포함거래
(사과와 배를 포함한 거래수 / 사과 거래수) |
향상도. lift. | 우연적인 관계를 감안해 산출한다.(모든 항목에서 공통적으로 발생하는 항목이 있는 경우)
1이면 우연에 의한 관계라 본다. 1보다 클 수록 좋다. |
연관성규칙의지지도 / (조건의지지도*결과의지지도)
((사과+배 거래수/전체거래) / (사과/전체거래 * 배/전체거래)) ( 사과와 배 거래수 / (사과거래+배거래)) *전체거래 |
Apriori알고리즘
요소가 조금만 많아져도 조합의 수가 엄청나게 많아진다. 때문에 필요없는 계산들을 걸러내야 한다.
지지도가 낮은 관계들은 무시하고 결과를 얻어낸다.
install.packages("arules")
library(arules)
하나의 거래내역을 트렌젝션이라고 하는데, 거래내역이 문자열이어야 한다.
데이터셋2 = strsplit(데이터셋, ",") #쉼표를 기준으로 잘나낸다.(리스트화)
데이터셋2 = as(데이터셋2, "transactions") #자료형 변환.
데이터셋3 = apriori(데이터셋2, parameter = list(support=0.1, confidence=0.8)) #지지도는 0.1, 신뢰도는 0.8 이상인 연관식만 도출한다.