개발/AI

[AI] 연관분석

Jindory 2024. 5. 13. 21:53
반응형

안녕하세요. 개발자 Jindory입니다.

오늘은 머신러닝의 연관분석에 대해서 글을 작성해보려고 합니다.

글에 앞서 본 글은 멀티캠퍼스의 "핵심만 쏙! 실무에 바로 적용하는 머신러닝"의 강의를 참고하여 작성한 내용임을 밝힙니다.

 

[ 글 작성 이유 ]

AI 관련 강의를 수강하며, 머신러닝과 관련된 개념 및 설명을 정리하고자 작성하게 되었습니다.


1. 연관분석이란?

상품이나 서비스를 구매하는 등 일련의 거래나 사건 안에 존재하는 항목간의 일정한 연관 규칙을 발견하는 분석기법을 연관분석이라고 합니다. 다른 말로 장바구니 분석이라고도 하며, 장바구니에 담긴 아이템을 분석하여 아이템간 연관성을 분석하는 방법입니다.

장바구니 분석의 대표적인 예시로 맥주와 기저귀 예시가 있습니다. 장바구니에 함께 구매된 아이템을 분석해 봤을때, 맥주와 기저귀라는 전혀 연관성이 없어 보이는 아이템이 같이 구매되었고, 분석해보니 기저귀를 사러 온 아버지들이 장 보러온 김에 맥주도 같이 구매하여 이러한 높은 연관성을 띄었다는 분석 내용입니다. 이러한 연관분석을 하기 위해서 지지도, 신뢰도, 향상도를 구하여 아이템간의 연관관계를 분석할 수 있습니다.

1.1 지지도(Support)

지지도는 전체 거래 중 특정 항목 A와 B가 동시에 포함된 거래의 비율을 나타냅니다. 수식으로 표현하면 아래와 같습니다.

아래의 예시를 보면서 지지도를 계산하며 어떻게 지지도를 구하는지 알아보도록 하겠습니다.

첫번째 볼펜, 연필을 동시에 구매하는 지지도에 대해서는 볼펜을 구매하고 연필을 구매한  거래 수(4회)를 전체 거래 수(10회)로 나누어 40%의 지지도가 있음을 확인할 수 있습니다.

두번째 볼펜, 연필, 형광펜을 동시에 구매하는 지지도에 대해서는 볼펜,연필,형광펜을 구매한 거래 수(2)를 전체 거래 수(10회)로 나누어 20%의 지지도가 있음을 확인할 수 있습니다.

 

지지도는 연관분석에서 가장 기본적인 지표로, 두 아이템의 확률이 얼마나 빈번히 일어나는지 알 수 있는 지표입니다. 최소 지지도를 설정하여 해당 값을 넘는 품목 간의 연관성을 찾습니다.

1.2 신뢰도(Confidence)

신뢰도는 항목 A의 거래 중에서 항목 B가 포함된 거래의 비율을 나타냅니다. 수식으로 표현하면 아래와 같습니다.

아래의 예시를 보면서 신뢰도를 계산하며 어떻게 신뢰도를 구하는지 알아보도록 하겠습니다.

볼펜을 구매했을때, 연필을 구매하는 신뢰도를 확인하기 위해서는 아래와 같은 절차를 거쳐야 합니다.

  1. 볼펜과 연필을 구매할 확률을 구합니다 : 4/10(40%)
  2. 볼펜을 구매할 확률을 구합니다 : 5/10(50%)
  3. 볼펜을 구매할 확률로 볼펜과 연필을 구매할 확률을 구합니다 : 4/5(80%)

그럼 반대로 연필을 구매했을 때, 볼펜을 구매하는 신뢰도를 동일한 절차로 구해봅시다.

  1. 볼펜과 연필을 구매할 확률을 구합니다 : 4/10(40%)
  2. 연필을 구매할 확률을 구합니다 : 8/10(80%)
  3. 연필을 구매할 확률로 볼펜과 연필을 구매할 확률을 구합니다 : 4/8(50%)

신뢰도는 A를 구매한 경우 B를 구매할 확률을 측정하는 지표입니다.

1.3 향상도(Lift)

향상도는 A를 구매하지 않았을 때 B를 구매할 확률 대비 A를 구매했을 때 B를 구매할 확률의 증가 비율을 나타내는 수식입니다. 수식으로 표현하면 다음과 같습니다.

향상도가 1보다 크면 A와 B는 서로 양의 상관관계를 가지며, 1보다 작으면 음의 상관관계를 가집니다.

아래의 예시를 보면서 향상도를 계산하며, 향상도를 구하는 방법을 알아보도록 하겠습니다.

볼펜과 연필의 향상도를 구하기 위해서는 아래와 같은 절차를 따릅니다.

  1. 볼펜을 구매할 확률 : 5/10
  2. 연필을 구매할 확률 : 8/10
  3. 불펜과 연필을 동시에 구매할 확률 : 4/10
  4. 볼펜과 연필을 동시에 구매할 확률 / 볼펜을 구매할 확률 x 연필을 구매할 확률 : (4/10) / {(5/10) x (8/10)} = 1

향상도를 구해봤을 때, 볼펜과 연필은 1이라는 결과가 나왔기 때문에 통계적으로 상관관계가 없다고 볼 수 있습니다.

1.4 활용

그럼 아래와 같은 데이터가 주어졌을때 어떤 의사결정을 할 수 있을까요?

각각의 지표를 보고 아래와 같은 전략을 세울 수 있을것 같습니다.

  • 지지도 : 지지도가 0.03이 나왔으므로 두 상품을 함께 구매하는 경우가 드므므로 프로모션을 할 필요가 적다고 판단.
  • 신뢰도 : A 구두를 구매할 경우 B 스커트를 구매할 확률이 0.58이므로 아래와 같은 전략
    • A 구두를 구매한 고객에게 B 스커트를 추천하는 전략
    • B 스커트를 프로모션할 때, A 구두를 구매한 고객을 대상으로 선정하여 프로모션하는 전략
  • 향상도 : A 구두와 B 스커트의 상관관계가 양의 상관관계 이므로 A 구두와 B 구두를 패키지 상품으로 프로모션하는 전략

그렇다면 지지도와 향상도가 각기 다르게 높은 경우에는 어떻게 전략을 수립할 수 있을까요?

1번 규칙의 경우 2번 규칙보다 향상도가 높은 상황이고, 2번 규칙의 경우 1번 규칙보다 지지도가 높은 경우라고 할 때 어떤 규칙을 선택하는것이 옳은지느 상황에 따라 다르게 됩니다.

  • 지지도가 높은 규칙을 선택해야하는 경우
    • 홍보관점에서 노출을 많이 시켜야하는 경우 전체 구매 개수 중 묶고자 하는 아이템을 구매한 확률이 다른 규칙보다 더 높기 때문에 구매할 확률이 높은 지지도가 높은 규칙을 선택해야 합니다.
  • 향상도가 높은 규칙을 선택해야하는 경우
    • 매출을 늘리는것이 목적이라면, 아이템끼리 묶었을때 시너지가 발생하므로 하나를 팔 때 다른 아이템도 구매하여 매출을 늘릴 확률을 높일 수 있어 향상도가 높은 규칙을 선택해야 합니다.

2. Apriori 알고리즘

위에서 배웠던 지지도,신뢰도,향상도는 아이템들간 연관관계를 알아볼 수 있는 방법이었습니다. 그렇지만 분석해야할 아이템이 수천,수만가지 일 경우 위의 방법을 사용하여 확률을 구해서 판단하기란 쉽지 않은 방법입니다. 그래서 분석해야할 수천, 수만가지 아이템들의 연관 규칙을 찾아내기 위한 알고리즘을 고안 했는데 이를 "Apriori 알고리즘"이라고 합니다.

 

이 알고리즘은 전체 아이템 셋을 대상으로 전부 다 분석하는 것이 아니라 어떤 특정 임곗값을 정해놓고 그 임계값을 넘어서는 아이템 조합에 대해서만 분석하는 알고리즘을 통해 효율적인 분석을 할 수 있습니다.Apriori 알고리즘의 진행과정은 아래와 같습니다.

 

Apriori 알고리즘을 사용하면 아래와 같은 효과를 볼 수 있습니다.

  • 데이터 셋에서 자주 발생하는 아이템 집합을 탐색하여 연관규칙을 생성합니다.
  • 하위 아이템 셋을 모두 제거할 수 있어 연산량이 줄어든다.

이렇게 머신러닝의 연관분석에 대해서 알아봤습니다.

 

혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.

오늘도 Jindory 블로그에 방문해주셔서 감사합니다.


[참조]

- [멀티 캠퍼스] 핵심만 쏙! 실무에 바로 적용하는 머신러닝 

반응형