차원 축소

복잡한 데이터의 패턴을 파악하고 시각화하는 차원축소를 알아봅니다


수강중

10. MDS 실습

실습1

사용할 데이터: eurodist

  • 유럽의 주요 도시들 간의 거리 데이터
  • 목표: 거리를 이용해 유럽 지도 복원하기

cmdscale을 통해 메트릭 MDS 시행

metric = cmdscale(eurodist)
plot(metric, type = 'n')
text(metric, rownames(metric))

isoMDS을 통해 넌메트릭 MDS 시행

library(MASS)
nonm = isoMDS(eurodist)
plot(nonm$points, type = 'n')
text(nonm$points, rownames(nonm$points))
initial  value 7.505733 
final  value 7.505688 
converged
  • 가로, 세로 축의 숫자는 크게 신경쓰지 않아도 됨
  • 그래프의 방향도 중요하지 않음

실습2

사용할 데이터: USArrests

  • 미국 주들 간의 범죄 비율 데이터
  • 목표: 범죄 간 차이를 이용해 주들 간 범죄 특성의 유사성 계산하기

데이터 확인

head(USArrests)
           Murder Assault UrbanPop Rape
Alabama    13.2   236     58       21.2
Alaska     10.0   263     48       44.5
Arizona     8.1   294     80       31.0
Arkansas    8.8   190     50       19.5
California  9.0   276     91       40.6
Colorado    7.9   204     78       38.7
  • 주들 간의 범죄 특성의 유사성을 계산할 수 있음

거리 구하기

arrest.dist = dist(USArrests)
arrest.dist
                  Alabama     Alaska    Arizona   Arkansas California
Alaska          37.177009                                            
Arizona         63.008333  46.592489                                 
Arkansas        46.928137  77.197409 108.851918                      
California      55.524769  45.102217  23.194180  97.582017           
  • 주들 간의 거리를 구해줌
  • 숫자가 클수록 각 범죄간 차이가 큼

cmdscale을 통해 메트릭 MDS 시행

arr.mds = cmdscale(arrest.dist)
plot(arr.mds, type = 'n')
text(arr.mds, rownames(arr.mds))
  • 주들의 좌표가 나옴
  • 범죄 수치가 비슷할수록 주들이 가까이 있음
  • 우측 하단에 범죄가 많고 도시 인구가 많은 주들이 위치