데이터가 올바르게 scale이 되어있지 않다면 PCA, K-means, 그리고 다른 여러 Clustering Methods와 같이 비지도학습을 진행하는 경우, 단순히 값이 큰 변수의 영향이 과하게 커지고, 값이 작은 변수는 무시되는 상황이 발생할 우려가 있기 때문에 비지도학습을 진행하는 경우 일반적으로 스케일링을 진행하게 됩니다.
Scaling
- 변수별로 데이터의 스케일이 다르면, 앞서 언급했듯, 머신러닝이 원하는대로 잘 작동하지 않을 가능성이 있습니다.
- 따라서 저희는 데이터의 범위 혹은 분포를 같게 만들어주는 Scaling 작업을 거쳐야합니다.
스케일링 방법 중에 가장 흔하게 사용되는 Normalization과 Standardization에 대해 얘기해보려고 합니다.
Normalization(정규화)
정규화는 다음 공식을 사용하여 값을 변환합니다.
$X' = \frac{X - X_{min}}{X_{max} - X_{min}}$
정규화를 거치면 값들이 0과 1사이의 범위를 가지는 값들로 재조정됩니다.
Standardization(표준화)
표준화는 다음 공식을 사용하여 값을 변환합니다.
$X' = \frac{X - \mu}{\sigma}$
$\mu$는 특정 변수의 평균을 $\sigma$는 특정 변수의 분산을 의미합니다. 위의 공식을 통해 기존의 값들은 표준정규분포를 따르는 값으로 재조정됩니다. 표준화를 거친다고 정규화처럼 값들이 특정 범위 안에 속하도록 조정이 되지는 않습니다.
Categorical Data
범주형 변수를 사용하는 경우, 수치형 변수로 변환 후 사용해주어야합니다. 이 때 주로 사용하게 되는 방법으로는 라벨 인코딩(Label Encoding)과 원핫 인코딩(One-Hot Encoding)이 있습니다.
Label Encoding
라벨 인코딩은 n개의 범주형 변수를 0부터 n-1까지의 값을 갖는 수치형 변수로 변환해주는 방법입니다.
특성 물건에 대한 평가를 반영하는 '평가'라는 변수가 존재한다고 가정할 때, 라벨 인코딩에서는 다음과 같이 값이 변환됩니다.
나쁘다 -> 0 약간 나쁘다 -> 1 그저 그렇다 ->2 약간 좋다 -> 3 좋다 -> 4
이름 | 평가 |
A | 좋다 |
B | 그저 그렇다 |
C | 나쁘다 |
D | 약간 좋다 |
Label Encoding 후
이름 | 평가 |
A | 4 |
B | 2 |
C | 0 |
F | 3 |
순서형 변수의 경우, 위와 같이 순서에 따른 값의 차이가 반영되는게 바람직할 수도 있지만, 순서가 없는 명목형 변수에는 그렇지 않을 수가 있습니다.
또, 라벨 인코딩에는 숫자의 크고 작음이라는 특성이 반영되기 때문에 문제가 발생하기도 합니다. 예를 들어 변환 후 값이 4인 좋다가 2인 그저 그렇다보다 2배 좋은 것은 아니지만, 컴퓨터는 그렇게 해석하게 됩니다.
One-Hot Encoding
원핫 인코딩은 해당하는 값에만 1, 그렇지 않은 값에는 0을 부여해 범주형 변수를 수치형 변수로 변환해주는 방법입니다.
아래의 표를 보시면 이해하는데 도움이 되실 겁니다.
이름 | 평가 |
A | 좋다 |
B | 그저 그렇다 |
C | 나쁘다 |
D | 약간 좋다 |
One-Hot Encoding 후
이름 | 나쁘다 | 약간 나쁘다 | 그저 그렇다 | 약간 좋다 | 좋다 |
A | 0 | 0 | 0 | 0 | 1 |
B | 0 | 0 | 1 | 0 | 0 |
C | 1 | 0 | 0 | 0 | 0 |
D | 0 | 0 | 0 | 1 | 0 |
원핫 인코딩은 앞서 언급한 라벨 인코딩의 문제점들에 대해서는 자유롭지만, 범주형 변수가 많은 경우, 혹은 범주형 변수가 갖는 값이 많은 경우, 변수의 개수가 기하급수적으로 늘어날 수 있다는 문제를 갖습니다. 위의 예시만 봐도, 원래는 한 개 뿐이었던 '평가' 변수가 원핫 인코딩을 거쳐 5개의 변수가 된 것을 확인할 수 있습니다.
Gower's Distance
어떤 데이터셋에 수치형 변수와 범주형 변수가 섞여있는 경우, 비슷한 스케일이 되도록 변수들을 스케일링 할 필요성이 있을 수 있습니다.
이때 사용하는 것이 Gower's Distance입니다.
먼저 수치형 변수, 혹은 라벨 인코딩을 거친 ordered facters의 경우, 맨하탄 거리를 이용하여 거리를 계산합니다.
범주형 변수의 경우, 두 레코드 간의 범주가 다르면, 1 같으면 0으로 거리를 계산합니다.
그 이후 다음 과정을 거칩니다.
- 모든 변수에 대해 거리를 계산합니다.
- 계산된 거리에 대해 정규화를 이용하여 최소값 0, 최대값 1을 가지도록 스케일링 해줍니다.
- 가중평균 혹은 평균을 취하는 방법을 통해 distance matrix을 만듭니다.
참고하면 좋을 글들:
https://medium.com/analytics-vidhya/gowers-distance-899f9c4bd553
Gower’s Distance
One of the most important task while clustering the data is to decide what metric to be used for calculating distance between each data ….
medium.com
Gower's distance(가워 거리)
인간의 경험에 있어서 거리의 개념은 직관적으로 예상할 수 있습니다. 측정기준이라는 용어는 종종 측정을 위한 표준으로 사용되는 반면, 일상 생활에서는 일반적으로 두 지점의 물리적인 가
elecs.tistory.com