[IT this and that] 너와 나의 연결고리(feat. 연관분석)

AI경영연구WG 김동현

 

“너와! 나의! 연결! 고리! 이건! 우리! 안의! 소리!”

이 노래 가사는 2014년 한국 힙합씬 최대의 이슈 트랙중 하나인 일리네어 레코즈의 연결고리 라는 노래 중 메인 플로우의 한 부분이다.

이 노래의 가사 절반 이상이 저 가사로 가득 차있다. 아마도 연관관계가 없어보이는 너와 나를 이어주는 공감대을 찾고 싶어 했던 것 아니였을까 싶다.

이렇듯, 우리는 언제나 연관관계가 없어보이는 것들 사이에서 접점인 연결고리를 찾고 싶어 한다. 주변 사람들에 대해서도 물론이고 자신이 가지고 있는 물건, 취향들 심지어는 행동까지 연관지어 생각한다.

특히나, 최근에는 디지털 뉴딜이니 데이터 댐이니 하는 이슈로 인해서 데이터에 관심이 집중되고 있고, 이러한 영향으로 누구라고 할 것 없이 자신이 가지고 있는 다양한 데이터 속에서 이런 연관된 규칙을 찾고자하는 사람들이 늘어나고 있다.

 

게다가 요즘 핫한 AI라는 것이 무의미해 보이는 데이터 속에서 의미 있는 패턴(연관규칙)을 저절로 찾아 준다고 하니, 꼭 한번 해보고 싶을 것이다.

그렇다면, 연관 분석(Association Analysis)이 무엇인지 개념부터 사용법까지 하나씩 알아보자.

경영학에서는 장바구니 분석(Market Basket Analysis)로 알려진 연관분석은 전체 영역에서 어떤 두 아이템 집합이 조건과 반응의 형태(if – then)로 발생하는가를 일련의 규칙으로 생성하는 방법(혹은 알고리즘)이다.

예를 들어 ‘아메리카노를 마시는 손님중 10%가 브라우니를 먹는다.’라고 하거나 ‘샌드위치를 먹는 고객의 30%가 탄산수를 함께 마신다.’ 과 같은 식의 결론을 내는 것이다.

이런 규칙성을 많이 사용하는 분야가 대표적으로 판매업이 있다. 어떤 상품을 고르면 그 상품을 구매한 사람들이 선택한 다른 상품을 제안해 준다던지 하는 컨텐츠 기반 추천의 기본이 되는 것이다.

그럼 이제, 이러한 연관 분석을 하기 위해 사용되는 데이터부터 살펴보자, 동네 카페 매출이력(transaction)이 다음과 같이 주어졌다고 생각해보자.

 

1

위 데이터에서 각 고객이 구입한 품목들을 확인 할 수 있는데, 데이터의 연관규칙을 찾기 위해서는 다음과 같이 희소행렬(Sparse Matrix)로 나타내 주면 좋다.

 

2

 

이제 연관규칙을 찾을 준비는 되었다. 조건과 반응 형태로 규칙을 만들면 되는데, 다음과 같이 규칙을 만들 수 있다.

  • 아메리카노를 마시는 사람은 아이스 카페모카도 마신다.
  • 아메리카노를 마시는 사람은 치즈케이크도 먹는다.
  • 아메리카노를 마시는 사람은 허니 브레드도 먹는다.
  • 아메리카노를 마시는 ….

 

“어?! 뭔가 이상하게 생각 했던 것과는 다르다. 뭔가 그럴듯하게 맞아 떨어지는 규칙은 아니라고 생각 들것이다.”

그 생각이 맞다. 이런식으로 규칙을 만든다면, 주어진 데이터에서 무수히 많은 규칙을 만들어 낼 수 있다. 우리는 이 많은 규칙들 가운데서도 좋은 규칙을 찾아 내는 방법을 알아야 한다.

그렇다면, 좋은 규칙은 어떻게 찾을까?

좋은 규칙을 판단하기 위해서는 규칙의 효용성을 나타내는 지표는 크게 지지도(Support)와 신뢰도(Confidence)향상도(Lift)를 확인해 봐야한다. 이 3가지 지표를 모두 반영해 규칙의 효용성을 판단하고 좋은 규칙을 선택해야 하는 것이다.

이 3가지 지표를 구하는 방법은 다음과 같다.

 

  1. 지지도(Support)
    • 전체 거래 중 품목 A와 품목 B를 동시에 포함하는 거래의 비율로 정의한다.
지지도 공식

 

  1. 신뢰도(Confidence)
    • 품목 A를 포함한 거래 중에서 품목 A와 품목 B가 같이 포함될 활률이다. 연관성의 정도를 파악할 수 있다.
신뢰도 공식

 

  1. 향상도(Lift)
    • A가 구매되지 않았을 때 품목 B의 구매확률에 비해 A가 구매됐을 때 품목 B의 구매활률의 증가 비(Rate)이다. 연관규칙 A -> B는 품목 A와 품목 B의 구매가 서로 관련이 없는 경우에 향상도가 1이 된다.
향상도 공식

 

이제 좋은 규칙을 고르는 법도 알았으니 실제로 제대로된 규칙 찾아 보자.

가능한 모든 경우의 수를 탐색하여 지지도, 신뢰도, 향상도가 높은 규칙을 찾을 수 있다면 가장 이상적일 것이다. 데이터가 작으면 가능할 지 모르겟지만, 데이터가 증가 할 수록 계산에 드는 속도가 기하급수적으로 늘어가나게 된다.

(알고리즘의 데이터 증가에 대한 복잡도는 n^2이다.)

이러한 이유로 자주 발생하는 아이템에 대해서 빈발 집합(Frequent item sets)를 만들고 이 집합만 고려하는 규칙을 만드는 것이 효율적일 것이다.

예를들어 품목 탄산수의 지지도, 즉 P(탄산수)가 0.1로 나났다고 보면, 탄산수를 포함한 품목의 지지도는 아무리 높아도 0.1을 넘지 못할 것이다. 탄산수가 단독으로 등장할 확률인 P(탄산수)는 아무리 크게 나와도 P(탄산수, 아메리카노)를 넘지 못 할 것이기 때문이다. 이때 {탄산수, 아메리카노}는 {탄산수}, {아메리카노}의 초월집합(Super set)이라고 한다.

임의의 품목 집합의 지지도가 일정 기준을 넘지 못한다면 해당 집합의 초월 집합의 지지도는 그 기준보다 무조건 더 작을 것이기 때문에 유용한 규칙으로 선택 될 수 없다. 이처럼 최소 지지도 요건을 만족하지 못하는 품목 집합의 규칙은 애당초 제외하면 계산의 효율성을 높일 수 있다.

 

빈발관계 탐색

 

그럼 다시 연관 규칙분석을 수행해보자. 최소 지지도 요건을 0.3으로 설정했다고 하자. 그럼 각 품목의 지지도는 아메리카노(0.75), 아이스 카페모카(0.25), 카라멜 마키아또(0.5), 탄산수(0.25), 블루베리 치즈 케이크(0.25), 치즈 케이크(0.25), 허니 브레드(0.5), 브라우니(0.25), 크림 치즈 베이글(0.25), 크랜베리 치킨 샌드위치(0.25)로 나타낼 수 있다.

여기서 최소 지지도를 만족하지 못하는 것들을 제외하여 2개짜리 품목 집합을 생성하면, 다음과 같다.

 

3

 

여기서도 마찬가지로 품목 {아메리카노, 카라멜 마키아또}와 {카라멜 마키아또, 허니 브레드}는 최소 지지도 0.3을 만족하지 못하였으니 제외합니다. 이런 방식으로 더 이상 최소 지지를 만족하지 못하는 집합이 없을 때까지 품목 집합의 크기를 1씩 증가 시켜가면서 반복 수행 한다.

이러한 방식으로 구한 동네 카페 매출이력 4건을 토대로 가장 좋은(강한) 연관 규칙은 “아메리카노를 마시는 사람은 허니 브레드도 동시에 먹는다.”가 되는 셈 입니다.

 

4

 

여기까지, 연관관계 분석 방법에 대해서 알아보았고, 연관 분석을 통해서 그냥 눈으로만 봐서는 알 수 없었던 거래 데이터에서 규칙을 찾아 낼 수 있었다.

이 외에도 연관 분석 방법은 거래 데이터 뿐만 아니라 순차적이고 반복적으로 발생하는 대부분의 데이터에 적용 할 수 있다.

 

  • 운영하는 홈페이지에서 어떤 순서로 컨텐츠를 클릭 하였는가?
  • 특정 직무의 사람들은 어떤 순서로 일을 하는가?
  • 특정 문서에 출현한 단어들이 어떤 유의미한 의미로 요약 될 수 있는가?

 

위의 예 처럼 생각해 볼 수록 많은 응용점들이 있을 거라 생각한다. 한번 자신이 가지고 있는 데이터를 이용하여 각 특성들이 어떤 연결고리가 있는지 분석해 볼 수 있을 것 같다.

 

Share your thoughts