1. A-priori Algorithm 이란 ?
발생 빈도 기반 데이터 간의 또 다른 사건의 규칙을 발견하는 Algorithm이라 할 수 있다.

Fig1.의 그림을 참고하여 A-Priori Algorithm을 설명하면 먼저 크게 Pass1,Pass 2과정이 있다고 생각하면 된다.
- Pass 1
이 과정에서는 Baskets(데이터)를 읽고 각각의 item들의 빈도수를 count해준다.
이때 우리가 정해놓은 Threshold(s) 값이 넘는 빈도수들의 item들을 frequent item으로 취급해준다.
- Pass 2
이 과정에서는 Baskets(데이터)를 다시 읽고 이번에는 Pass 1과정에서 구한 frequent pair들만 count 해준다.

위 예시는 A-priori Algorithm을 이용하여 triplet set을 만드는 과정이다.
위의 방법 처럼 적용해보면 Pass1 과정을 거치면 L1 set을 구할 수 있다.
그 후 L1의 item들을 사용하여 C2 집합(frequent pair)들을 만들어 준다.
이 후 C2 집합들을 똑같이 algorithm을 적용해준후 새로운 frequent pair들(L2)만 남겨준다.
이 문제에서는 triplet을 구해야하기 때문에 L2를 이용하여 candidate triplet set(C3)를 만들어 준 후,
Algorithm을 다시 적용하여 최종 frequent triplet을 구하는 예시이다.
2. How to apply A-prori Algorithm ?
#1st pruning 과정
check_item ={}
s = ths * total_basket
for word in item:
if item[word] >= s:
check_item[word] = item[word]
#frequent pair 생성 해주기
file = open("yelp_review ","r")
freq_pairs = {}
for line in file:
line = line.strip()
word_list = line.split()
word_list = list(set(word_list))
for i in range(len(word_list)-1):
for j in range(i+1, len(word_list)):
if (word_list[i] in check_item) and (word_list[j] in check_item):
pair = word_list[i] + " " + word_list[j]
if pair in freq_pairs:
freq_pairs[pair] += 1
else:
freq_pairs[pair] = 1
result = {}
for pair in freq_pairs:
if freq_pairs[pair] > s:
result[pair] = freq_pairs[pair]
result = sorted(result.items(), key=lambda x: x[1], reverse=True)
이 알고리즘 같은 경우 제가 직접 짠 A-priori 알고리즘인데 이 알고리즘으로 yelp_review 데이터에 적용해 review에 자주 쓰는 word pair들을 구할 수 있었다. 먼저 처음에는 frequent item을 만들어 주었고 해당 frequent item으로 frequent pair를 생성해 최종적인 frequent pair를 만들어주는 간단한 알고리즘이라고 생각한다.

해당 결과는 GCP에서 yelp review 데이터를 돌려본 결과이다. 아무래도 영어 단어들의 특징 상 묶이는 단어 pair들이 많은 것 같다. 다음에는 뭔가 더 구체적인 데이터로 특징을 찾아볼 수 있는 그런 데이터에 해당 알고리즘을 적용해 보고싶다.
'Algorithm' 카테고리의 다른 글
| [Algorithm] What is PCY Algorithm ? (1) | 2023.08.28 |
|---|---|
| [Algorithm] What is SON Algorithm ? (0) | 2023.08.14 |
| [Algorithm] What is RFP Algorithm on deduplication? (3) | 2023.07.03 |
| [Algorithm] What is Dijkstra's Algorithm? (2) | 2023.06.20 |
| [Algorithm] What is the page rank? (1) | 2023.06.07 |