유사한 속성들을 갖는 데이터를 일정한 수의 군집으로 그룹핑하는 비지도 학습인Clustering!
어떤 사건이 얼마나 자주 함께 발생하는지, 서로 얼마나 연관되어 있는지를 표시하는 ARL!
조금은 어려울 수 있어도 차근차근 알아가 볼까요!
Everything about Association Rule
Clustering(군집분석)이란?
유사한 속성들을 갖는 데이터를 일정한 수의 군집으로 그룹핑하는 비지도 학습입니다.
지금까지 다루었던 머신러닝 모델(선형회귀, 다중선형회귀, 결정트리)는 특정 독립변수에 대한 종속변수(레이블, 정답)이 있는 경우입니다.
하지만 클러스터링의 경우는 정답이 없는 경우에 사용하며 속성별로 데이터를 나누게 됩니다.
때문에 몇개의 군집으로 나누어질지는 분석하는 입장에서 알 수 없다는 특징을 가집니다.
Clustering의 목표
좋은 군집화란 동일한 군집에 속한 데이터들 서로 유사하게 그룹핑하는 것입니다.
다른 의미로는 다른 군집에 속한 데이터들이 서로 다를수록 좋다는 뜻이 됩니다.
군집화 종류
분할적 군집화
특정 기준에 의해 동시에, 각 데이터들을 미리 정해진 개수의 군집 중 하나로 할당 시키는 군집화 방법입니다.
계층적 군집화
가까이에 위치한 (유사한) 데이터들끼리 계층적으로 결합(agglomerative) 시켜 나가는 방식으로 데이터들이 결합되는 과정을 나타내는 dendrogram을 생성합니다. 이 방법은 사전에 군집 개수를 지정하지 않는 방법으로 결정트리의 가지치기와 유사하며 원소 단위부터 데이터를 결합시킵니다.
K-평균 군집화(K-Means Clustering)
K-평균 군집화란 대표적인 분할적 군집화 알고리즘으로 사전에 군집의 수(K)를 지정합니다.
각 군집은 하나의 중심점 (centroid, center)이 존재하고 각 데이터들을 가장 가까운 중심점에 해당하는 군집에 할당하는 방식입니다.
K-평균 군집화 알고리즘은 다음과 같습니다.
1.구하고자 하는 군집의 수(K) 설정2.초기 데이터의 분포 상태에서 K개의 중심점을 임의로 지정3.각 데이터들로부터 K개의 각 중심점 까지의 거리를 계산4.각 데이터들을 가장 가까운 중심점이 속한 군집에 할당5.K개의 중심점을 다시 계산하여 갱신 ( 중심점은 각 군집의 데이터들의 평균값)6.중심점이 더 이상 변하지 않을 때까지 3, 4, 5 과정을 반복
K(군집의 수)를 3으로 지정하고 임의의 점 c1, c2, c3를 지정합니다.
그 이후 모든 원소에 대해서 c1, c2, c3까지의 거리 중 가장 가까운 우너소에 군집을 할당합니다.
이 과정을 반복하고 나눠진 그룹 안에서 평균에 해당하는 점을 찾습니다.
모든 점들로부터의 거리(오차)의 합이 가장 작아지는 점을 찾고 모든 점에 대해 반복하면서 더이상 옮겨지지 않는 c1, c2, c3를 찾는 것이 최종 군집이 됩니다.
초기 중심점의 중요성
초기에 임의로 정해지는 k개의 중심점에 따라서 결과가 달라질 수 있습니다.
군집화 고려사항
군집화는 거리(유사도) 계산 방식을 사용합니다.
Euclidean, Manhattan, Pearson correlation, Mahalanobis .... 등 다양한 거리 계산 방식이 존재합니다.
사용하는 거리 계산 방식에 따라 군집화 결과가 달라질 수 있습니다.
군집화 결과의 평가는 객관적 평가 지표에 따릅니다.
Sum of Squared Error(SSE), Silhouette coefficient ....등등
거리 (유사도) 계산 방식
일반적으로 사용하는 거리 계산 방식으로는 Euclidean Distance를 사용합니다.
군집화 결과의 평가
Sum of Squared Error(SSE)
군집 분석의 기본 목적에 충실한 방법이지만 군집 내의 거리만을 고려한다는 단점이 존재합니다.
Silhouette coefficient
a(i): 데이터 i 로부터 같은 군집 내에 있는 다른 모든 데이터들 사이의 평균 거리:
클러스터 내의 응집이 덜된 정도(a(i)값은 작아질수록 성능향상)
b(i): 데이터 i로부터 가장 가까운 인접 군집 내에 있는 데이터들 사이의 평균 거리 중 가장 작은 값:
클러스터 간의 분리도(b(i) 값은 커질수록 성능향상)
1 에 가까울수록 나쁜 결과이고 1에 가까울수록 좋은 결과
군집 개수(K)의 설정
많은 경우에는 몇 개의 군집이 적정한지를 사전에 알고 있습니다. 하지만 그렇지 않은 경우 평가 지표를 이용하여 최적의 군집 수를 선택하게 되는데 이는 Elbow point에서 결정하게 됩니다.
X축 : 클러스터 개수
Y축 : 클러스터 내 오차제곱합(SSE)
요약
비지도 학습 방법으로서 탐색적 데이터 분석(EDA) 단계에 활용 가능합니다.
군집 내는 최대한 유사하게, 군집 간은 최대한 이질적으로 군집을 구성하는 것이 군집화의 목표입니다.
K-평균 군집화의 경우 분할적 방법으로 사전에 정해높은 군집의 개수대로 군집화를 진행합니다.
한가지 주의 사항으로는 K-평균 군집화는 모든 변수들의 거리를 계산하기 때문에 모든 변수가 수치형 변수인 경우에만 사용이 가능합니다.
Everything about Association Rule
데이터 분석을 공부하는 사람이라면 누구나 한 번 쯤 들어보았을 예시가 있다. 바로, 마트에서 기저귀를 사 가는 사람들은 맥주를 같이 사간다는 예시이다. 이렇게 어떤 사건이 얼마나 자주 함께 발생하는지, 서로 얼마나 연관되어 있는지를 표시하는 것을 Association Rule이라고 한다.
Association Rule의 3가지 척도
Association rule에는 사건이 얼마나 자주 함께 발생하는지를 측정할 수 있는 3가지 척도가 있다. support, confidence, lift가 그것이다.
Support
Support는 전체 경우의 수에서 두 아이템이 같이 나오는 비율을 의미한다. 즉, 다음과 같은 식으로 표현할 수 있다.
support의 계산식
위 식에서 N은 전체 경우의 수, N_x^y는 x와 y가 동시에 일어난 경우의 수를 의미한다.
예를 들어, 우리가 차와 라떼를 주문한 고객이 머핀을 주문할 support 값을 구하고 싶다고 하자.
그러면 우리는 다음과 같은 식을 통해 support를 계산할 수 있다.
즉, 차, 라떼, 머핀을 동시에 구매한 경우의 수를 전체 경우의 수로 나눈 값이 support가 된다.
{tea, latte} -> {muffin}의 support 계산식
여기서 우리가 눈치챌 수 있는 것은 support는 x와 y의 순서를 바꾸어도 결과가 똑같이 나온다는 것이다.
즉, 머핀을 주문한 고객이 차와 라떼를 주문할 support 값도 위 식과 똑같이 계산할 수 있다.
Support 값은 높으면 높을수록 관계가 더 의미있다고 할 수 있다.
Confidence
Confidence는 X가 나온 경우 중 X와 Y가 함께 나올 비율을 의미한다.
즉, 구매의 경우를 예로 들자면 X를 산 사람 중에 Y도 같이 사는 사람의 비율을 말한다.
이는 다음과 같은 식으로 표현할 수 있다.
confidence의 계산식
위 식에서 N_x는 x가 나온 경우의 수, N_x^y는 x와 y가 동시에 일어난 경우의 수를 의미한다.
위에서 든 예시와 똑같이 , 우리가 차와 라떼를 주문한 고객이 머핀을 주문할 confidence 값을 구하고 싶다고 하자.
그러면 우리는 다음과 같은 식을 통해 confidence를 계산할 수 있다.
{tea, latte} -> {muffin}의 confidence 계산식
Confidence 값은 1에 가까울수록 관계가 더 의미있다고 할 수 있다.
LiftLift는 X와 Y가 같이 나오는 비율을 X가 나올 비율과 Y가 나올 비율의 곱으로 나눈 값이다.
즉, 다음과 같은 식으로 표현할 수 있다.
Lift
Lift는 X와 Y가 같이 나오는 비율을 X가 나올 비율과 Y가 나올 비율의 곱으로 나눈 값이다.
즉, 다음과 같은 식으로 표현할 수 있다.
lift 계산식
또 다시 우리가 차와 라떼를 주문한 고객이 머핀을 주문할 lift 값을 구하고 싶다고 하자.
그러면 우리는 다음과 같은 식을 통해 lift를 계산할 수 있다.
{tea, latte} -> {muffin}의 lift 계산식
Lift 값은 1보다 높을 때 positively correlation, 1일 때 independent, 1 a미만일 때 negatively correlation이라고 여긴다.
그렇기 때문에 lift 값을 1보다 높은 값을 가질 때 관계가 의미있다고 할 수 있다.
Everything about Apriori
Apriori 알고리즘 개요
Apriori 알고리즘은 1993년 애가왈(Agarwal)과 스리칸트(Srikant)에 의해 제안됐다.
이 알고리즘은 트랜잭션 데이터를 다루기 위해 만들어졌으며, 각 트랜잭션은 아이템들의 집합이나 아이템 세트이다.
요약하자면, 이 알고리즘은 데이터 세트 내에서 최소 N번의 트랜잭션이 일어난 아이템 집합들을 발견한다.
연관규칙분석(Apriori 알고리즘)
비지도 학습에 해당하는 연관규칙 분석에 Apriori 알고리즘을 소개 하도록 하겠다!
마케팅에서는 고객의 장바구니에 들어 있는 품목간의 관계를 알아본다는 의미에서 장바구니분석(market basket analysis)라고도 부른다.
이는 다음의 4개의 방법으로 활용 되고 있다.
효율적인 상품 진열
패키지 상품 개발
교차판매 전략
기획상품의 결정
연관규칙분석의 대표적 적용 사례는 다음과 같다.
백화점, 호텔 등 서비스업에서 고객들의 특정 서비스를 받은 후 다음에 어떤 서비스를 원하는지 미리 알 수 있음.
신용카드사나 은행에서는 고객들의 기존 금융서비스 내역으로부터 대출과 같은 특정한 서비스를 받을 가능성이 높은 고객을 찾을 수 있음
의료보험이나 손해보험에서는 고객의 보험금 청구가 기존의 정상적인 청구와 다른 패턴을 보이는 경우 보험사기의 징조로 간주하여 추가적인 조사를 할 수 있음.
인터넷 쇼핑몰에서 상품 추천
텍스트마이닝에서 연관 키워드 또는 유사 문서 추출
웹사이트의 접속자의 페이지간의 이동
연관규칙분석에서 측도
우선 품목 X, Y가 있다고 하자. 그럼 이는 X => Y에 대한 측도를 알 수 있다.
측도는 지지도 (Supprot) / 신뢰도 (Confidence) / 향상도 (Lift) 가 있다.
지지도 (Support): 전체 거래에서 X, Y를 동시에 포함한 거래 비율
P(X∩Y) = ( X,Y를 동시에 포함하는 거래수) / (전체 거래수)
신뢰도 (Confidence)(X => Y): X를 구입한 거래 중 Y를 같이 구입한 비율
P(Y|X) = P(X∩ Y) / P(X) = (X,Y를 동시에 포함하는 거래수) / (품목 X를 포함하는 거래수)
향상도 (Lift)(X => Y): X를 구매 했을 때 Y의 구매비율이 그러한 조건이 없는 경우에 비해 얼마나 커지는가를 나타내는 지표
P(Y|X) / P(Y)
연관규칙 분석측도 예시
위 테이블을 통해 구매자 P1~P6의 구매 리스트 A, B에 대한 지지도 / 신뢰도 / 향상도를 알아보도록 하자.
지지도물품 A와 B를 동시에 구매한 구매자 가 몇인가? (P1, P3) = 2총 구매자는 몇인가? (P1 ~ P6) = 6즉, A와B의 지지도는 2/6 = 1/3 = 33.33% 정도가 된다.
신뢰도신뢰도가 다를 수 있기 때문에, 신뢰도(A => B)와 신뢰도(B => A)를 나누어서 구해야 한다.
ai관련 stack이 어렵다고만 느끼시는 분들에게 같은 초심자로써 어떤 마음으로 입문하면 수월히 배워볼 수 있는지, 또한 머신러닝 엔지니어가 된다면 세상에 단 하나뿐인 프로그램을 설계해보는 흥미로운 일을 매일같이 반복할 수 있다는 것을 같이 알아가고 싶습니다! 저는 이 스터디를 다듣고난후 ai의 기본에대한 깊은 이해를 얻고 싶습니다! 어떤 일이든 기본이 제일 중요하다고 생각듭니다 :)