일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- pytorch
- SVM 이란
- 데이터 전처리
- fast r-cnn
- EfficientNet
- 논문분석
- CNN
- pytorch c++
- cs231n lecture5
- yolo
- svdd
- CS231n
- support vector machine 리뷰
- SVM margin
- DeepLearning
- self-supervision
- 서포트벡터머신이란
- SVM hard margin
- darknet
- Computer Vision
- libtorch
- RCNN
- Object Detection
- Deep Learning
- Faster R-CNN
- computervision
- TCP
- pytorch project
- cnn 역사
- yolov3
- Today
- Total
아롱이 탐험대
[Dimensionality Reduction] Unsupervised Method (Linear embedding) 2: Multi-dimensional scaling (MDS) 본문
[Dimensionality Reduction] Unsupervised Method (Linear embedding) 2: Multi-dimensional scaling (MDS)
ys_cs17 2022. 8. 12. 13:31본 포스트는 고려대학교 산업경영공학부 강필성 교수님의 Business Analytics 강의를 정리한 내용입니다.

MDS의 목적은 D차원 공간 상에 객체들이 존재할 때, 이 객체들의 distance가 저차원에서도 최대한 많이 보존되도록 하는 축을 찾는 것이다.
MDS에서 데이터들의 특징은 개별적인 객체들의 거리이고, 이 거리들을 보존하는 것이 최종 목표이다.
PCA vs MDS
1. Data
PCA는 다차원에 존재하는 N개의 object가 데이터이다. (N×D)
MDS는 해당하는 객체들 사이의 유사도 또는 비 유사도를 측정할 수 있는 지표가 데이터이고, 이는 N×N metrix로 구성된다.
2. Purpose
PCA는 원 데이터의 분산을 최대한 보존하는 bases를 찾는 것에 목적을 둔다.
MDS는 실질적인 객체들의 좌표 시스템을 찾는다. 이 좌표 시스템은 객체들 사이의 거리 정보를 보존해야 한다.
3. Output
PCA는 d개의 bases, d개의 eigenvalue이다.
MDS는 X∈Rd 인 각 object의 좌표가 output이다.
PCA에 비해 MDS는 cover 해야 하는 범위가 더 넓다. D 차원에서 좌표로 표현된 X라는 데이터는 X를 통해 d metrix를 만드는 것은 쉽지만, 반대로 d로부터 X를 만드는 것은 다차원 척도 법을 쓰지 않는 이상 만들 수 있는 방법은 없다.
이를 예로 설명하자면 사과, 포도, 바나나가 있을 때, 이들 간 유사도는 다음과 같이 정의된다고 가정하자.
사과 포도 바나나
사과 | 1 | 0.6 | 0.4 |
포도 | 0.6 | 1 | 0.5 |
바나나 | 0.4 | 0.5 | 1 |
위 테이블과 같이 행렬은 N×N으로 정의가 되고, 같은 객체들끼리는 1인 것과, 대칭 행렬인 모습을 볼 수 있다.
만약 여기서 사과에 대한 데이터를 10차원으로 확장하라고 하면 그것은 불가능하다.
이를 통해 알 수 있는 사실은 MDS가 cover 할 수 있는 범위가 더 넓다는 것이고, 이는 PCA를 적용할 수 있는 데이터는 MDS를 적용할 수 있지만, MDS를 적용할 수 있는 모든 데이터는 PCA를 적용할 수 없다는 사실을 알 수 있다.
MDS Procedure
Step 1. Construct Proximity / Distance Matrix
만약 object에 대한 coordinate가 존재할 때, 그들의 거리 또는 유사도를 계산할 수 있다. 거리는 다음과 같은 조건을 따른다.
dij≥0dii=0dij=djidij≤dik+djk
- distance는 0과 같거나 커야 한다.
- 같은 객체들의 distance는 0이어야 한다.
- 대칭 행렬을 만족해야 한다.
- 삼각 부등식을 만족해야 한다. 여기서 k는 i와 j 사이에 있어야 한다.
distance는 Euclidean, Manhattan 등 본인이 원하는 distance method를 사용해도 되고, Similarity는 correlation matrix, jaccard 등 많이 알려진 유사도 방법들을 사용하면 된다.


우리는 d 차원에 n개의 x로 구성된 d×n shape을 같은 X를 각 object 별 유사도 / distance 지표를 갖는 n×n 크기의 행렬 D로 만드는 것이 목적이다.
이를 위해 d2rs로 부터 xr과 xs를 찾아야 한다.
Step 2. Extract the coordinates that preserve the distance information
Step 2는 distance information을 보존하는 coordinate system을 찾는 것이 목표이다.
Distance matrix D의 각 element는 다음 식과 같이 표현된다.
d2rs=(xr−xs)T(xr−xs)
x로 부터 스칼라 값인 d2rs를 구한다.
우리가 현재 가지고 있는 데이터의 구조는 D이다. (n×n) 이를 통해 X라는 (d×n) matrix를 찾고 싶은데, 이를 바로 찾기는 힘들어서 B라는 inner product matrix를 먼저 찾을 것이다. (n×n)
B matrix는 다음과 같이 정의 된다.
[B]rs=brs=xrTxs
이는 xr 과 xs의 내적 값이다. (inner matrix)
계산에 앞서, 우리는 연산의 편의성을 위해 2가지 가정을 할 것이다.
n∑r=1xri=0, (i=1,2,…,p)d2rs=xrTxr+xsTxs−2xrTxs
(5)는 모든 변수는 centering을 진행하였기 때문에, 평균을 0으로 둔다.
(6)은 d2rs=(xr−xs)T(xr−xs)를 풀어 쓴 식이다.
MDS의 수식을 설명하기 위해 몇 가지 정리가 필요하다.
d2rs=(xr−xs)T(xr−xs)
위 distance 수식에 r에 대한 summataion을 진행하면 다음과 같이 된다.
1nn∑r=1d2rs=1n∑r=1nxTrxr+1nn∑r=1xTsxs−2nn∑r=1xTrxs=1nn∑r=1xTrxr+xTsxs
(6)을 통해 distance의 평균을 term 2와 같이 전개한 것을 확인할 수 있고, term 2에 xTsxs는 r과는 상관이 없어 n×xTrxr가 된다. 그리고 term 2의 마지막 식은 (5)로 인해 0이 된다.
xTsxs=1nn∑r=1d2rs+1n∑r=1nxTrxr
수식을 다시 쓰면 위와 같이 정리할 수 있다.
distance 행렬을 s에 대해 summation을 진행하면 다음과 같이 쓸 수 있다.
1nn∑s=1d2rs=1n∑s=1nxTrxr+1nn∑s=1xTsxs−2nn∑s=1xTrxs=xTrxr+1nn∑s=1xTsxs
(7)과 마찬가지로 정리하면 아래와 같은 식을 얻을 수 있다.
xTrxr=1nn∑s=1d2rs−1n∑s=1nxTsxs
이번에는 r과 s에 대해 summation을 진행해보자.
1n2n∑r=1n∑s=1d2rs=1n2∑r=1nn∑s=1xrTxr+1n2n∑r=1n∑s=1xsTxs−2n2n∑r=1n∑s=1xrTxs=1nn∑r=1xrTxr+1nn∑s=1xsTxs=2nn∑r=1xrTxr
위 식을 정리하면 다음과 같다.
2nn∑r=1xrTxr=1n2n∑r=1n∑s=1d2rs
위에서 정리한 식을 활용하여 distance matrix로부터 inner product matrix B를 정의할 수 있다.
brs=xrTxs=−12(d2rs−xrTxr−xsTxs)=−12(d2rs−1nn∑s=1d2rs+1nn∑s=1xsTxs−1nn∑r=1d2rs+1nn∑r=1xrTxr)=−12(d2rs−1nn∑s=1d2rs−1nn∑r=1d2rs+1n2n∑r=1n∑s=1d2rs)=ars−ar.−a.s+a..where ars=−12d2rs, ar.=1n∑sars, a.s=1n∑rars, a..=1n2∑r∑sars
(10)에서 (11)은 (6)을 이용하여 변환한다.
(11)에서 (12)는 (7), (8)에서 구한 수식을 대입한다.
(12)에서 (13)은 (9)를 이용하여 구한다.
이를 통해 distance matrix로부터 inner product matrix인 B를 distance의 선형 결합을 통해 만들 수 있다.
[Ars=ars] B=HAH H=I−1n11T
앞 연산들을 통해 위 수식과 같이 B matrix에 대한 정의를 할 수 있다.
B로부터 coordinate matrix인 X를 구하기 위해 아래와 같은 연산을 진행한다.
B=XXT rank(B)=rank(XXT)=rank(X)=p
X가 n×p 행렬이고, p<n 일 때, B의 rank는 p가 된다.
또한 B는 대칭 행렬이고, postive semi-definite를 만족하며, rank가 p이기 때문에, p개의 non-negative한 eigen value와 n−p개의 zero eigenvalue를 갖게 된다.
이를 표현하면 다음과 같다.
B=VΛVT, Λ=diag(λ1,λ2,…,λn), V=[v1,v2,…,vn]
n−p개의 zero eigenvalue를 제외하고 아래와 같이 다시 쓸 수 있다.
B1=V1Λ1VT1, Λ1=diag(λ1,λ2,…,λp), V1=[v1,v2,…,vp]
B1=XXT인 것을 활용하여 아래와 같이 X를 구할 수 있다.
X=V1Λ112