빅데이터분석기사/개념

[빅데이터분석기사] 연관규칙분석(Association Rule Analysis)

EveningPrimrose 2021. 11. 19. 21:06
반응형

연관분석

연관분석이란, 대량의 트랜잭션 정보로부터 개별 데이터(변수) 사이에서 연관규칙(x면 y가 발생)을 찾는 것을 말한다. 가령 슈퍼마켓의 구매내역에서 특정 물건의 판매 발생 빈도를 기반으로 'A 물건을 구매하는 사람들은 B 물건을 구매하는 경향이 있다.'라는 규칙을 찾을 수 있다. 다른 말로 장바구니 분석(Market Basket)이라 한다.

 

연관규칙

조건 결과의 빈도수를 기반으로 표현되기 때문에 비교적 결과를 쉽게 이해할 수 있다. 구매내역의 자료 구조를 가지기 때문에 특별한 전처리 과정을 필요로 하지 않는다. 그러나 품목의 개수가 늘어남에 따라 분석에 필요한 계산의 수가 기하급수적으로 증가하는 단점이 있다.

넷플릭스(Netflex)도 연관규칙을 추천 알고리즘에 적용했다. A영화에 대한 시청 결과가 B나 C영화를 선택할 가능성에 얼마나 영향을 미치는지 계산하는 조건부 확률로 콘텐츠 추천의 모델을 만들었다.

 

 

신뢰도(Confidence)

항목 A를 포함한 거래 중에서 항목 A와 항목 B가 같이 포함될 확률을 구한다. 즉 우유를 구매했을 때 식빵이 장바구니로 함께 들어갈 확률이 바로 신뢰도인 것이다. 간단한 수식이므로 알아두고 실생활에서 활용해보자.

 

지지도(Support)

전체 거래 중 항목 A와 B를 동시에 포함하는 거래의 비율이다. 장을 본 목록을 확인했을 때 우유와 식빵이 꼭 함께 있을 확률이다.

 

향상도(Lift)

A가 주어지지 않은 상태에서 B의 확률에 대하여 A가 주어졌을 때 B의 확률 증가비율이다. 만일 A에 대해 B가 등장할 경우와 A에 대해 C가 등장할 경우의 두 신뢰도가 같다면 어떻게 해야 할까? 대개 이럴 때 향상도 지표가 활용된다. A에 대해 B가 등장 가능성이 높은지 C가 등장 가능성이 더 높은지를 확인하는 지표로 향상도가 있다.

 

 

분석 연습

마트에서 구매하는 품목을 바탕으로 연관분석의 개념을 이애하기 위한 목적으로 분석 코딩을 실시하였다. 간단한 구매내역 데이터를 직접 작성하여 어떤 항목과 항목이 서로 연관성이 있는지를 확인한다.

 1) 연관규칙에서 필요한 라이브러리와 모듈을 불러온다.

import  pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules

pandas는 파이썬에서 사용하는 데이터 분석 라이브러리로, 행과 열로 이루어진 데이터 객체를 만들어 사용하며, 대용량의 데이터를 처리하는데 매우 편리한 도구이다.

mlxtend는 통계분석 기능을 지원해주는 파이썬 라이브러리이다.

연관규칙(Association Rule) 적용을 위해서는 각 항목들이 dataset 안에서 어떤 빈도로 나타났는지 또는 어떤 항목과 함께 나왔는지를 파악하는 것이 필수적이다. 하지만 dataset이 큰 경우 이를 모든 항목들에 대해 검사하는 것은 매우 비효율적이다. 이를 해결하기 위해 사용되는 연관규칙분석의 대표적인 알고리즘이 Apriori 알고리즘이다.

 

2) dataset이 아래와 같이 구성되어 있을 때 연관규칙을 확인해보자.

dataset은 5가지의 장바구니에 담긴 품목들을 나타내고 있다.

dataset = [['Milk', 'Onion', 'Nutmeg', 'Eggs', 'Yogurt'],
              ['Onion', Nutmeg', 'Eggs', 'Yogurt'],
              ['Milk', 'Apple', 'Eggs'],
              ['Milk', 'Unicorn', 'Corn', 'Yogurt'],
              ['Corn', 'Onion', 'Onion', 'Ice cream', 'Eggs']]

te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.Dataframe(te_ary, column=te.columns_)

TransactionEncoder 객체를 사용하여 이 dataset을 일반적인 기계 학습에 적합한 배열 형식으로 변환할 수 있다.

fit 함수를 통해 dataset은 고유한 라벨을 갖게 되고, transform 함수를 통해 파이썬 리스트를 원-핫 인코딩(One-hot encoding) 된 numpy 배열로 변환할 수 있다.

원-핫 인코딩이란 어떤 변수의 값을 0과 1로만 표현하는 방식이다.

여기서는 False와 True를 통하여 품목이 없는 경우와 있는 경우를 표현하였다.

 

3) 원-핫 인코딩의 결과를 중간 과정에서 확인해보자.

0번 바구니부터 4번 바구니까지 총 5개의 장바구니 요약표가 작성됐다.

해당 품목이 있으면 True, 없으면 False이다.

4) 관심항목 대상으로 지지도, 신뢰도, 향상도를 확인한다.

아래 결과표는 Pandas에서 제공하는 association_rules 함수를 사용해 얻은 결과이다.

 

 

연관규칙분석 결과, 달걀과 양파 두 품목 모두를 구매할 확률(지지도)은 0.6이고 달걀 품목을 구매했을 때 양파 품목까지 함께 구매할 가능성(신뢰도)은 0.75, 양파를 구매했을 때 달걀을 구매할 가능성은 1=(100%)로 나타났다.

 

연관분석에 대한 결과 해석은 어느 하나의 지표만 보고 판단하지 않는다. 지지도와 신뢰도, 향상도 외에도 필요한 지표들을 종합하여 결론을 내린다. 여기서는 달걀과 양파가 연관성이 높은 편임을 알 수 있다.

특히 지지도와 신뢰도 그리고 향상도는 위와 같이 품목별 관계성을 직관적으로 보여주므로 품목간 관계정도의 서열을 확인하는 데 유용하다.

 

 

함께 보면 좋은 글

 

 

[빅데이터분석기사] 교차분석(Cross-tabulation Analysis)

 

[빅데이터분석기사] 교차분석(Cross-tabulation Analysis)

교차분석 교차분석이란, 비교 대상이 되는 항목들의 빈도를 이용하여 자료 간 관계의 유의성을 파악할 때 사용한다. 주로 '범주형' 자료 간의 관계를 확인하는 데 쓰이며, 전체 비율을 통해 예산

it-utopia.tistory.com

 

[빅데이터분석기사] 상관분석(Correlation Analysis)

 

[빅데이터분석기사] 상관분석(Correlation Analysis)

상관분석 상관분석은 x와 y변수 간에 관계가 어떤 선형적인 관계를 갖고 있는지를 파악한다. 두 변수 간의 관계의 강도도 계산할 수 있다. 두 변수가 변하는 패턴이 얼마나 비슷한가를 확인하는

it-utopia.tistory.com

 

[빅데이터분석기사] 회귀분석(Regression Analysis)

 

[빅데이터분석기사] 회귀분석(Regression Analysis)

회귀분석 일반적으로 예측을 목표하는 통계 분석이다. 예측을 하는 방법에 핵심이 되는 개념이 바로 '추세선'이다. 좌표상에서 데이터의 분포와 앞으로의 변화를 가장 잘 설명할 수 있는 하나의

it-utopia.tistory.com

 

[빅데이터분석기사] 로지스틱 회귀분석(Logistic Regression Analysis)

 

[빅데이터분석기사] 로지스틱 회귀분석(Logistic Regression Analysis)

로지스틱 회귀 데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측하고, 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류하는 기법이다. 0.5 보다 크면 어떤 사건이 일어

it-utopia.tistory.com

 

[빅데이터분석기사] 시계열분석(Time-series Analysis)

 

[빅데이터분석기사] 시계열분석(Time-series Analysis)

시계열분석 시간에 따라 변화되는 자료의 패턴을 밝혀 가까운 미래를 예측하는 방법이다. 시계열분석을 위해서는 시계열 데이터가 준비돼야 한다. 시간의 경과만 한 축(x)을 구성하는 것이 아니

it-utopia.tistory.com

 

반응형