스케일링(scaling): 데이터의 범위를 늘리거나 줄이는 방식으로 여러 변수들이 같은 스케일에 오도록 하는 것
비지도학습에 있어 데이터를 적절히 스케일링해야 하는 경우가 종종 있습니다.
# K-Means Clustering 에서 Scaling 유무에 따른 결과 비교
[결과 1] Scaling 없이 raw data로 Clustering
[결과 2] Scaling(표준화)된 data로 Clustering
위의 두 결과 모두 loan_data를 4개의 Cluster로 분류한 결과입니다.
Scaling을 하지 않은 [결과 1]에서 Cluster에 속한 data 개수를 나타내는 'size'가 고르지 않습니다.
여러 Feature들 가운데 그 값이 큰 'annual_inc', 'revol_bal'의 값이 분류에 큰 영향을 준 것으로 보입니다.
Scaling(z-score로 변환)을 거친 [결과 2]에서는 'size'가 네 개의 Cluster에 비교적 고르게 분포되어 있습니다.
또한 'annual_inc', 'revol_bal'을 제외한 다른 feature의 상대적인 크기도 분류에 영향을 주었을 거라 예상됩니다. ( Dominant Feature들의 Cluster별 차이가 [결과 1]에서보다 줄었습니다)
# 주성분 분석 (PCA) 에서의 스케일링
위에서 사용한 Loan Data처럼 변수들의 스케일 편차가 큰 데이터를 이용해 PCA를 할 때, 스케일링 여부에 따라 결과가 매우 다르게 나옵니다. 이는 R에서는 prcomp()함수 안에서 scale=T, center=T 로 구현할 수 있습니다.
스케일링한 데이터로 PCA를 진행하는 것은 Covariance Matrix 대신 Correlation Matrix를 사용하여 고유값과 고유벡터를 구하는 것과 같습니다.
아래 결과를 보면 스케일링 loan data에서는 스케일링 여부에 따라 계수들이 많이 달라지는 것을 알 수 있습니다.
[결과 3] 스케일링 여부에 따른 loan_data에서의 PCA
전체 분산 중 주어진 주성분들이 표현하는 분산의 비율인 Cumulative Proportion 부분을 비교해보면 그 차이는 더 큽니다. 스케일링을 거치지 않았을 때에는 스케일이 큰 변수의 영향을 절대적으로 많이 받을 것이므로 2개의 주성분만으로도 대부분의 분산(96%)을 설명할 수 있는 반면, scaling을 거친 후에는 2개의 주성분이 전체 분산의 55%만을 설명할 수 있습니다.
두 결과 중 무엇이 좋다고 콕 집어 말할 수는 없습니다. 데이터의 형태, 분석의 방법 및 목적 등 여러 요소들을 종합적으로 고려하여 scaling 여부를 결정하는 것이 좋습니다.
# Categorical Data
범주형 데이터를 다룰 때에는 보통 원핫 인코딩을 사용하거나, 더미변수를 생성하거나 하는 과정을 거쳐 이산적인 수치형 변수로 변환하여 사용합니다.
데이터에 이러한 변수들과 연속형 변수들이 섞여 있다면, 비슷한 스케일이 되도록 변수의 크기 조정이 필요할 수 있습니다. 대표적인 방법으로는 고워 거리(Gower's Distance)가 있습니다.
Z-score나 minmax-scaler처럼 변수 자체를 표준화/정규화하는 것은 아니지만, 7장이 Clustering에 관한 내용인 만큼 Clustering에 필요한 Distance Matrix를 만드는 방법을 소개합니다.
# Gower's Distance
고워 거리의 기본 아이디어는 각 변수의 데이터 유형에 따라 거리 지표를 다르게 적용하는 것입니다.
수치형, 순서형 데이터에서 두 레코드 간의 거리는 맨하탄 거리로 계산합니다.
범주형 변수의 경우 두 레코드 사이의 범주가 다르면 1, 같으면 0으로 계산합니다.
다음에는 이하의 과정을 거칩니다.
1. 모든 variable에 대해 거리 d를 계산합니다.
각 d의 범위가 0~1이 되도록 스케일을 조정합니다.
Distance Matrix를 만듭니다 : 가중합을 하거나, 평균을 취하는 등 여러 방법이 있습니다.
댓글 영역