Skip to content

Latest commit

 

History

History
75 lines (55 loc) · 4.56 KB

ch11-apriori.md

File metadata and controls

75 lines (55 loc) · 4.56 KB

3부 비지도 학습

어프라이어리 알고리즘으로 연관 분석(Apriori)

일반적으로 함께 구매한 물건들의 목록들을 잘 살펴보면 소비자들의 구매 행동에 대한 생각을 알 수 있다.
정보의 바다에서 이러한 지식을 추출하면 상품의 가격을 정하거나 마케팅 홍보, 상품 목록 관리 등 여러 분야에 유용하게 사용할 수 있다.
이를 연관 분석(association analysis) 혹은 연관 규칙 학습(association rule learning) 이라 한다.
여러 항목들의 조합을 찾는 것은 많은 시간이 걸리고, 계산 비용이 많이 소비되기 때문에 합리적인 시간에 빈발한 항목 집합을 찾는 알고리즘은 더욱 지능적이어야 한다.
이번 장에서는 위의 문제들을 해결하기 위해 어프라이어리(apriori) 알고리즘 을 살펴볼 것이다.

먼저 연관 분석을 살펴본 다음에, 어프라이어리 알고리즘을 위한 이론을 다룰 것이다.
빈발 항목 집합을 효과적으로 찾는 함수를 생성하고, 연관 규칙을 추출할 것이다.

11.1 연관 분석

어프라이어리
장점 코드를 작성하기 쉽다.
단점 큰 데이터 집합에서는 느려질 수 있다.
활용 수치형 값, 명목형 값

연관 분석은 큰 데이터 집합 내에서 '흥미로운 관계'를 찾는 것이다.
여기서 흥미로운 관계란 빈발 항목 집합(frequent item sets) 또는 연관 규칙(association rule) 이라고 하는 두 가지 형태로 표현한다.

관계
빈발 항목 집합 함께 자주 발생하는 항목들의 집합
연관 규칙 두 항목 간의 연관 강도가 존재한다고 제안

여기서는 하나의 예제를 가지고 두 가지 개념을 설명한다.
표 11.1은 식료품 상점에서 처리한 트랜잭션(transaction) 목록이다.

표 11.1

트랜잭션 번호 항목
0 두유, 상추
1 상추, 기저귀, 와인, 근대
2 두유, 기저귀, 와인, 오렌지 주스
3 상추, 두유, 기저귀, 와인
4 상추, 두유, 기저귀, 오렌지 주스

표 11.1의 예제를 보면 {와인, 기저귀, 두유}가 빈발 항목 집합이 된다.
이 집합에서도 기저귀 -> 와인 과 같은 연관 규칙을 찾을 수 있다.
즉, 기저귀를 구매한 사람은 와인을 구매할 가능성이 있다는 것을 의미한다.

기저귀-> 맥주

기저귀와 맥주는 연관 분석을 설명할 때 가장 유명한 예제로, 실제 미국에서 연관 분석을 도입하여 성공한 예시 중 하나이다.
성인 남성들이 기저귀를 구매할 때 맥주를 같이 구매한다는 규칙를 추출하고, 두 상품을 가까운 곳에 배치하여 이익을 얻게 되었다.

위에서 얘기한 흥미로운 관계는 어떻게 정의해야 할까?
무엇이 흥미로운지는 누가 정의할까?
빈발 항목 집합을 구한다고 할 때, 어떤 것들을 빈발하다고 할 수 있을까?
여러가지 방법이 있지만, 여기서는 지지도(support)신뢰도(confidence) 라는 가장 중요한 두 가지를 사용한다.

항목 집합에 대한 지지도는 빈발 항목 집합이 포함된 전체 데이터 집합의 비율 로 정의한다.
표 11.1에서 {두유}의 지지도는 4/5이다.
{두유, 기저귀}의 지지도는 3/5이다.
지지도라는 개념을 항목 집합에 적용함으로써 우리는 최소 지지도(minimum support) 를 정하고, 이를 만족하는 항목들을 구할 수 있다.

신뢰도는 {기저귀}->{와인}처럼 연관 규칙으로 정의한다.
이 규칙에 대한 신뢰도는 지지도({기저귀, 와인})/지지도({기저귀})가 된다.
즉, {기저귀}->{와인}은 3/4가 된다.
기저귀가 포함된 데이터 집합 중, 와인을 포함하는 데이터 집합이 75%라는 것을 의미한다.

지지도와 신뢰도는 연관 분석의 성공 여부를 측정할 수 있는 방법이다.
예를 들어, 최소 지지도를 0.8로 설정하고 이를 만족하는 아이템들의 모든 집합을 찾는다고 가정해 보자.
우리는 아이템들의 모든 조합을 생성할 수 있고, 각 조합이 얼마나 자주 발생하는지를 구할 수 있다.
하지만 상품이 수천가지인 경우, 이는 굉장히 오랜 계산시간이 소요된다.
이를 해결하기 위해 우리는 어프라이어리 이론 을 살펴본다.

11.2 어프라이어리 이론