신뢰도가 높은 규칙이 늘 쓸모 있는 것은 아닙니다. 누구나 사는 상품을 결과로 둔 규칙은 신뢰도가 저절로 높아지므로 향상도로 한 번 더 걸러야 합니다.
풀고 시작
문제 1. 거래 대부분에 생수가 들어 있는 매장에서 "빵을 사면 생수도 산다"는 규칙의 신뢰도가 0.8로 나왔고, 전체 거래 가운데 생수가 들어 있는 비율도 0.8입니다. 이 규칙을 가장 알맞게 평가한 것은?
향상도는 신뢰도를 결과 상품의 전체 구매 비율로 나눈 값이라 0.8 나누기 0.8로 1입니다. 빵을 사든 안 사든 생수를 살 가능성이 같다는 뜻이라, 신뢰도가 높아도 의미 있는 연관이 아닙니다.
장바구니에서 규칙을 찾는다
연관분석(association analysis)은 함께 일어나는 항목들 사이의 규칙을 찾는 비지도학습입니다. 대표적인 쓰임이 장바구니 분석이라 장바구니 분석(market basket analysis)이라고도 부릅니다. 결과는 "A를 사면 B도 산다"는 IF-THEN 규칙으로 나오고, 앞쪽 A를 조건절, 뒤쪽 B를 결과절이라고 합니다. 상품 진열, 묶음 판매, 추천, 쿠폰 설계에 씁니다.
지지도, 신뢰도, 향상도
규칙 A → B는 세 지표로 평가합니다. 전체 거래 100건 가운데 A가 든 거래가 40건, B가 든 거래가 25건, 둘이 함께 든 거래가 20건이라고 해 보겠습니다.
지표
뜻
계산
값
지지도
전체 거래 가운데 A와 B가 함께 든 비율
20 / 100
0.2
신뢰도
A가 든 거래 가운데 B도 든 비율
20 / 40
0.5
향상도
신뢰도를 B의 전체 구매 비율로 나눈 값
0.5 / 0.25
2
지지도(support)는 규칙이 얼마나 자주 나타나는지를 보여 줍니다. 지지도가 너무 낮은 규칙은 몇 건의 우연일 수 있습니다. 신뢰도(confidence)는 A를 산 사람 가운데 B도 산 비율, 곧 조건부 확률입니다. 신뢰도에는 방향이 있어서, 위 예에서 B → A의 신뢰도는 20 나누기 25로 0.8이 되어 A → B의 0.5와 다릅니다.
향상도(lift)는 A를 샀다는 사실이 B를 살 가능성을 몇 배로 높이는지를 봅니다. 신뢰도를 B의 전체 구매 비율로 나누므로, 풀고 시작의 생수처럼 원래 누구나 사는 상품을 결과절에 두어 신뢰도가 저절로 높아진 규칙을 걸러 냅니다. 향상도가 1이면 두 상품은 서로 독립이고, 1보다 크면 함께 사는 경향이 있는 보완 관계, 1보다 작으면 하나를 사면 다른 하나를 덜 사는 대체 관계로 봅니다. 향상도는 A와 B를 바꿔도 값이 같습니다.
아프리오리: 빈발하지 않은 것은 가지를 친다
상품이 천 개만 되어도 가능한 조합은 셀 수 없이 많습니다. 아프리오리 알고리즘(Apriori)은 1994년 라케시 아그라왈과 라마크리슈난 스리칸트가 제안한 방법으로, 먼저 최소 지지도 이상인 빈발 항목집합만 찾습니다. 핵심 원리는 단순합니다. 어떤 항목집합이 빈발하면 그 부분집합도 모두 빈발하고, 거꾸로 빈발하지 않은 집합을 품은 더 큰 집합은 절대 빈발할 수 없습니다. 그래서 우유가 드물게 팔린다면 우유가 들어간 모든 조합을 계산하지 않고 한꺼번에 버립니다. 빈발 항목집합을 찾은 뒤에는 최소 신뢰도 이상인 규칙만 남깁니다.
아프리오리는 후보 집합을 많이 만들고 데이터를 여러 번 읽어야 해 대용량에서 느립니다. FP-Growth는 거래를 FP-트리라는 압축 구조에 담아 후보를 만들지 않고 빈발 항목집합을 찾으며, 데이터를 두 번만 읽습니다.
library(arules)
rules <- apriori(trans, parameter = list(supp = 0.01, conf = 0.5))
inspect(head(sort(rules, by = "lift"), 5)) # 향상도가 높은 규칙 다섯 개
연관분석의 강점과 한계
연관분석은 결과가 IF-THEN 규칙이라 누구나 이해하기 쉽고, 목표변수가 없어도 되며, 계산 원리가 단순합니다. 반면 상품이 많아지면 규칙이 폭발적으로 늘어나 쓸모 있는 것을 고르기 어렵고, 최소 지지도에 걸려 드물게 팔리는 상품의 규칙은 찾기 어렵습니다. 상품을 "우유"로 묶을지 "저지방 우유 1리터"로 쪼갤지 같은 품목의 세분화 수준도 결과를 크게 바꿉니다. 시간 순서까지 고려해 "노트북을 산 고객이 한 달 뒤 가방을 산다" 같은 규칙을 찾는 것은 순차 패턴 분석입니다. 그리고 7강에서 본 대로, 함께 팔린다는 사실이 한 상품이 다른 상품의 구매를 일으킨다는 증거는 아닙니다.
인출 문제
문제 1. 전체 거래 100건 가운데 A가 든 거래가 40건, 둘이 함께 든 거래가 20건일 때 규칙 A → B의 신뢰도는 얼마입니까?
신뢰도는 A가 든 거래 가운데 B도 든 비율이라 20을 40으로 나눠 0.5입니다. 0.2는 지지도입니다.
문제 2. 향상도가 1보다 작은 규칙에 관한 해석으로 가장 알맞은 것은?
향상도가 1보다 작으면 조건절 상품을 산 사람이 결과절 상품을 오히려 덜 산다는 뜻입니다. 1이면 독립, 1보다 크면 보완 관계로 봅니다.
문제 3. 아프리오리 알고리즘의 가지치기 원리로 옳은 것은?
어떤 조합이 최소 지지도에 못 미치면 그 조합을 품은 더 큰 조합은 지지도가 더 낮을 수밖에 없습니다. 그래서 한꺼번에 버려 계산을 줄입니다.
문제 4. 규칙 A → B와 B → A에서 값이 같은 지표로만 짝지은 것은?
지지도는 A와 B가 함께 든 비율이고 향상도는 두 비율의 곱으로 나눈 값이라 방향과 상관없이 같습니다. 신뢰도는 분모가 조건절이라 방향에 따라 달라집니다.
더 풀기
출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.
묶음 1
문제 1. 연관분석의 결과가 나오는 형태로 옳은 것은?
연관분석은 조건절과 결과절로 된 규칙을 찾아 줍니다. 군집 번호는 군집분석, 예측 확률은 분류 모델의 결과입니다.
문제 2. 연관분석이 속하는 학습 방식은 무엇입니까?
연관분석은 맞혀야 할 목표변수 없이 거래 자료에서 함께 나타나는 패턴을 찾으므로 비지도학습입니다.
문제 3. 규칙 A → B에서 A를 부르는 이름은 무엇입니까?
화살표 앞의 A가 조건절, 뒤의 B가 결과절입니다.
문제 4. 전체 거래 100건 가운데 A와 B가 함께 든 거래가 20건일 때 규칙 A → B의 지지도는 얼마입니까?
지지도는 전체 거래 가운데 두 상품이 함께 든 비율이라 20을 100으로 나눠 0.2입니다.
문제 5. 신뢰도의 뜻으로 옳은 것은?
신뢰도는 A를 산 사람이 B도 살 조건부 확률입니다. 전체 거래 가운데 함께 든 비율은 지지도입니다.
문제 6. A가 든 거래 40건, B가 든 거래 25건, 둘이 함께 든 거래 20건일 때 규칙 B → A의 신뢰도는 얼마입니까?
B → A의 신뢰도는 B가 든 거래 가운데 A도 든 비율이라 20을 25로 나눠 0.8입니다. A → B의 0.5와 달라 신뢰도에는 방향이 있습니다.
문제 7. 전체 100건 가운데 A 40건, B 25건, 함께 20건일 때 향상도는 얼마입니까?
신뢰도 0.5를 B의 전체 구매 비율 0.25로 나눠 2입니다. A를 산 사람은 B를 살 가능성이 평균보다 두 배 높다는 뜻입니다.
문제 8. 향상도가 1인 규칙의 뜻으로 옳은 것은?
향상도 1은 조건절이 결과절에 아무 영향을 주지 않는다는 뜻입니다. 이런 규칙은 신뢰도가 높아도 쓸모가 없습니다.
문제 9. 향상도를 따로 보는 이유로 가장 알맞은 것은?
결과절 상품의 구매 비율이 원래 높으면 신뢰도도 저절로 높아집니다. 향상도는 그 기준 비율로 나눠 진짜 연관만 남깁니다.
문제 10. 지지도가 너무 낮은 규칙을 조심해야 하는 이유로 알맞은 것은?
전체 만 건 가운데 두 번 함께 팔린 규칙은 신뢰도나 향상도가 높아도 우연일 가능성이 큽니다. 그래서 최소 지지도로 먼저 거릅니다.
묶음 2
문제 1. 아프리오리 알고리즘을 제안한 사람들로 옳은 것은?
아그라왈과 스리칸트가 1994년에 아프리오리 알고리즘을 제안했습니다. 박스와 젠킨스는 시계열의 ARIMA 절차로 알려져 있습니다.
문제 2. 아프리오리 알고리즘이 가장 먼저 찾는 것은 무엇입니까?
아프리오리는 먼저 최소 지지도를 넘는 빈발 항목집합을 찾고, 그 안에서 최소 신뢰도를 넘는 규칙을 만듭니다.
문제 3. 우유가 최소 지지도에 못 미칠 때 아프리오리가 하는 일로 옳은 것은?
우유 하나도 빈발하지 않다면 우유를 포함한 어떤 조합도 빈발할 수 없으므로, 그 조합들을 통째로 후보에서 뺍니다.
문제 4. 빈발 항목집합의 부분집합에 관한 설명으로 옳은 것은?
빵과 우유가 함께 자주 팔린다면 빵만 든 거래와 우유만 든 거래는 그보다 많거나 같습니다. 그래서 부분집합의 지지도는 늘 크거나 같습니다.
문제 5. 아프리오리 알고리즘의 약점으로 가장 알맞은 것은?
아프리오리는 항목집합의 크기를 하나씩 늘릴 때마다 후보를 만들고 데이터를 다시 읽습니다. FP-Growth가 이 약점을 줄입니다.
문제 6. FP-Growth가 아프리오리보다 빠른 이유로 알맞은 것은?
FP-Growth는 데이터를 두 번 읽어 압축 트리를 만든 뒤 그 트리에서 빈발 항목집합을 캐내므로 후보 생성의 부담이 없습니다.
문제 7. R에서 아프리오리로 연관규칙을 찾는 대표적인 패키지는 무엇입니까?
arules 패키지의 apriori 함수로 규칙을 찾고, inspect로 규칙을 확인합니다.
문제 8. apriori(trans, parameter = list(supp = 0.01, conf = 0.5))가 뜻하는 것으로 옳은 것은?
supp는 최소 지지도, conf는 최소 신뢰도입니다. 전체 거래의 1퍼센트 이상에 나타나고 신뢰도가 50퍼센트 이상인 규칙만 남깁니다.
문제 9. 찾은 규칙 가운데 쓸모 있는 것을 먼저 보려고 inspect(sort(rules, by = "lift"))를 실행했습니다. 이 코드가 하는 일로 옳은 것은?
sort에 by = "lift"를 주면 향상도 기준으로 정렬되고, inspect가 규칙을 조건절, 결과절, 지표와 함께 보여 줍니다.
문제 10. 최소 지지도를 너무 높게 잡으면 생기는 문제로 알맞은 것은?
비싼 가전처럼 드물게 팔리는 상품은 지지도가 낮아 기준에서 걸러집니다. 반대로 너무 낮게 잡으면 규칙이 지나치게 많아집니다.
묶음 3
문제 1. 연관분석의 장점으로 가장 알맞은 것은?
"기저귀를 사면 맥주도 산다"처럼 규칙이 말로 바로 읽혀 현업에서 쓰기 쉽습니다. 상품이 많을수록 규칙은 오히려 폭발적으로 늘어납니다.
문제 2. 상품을 "우유"로 묶을지 "저지방 우유 1리터"로 쪼갤지에 따라 달라지는 문제는 무엇입니까?
너무 잘게 쪼개면 품목마다 지지도가 낮아져 규칙이 안 나오고, 너무 크게 묶으면 뻔한 규칙만 나옵니다. 목적에 맞는 수준을 정해야 합니다.
문제 3. "노트북을 산 고객이 한 달 뒤 가방을 산다"처럼 시간 순서까지 고려한 규칙을 찾는 분석은 무엇입니까?
순차 패턴 분석은 같은 고객의 거래를 시간 순서로 늘어놓고 먼저 일어난 구매 뒤에 이어지는 구매를 찾습니다.
문제 4. 향상도가 높은 규칙을 찾았을 때 가장 알맞은 태도는 무엇입니까?
연관은 함께 일어난다는 사실일 뿐입니다. 진열을 바꿨을 때 실제로 매출이 느는지는 실험으로 확인해야 합니다.
문제 5. 향상도가 1보다 큰 규칙에 관한 해석으로 옳은 것은?
향상도가 1보다 크면 조건절 구매가 결과절 구매 가능성을 높입니다. 다만 지지도가 낮다면 우연일 수 있어 함께 확인합니다.
문제 6. 연관분석에서 규칙이 지나치게 많이 나올 때의 처방으로 가장 알맞은 것은?
기준을 높이면 자주 나타나고 믿을 만한 규칙만 남고, 향상도로 정렬하면 진짜 연관이 있는 규칙이 위로 올라옵니다.
문제 7. 전체 거래 1000건 가운데 A 200건, B 100건, 함께 50건일 때 향상도는 얼마입니까?
신뢰도는 50을 200으로 나눈 0.25이고, B의 전체 구매 비율은 100을 1000으로 나눈 0.1입니다. 향상도는 0.25를 0.1로 나눠 2.5입니다.
문제 8. 연관분석을 쓰기에 가장 알맞은 업무는 무엇입니까?
연관분석은 함께 일어나는 항목을 찾아 교차 판매나 추천에 쓰는 데 알맞습니다. 매출 예측은 회귀, 이탈 확률은 분류, 계절 분해는 시계열 분석의 몫입니다.
문제 9. 3과목 전체를 돌아볼 때 목표변수 없이 쓰는 기법으로만 짝지은 것은?
주성분분석, 군집분석, 연관분석은 목표변수 없이 자료의 구조를 찾는 비지도학습입니다. 회귀, 나무, 신경망, 앙상블은 목표변수가 있는 지도학습입니다.
문제 10. 연관분석에 관한 진술로 옳지 않은 것은?
신뢰도는 조건절이 분모라 방향에 따라 달라집니다. 방향과 상관없이 같은 것은 지지도와 향상도입니다. 나머지 셋은 옳은 진술입니다.