k-means clustering
K-평균 군집화
로이드 알고리즘 vs 엘칸 알고리즘(거리 계산시 삼각 부등식 사용)
순서
엘보우 메소드
실루엣 계수 (보조적인 평가 방법)
데이터: mall customer data: 200명의 쇼핑몰 고객에 대한 정보 데이터
문제: 주어진 고객 데이터를 바탕으로 고객을 세분화, 군집화
전처리
K 값을 찾으려면 sse, 실루엣 계수를 살펴보고 결정
sse, 실루엣 계수들을 이용해 결과를 평가하는 것도 좋지만, 결국은 데이터를 그려보고 해석해야함
t-sne를 이용해 4차원 데이터를 2차원으로 변환
kmeans.labels_ 로 각 데이터에 클래스 번호를 붙인 데이터를 볼 수 있음
이 데이터의 기술 통계를 확인해 각 클러스터의 특징을 살펴본다.
정상 데이터는 다른 비슷한 데이터와 밀도있게 모여있을 것. 반면 이상치 데이터는 밀도가 낮은 공간에 존재 → 하나의 데이터를 고립하도록 어떤 특성과 그것의 분할값을 기준으로 나눔
like Decision Tree..
이상치 데이터는 낮은 수준(depth)의 분할 과정으로도 쉽게 고립시킬 수 있다.
과정
n_estimators = 고립 트리의 수(=서브 데이터셋 수, 이 값이 클수록 안정성과 정확성 향상 but 메모리 사용량도 증가)
max_samples = 서브 데이터셋에 포함될 최대 데이터 포인트의 수
contamination = 전체 데이터셋에서 이상치 데이터가 차지할 비율 (모른다면 'auto'로 설정)
credit card fraud detection 데이터
입력: 거래 관련 데이터(time, amount, v1~v28) 출력: 이상치 여부
time(시계열 데이터)의 경우 주기성을 갖고있음 → 주기함수를 적용하는 것도 좋은 방법이지만, 여기선 추가적인 정보가 부족.
amount는 치우침이 있지만 의미가 있기 때문에 log 스케일링 진행
V 데이터는 pca를 통해 차원 축소된 데이터기 때문에 어떤 의미를 갖는 데이터인지는 알 수 없음
confusion matrix를 통해 결과 확인. TP 값이 커야 잘 한 분류임
쉬운 task는 아니다.. (데이터에서 양성의 비율이 작기 때문에)