본문 바로가기
공부/R & Python

13-1. 군집분석-군집분석과 유사성척도

by 드인 2020. 3. 5.

13. 군집분석

13-1. 군집분석과 유사성척도


1) 군집분석

- 군집분석은 비지도학습(Unsupervised Learning) : 속성변수들의 특징으로 그룹화

- 군집분석(cluster analysis)이란, 사한 속성을 가진 객체들을 군집(cluster)으로 나누는(묶어주는) 데이터마이닝 기법

- 예제 : 고객들의 구매패턴을 반영하는 속성들에 관한 데이터가 수집된다고 할 때

=> 군집분석을 통해 유사한 구매패턴을 보이는 고객들을 군집화하고 판매전략을 도출

2) 군집분석 종류

- 군집분석의 방법은 (1) 계층적 방법과 (2) 비계층적 방법으로 구분


군집분석

- 유사성척도의 계산-


1) 유사성 척도

- 객체 간의 유사성 정도를 정량적으로 나타내기 위해서 척도가 필요

- 거리(distance) 척도

거리가 가까울수록 유사성이 크다. 거리가 멀수록 유사성이 적어짐

 

- 상관계수척도

객체간 상관계수가 클수록 두 객체의 유사성이 커짐

 

2) 거리척도

3) 유클리디안 거리

- 거리(distance) 계산 함수 : dist(데이터, method= , )

m1 <- matrix(
  c(150, 50, 130, 55, 80, 80, 100, 85, 95, 91),
  nrow = 5,
  ncol = 2,
  byrow = TRUE)

데이터 생성 (m1, 5x2 행렬)

 

m1<-as.data.frame(m1)

m1을 data frame으로 저장

 

D1 <- dist(m1)    default가 유클리디안 거리
D1

 

- 거리계산 옵션

help("dist")

 

4) 그 외 거리 척도

- 민코프스키 거리(Minkowski distance)

- 유클리디안 거리의 일반화된 방법 (m=2 일 때는 유클리디안 거리와 동일)

- 마할라노비스 거리(Mahalanobis distance)

- 변수 간의 상관 관계가 존재할 때 사용

 

- 민코프스키 거리(Minkowski distance)

 : dist(data(or matrix), method="minkowski", p=3)

D2<- dist(m1, method="minkowski", p=3) 
D2

민코프스키 계산식에서 p=2이면 유클리디안거리와 동일

 

5) 상관계수를 척도로 사용

- 또 다른 유사성 척도로 객체 간의 상관계수를 사용

- 상관계수가 클수록 두 객체의 유사성이 크다고 추정

 

- 객체 i와 객체 j 간의 표본상관계수는 다음과 같이 정의

- 상관계수측정(cor)

m2 <- matrix(
  c(20, 6, 14, 30, 7, 15, 46, 4, 2),
  nrow = 3,
  ncol = 3,
  byrow = TRUE)

데이터 생성 ( 3x3 matrix )

 

cor(m2[1,],m2[2,]) 

cor(m2[1,],m2[3,])

상관계수 측정

 

객체1(obs1)과 객체2의 유사성이

객체1(obs1)과 객체3간의 유사성보다 크다 (0.9674 > 0.7984)