스토리
“Apriori 알고리즘은 이해가 쉬워서 데이터가 적을 땐 손으로 처리해도 되겠는데요? 그런데 데이터가 많아지면 아무리 지지도가 적은 것을 제거한다고 해도 결국 기본적인 로직 자체는 지수적으로 증가하는 건 마찬가지 겠는데요?” 루시가 물었다.
“음…그래 개수를 줄여주는 역할은 하지만 근본적인 해결책이 되지는 않겠군. 제프 뭔가 아이디어 없을까?” 데이비드가 제프에게 물었다.
“데이터가 많을 때 전체를 여러번 조회하지 않게 하는 방법이 필요할텐데 좀 더 조사를 해야 할 것 같아요.” 제프가 대답했다.
“그래, 찾아보고 방법이 있으면 적용해보자고.” 데이비드가 얘기했다.
수행목표
FP-Growth 알고리즘을 수작업으로 처리한다.
수행단계
1개 item의 출현 빈도가 적은 것을 제외하고 지지도 높은 순으로 정렬 후 2차 조회에서 tree 구조를 생성하여 계산하는 FP-growth 알고리즘을 조사하고 그 방법으로 아래 목록을 수작업으로 처리해보자. 최소 지지도 0.2 초과 결과만 확인한다.
사용자 영화 목록
1 가위손, 다이하드, 블레이드 러너
2 블레이드 러너, 아마데우스, 죽은 시인의 사회
3 가위손, 나 홀로 집에, 죽은 시인의 사회
4 다이하드, 블레이드 러너
5 죽은 시인의 사회, 아마데우스
구매행렬표를 만든다.
1개 영화에 대해 지지도를 계산한다.
지지도가 최소 지지도 이하인 영화를 제외한다.
각 사용자 영화 순서를 지지도 높은 순으로 정렬한다.
사용자 순서대로 개별 영화를 tree item 으로 하여 tree를 만들어 나간다.
2번째 사용자부터 첫번째 영화가 일치하지만 두번째 영화가 일치하지 않으면 첫번째 영화의 하위 node로 추가하고 일치하면 다음영화로 넘어가는 과정을 반복
위 과정을 반복한다.
개발환경
개발환경
OS : Windows, Linux, Mac OS
Dev Tools(IDEs) : Jupyter Notebook
개발언어 : Python
라이브러리 : numpy, pandas, mlxtend
제약조건
개발환경
OS : Windows, Linux, Mac OS
Dev Tools(IDEs) : Jupyter Notebook
개발언어 : Python
라이브러리 : numpy, pandas, mlxtend