케이무크 :: 데이터 마이닝 강의 1-2주 차
강의 복습 노트
1. 빈발 아이템 개념과 정의
2. 연관 규칙
① 서포트
② 컨피던스
③ 인터레스트니스
3. 빈발 아이템 셋 찾기 위한 알고리즘
① A-priori
② PCY
③ Randomsampling
④ SON
1. Market-basket model
슈퍼에서 고객들의 장바구니에 담긴 물건들을 모두 파악하고, 어떤 물건들이 서로 연관성이 있는지 알아내려는 게 목적.
고객들의 장바구니가 input data
물건들의 연관성이 output
예를 들어 장바구니의 물건들 중 기저귀와 우유를 산 고객들의 장바구니에는 맥주가 빈번하게 담겨 있더라는 정보를 찾을 수 있다. 이런 정보를 이용해서 기저귀나 우유 옆에 맥주를 진열하는 등의 마케팅을 할 수 있을 것.
데이터 마이닝이 활용될 수 있는 곳은
- 슈퍼마켓에서 물건 진열 및 묶음 쿠폰 등 마케팅에 활용.
- 온라인 쇼핑몰에서 특정 물건을 산 후 사람들이 무엇을 구매하는지 파악하여 묶음 상품으로 판매하는 등의 판매전략에 활용.
- 표절을 잡아내고,
- 영화 선호도를 파악해 추천 영화를 제공하는 데 활용.
- 특정 유전자와 질병이 연관되어 있다는 걸 발견하는데 활용하여 특정 질병을 발견하기 위해 유전자 테스트를 할 수 있다. 신약개발에 도움.
- 서로 관련 있는 컴퓨터 바이러스를 찾는데 도움. 어떤 바이러스에 신경을 써야 되는지 알 수 있다.
2. 연관 규칙
만약 a를 사면 b를 살 것이다라는 규칙을 알아내는 것.
특정 바스켓에 빈발하게 나타나는 아이템 셋을 찾는 것.
자주라는 말은 주관적임.
① 서포트
전체 바스켓 중 특정 아이템 셋을 포함하는 것의 갯수를 서포트라고 하고 미니멈 서포트를 지정해 주는 것임.
최소 s번 나타내는 아이템셋을 빈발 아이템이라고 함.
② 컨피던스
어떤 규칙의 컨피던스는 어떻게 결정되는지.
conf(a->b) = support(a와 b)/support(a)
a를 사면 b를 살 것이라는 규칙의 컨피던스는 a와 b가 함께 담긴 장바구니의 수를 a가 담긴 장바구니의 수로 나눠주면 된다.
컨피던스는 a를 사는 사람 중 실제로 b를 산 사람이 얼마인지를 나타냄.
컨피던스가 높다는 건 a를 구매했을 때 b를 실제 구매했다는 것.
③ 인터레스트
찾은 아이템 셋의 컨피던스가 높다고 흥미로운 걸까? 그건 아니다.
a를 산 사람이 b를 산다는 경향이 높은 게 아니라, b가 원래 잘 팔리는 상품일 수도 있기 때문. 그래서 인터레스트니스를 판단해줘야 한다.
|인터레스트니스|= |컨피던스 - b가 담긴 장바구니 개수/전체 장바구니 개수|
컨피던스와 얼마나 잘 팔리는 상품인지를 같이 봐야 함.
컨피던스는 높은데 팔리는 정도가 낮다는 것은 a를 사면 b를 살 확률이 높은데, 실제로 b가 잘 구매가 안 되는 경우.
컨피던스는 낮은데 팔리는 정도가 높다는 것은 a를 사면 b를 살 확률은 낮은데, b는 원래 잘 팔리는 상품. 즉 특정 고객은 b를 선호하지 않는다는 걸 알 수 있음.
데이터 마이닝 절차
- 빈발 아이템을 찾는다.
- 연관 규칙을 찾는다.
- 미니멈 서포트와 컨피던스를 충족하는지 본다.
푸르닝 = 가지치기
미리 절대로 빈발할 아이템이 아닌 걸 제외하여 세지 않는 것을 pruning이라고 함.
만약 [b, d]가 자주 나타나면 [b]와 [d]도 자주 나타난다. [b, d]만 세면 됨.
만약 [a, b, c]가 자주 나타나면 [b, c]도 자주 나타난다. [b, c]는 세지 않는다.
만약 [c]가 자주 나타나지 않으면, [c, a, b]도 자주 나타나지 않는다.
3. 빈발 아이템 셋 찾기 위한 알고리즘
① A-priori 알고리즘
패스 1에서 빈발하다고 판단한 아이템에 의해서만 페어를 만들어서 패스 2에서 읽도록 한다.
② PCY
A-priori 보다 효율적인 PCY.
후보 아이템 셋의 페어를 줄임으로써 메모리 사용량을 줄인다.
패스 1에서 빈발하다고 판단한 아이템을 페어를 만든다.
패스 2에서 아래 두 조건을 만족하지 않으면 제외한다.
아이와 제이가 빈발 아이템이어야 함
아이와 제이 페어가 빈발 버켓이어야 함.
대용량 데이터를 효율적으로 처리하는 방법
③ Randomsampling
전체 데이터 중 랜덤 하게 10%의 데이터만 뽑아서 A-priori를 돌린다.
pass 1만 돌리면 된다.
False positive를 줄이기 위해 2nd pass를 돌릴 수 있다.
Flase negative는 피할 수 없지만, 미니멈 서포트를 줄여서 줄일 수는 있다.
하지만, 큰 메모리가 필요하고, False positive를 늘린다는 단점이 있다.
④ SON
데이터를 청크로 나눈다.
모든 청크를 각각 개별적으로 메모리에서 돌린다. 한 번에 돌리는 데이터의 양이 적어서 큰 메모리가 필요하지 않다.
미니멈 서포트를 s/k로 바꿔줘야 함.
'코딩' 카테고리의 다른 글
파이썬 범례 추가하는 법 (순서바꾸기, 가로로 나열하기) (0) | 2023.01.05 |
---|---|
엑셀 파일 csv로 변환 코드 (tsv, sto, xlsx ↔ csv) (0) | 2021.06.17 |
엑셀 파일 CSV 변환, 파이썬으로 파일 불러오기, 데이터 추출 3가지 방법, 그래프 그리기 (pd.read_csv VS np.loadtxt) (1) | 2021.05.22 |
파이썬 그래프 범례 내 맘대로 수정하는 법 (matplotlib) (0) | 2020.12.18 |
파이썬 그래프에 한글 제목과 범례 사용하는 법 (0) | 2020.12.18 |
댓글