코딩

데이터 마이닝 :: 케이무크 무료 대학 강의

Bella0204 2021. 6. 12.

 

 

케이무크 :: 데이터 마이닝 강의 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로 바꿔줘야 함.

 

반응형

댓글