데이터 준비

머신러닝을 위한 데이터 준비 및 특성 추출 과정에서는 일반적인 데이터 준비를 다루지만 이 과정에서는 클러스터링과 관련된 준비를 다룹니다.

클러스터링에서는 두 예의 모든 특성 데이터를 숫자 값으로 결합하여 두 예시 간의 유사성을 계산합니다. 특성 데이터를 결합하려면 데이터의 크기가 동일해야 합니다. 이 섹션에서는 분위수 정규화, 변환, 생성을 살펴보고 데이터 분포를 변환하는 데 분위수가 가장 적합한 선택인 이유를 설명합니다. 기본 선택을 하면 데이터 배포를 검사하지 않고도 데이터를 변환할 수 있습니다.

데이터 정규화

데이터를 정규화하여 여러 특성의 데이터를 동일한 배율로 변환할 수 있습니다. 특히 정규화는 가장 일반적인 데이터 분포인 가우시안 분포를 처리하기에 적합합니다. 분위수에 비해 정규화는 계산할 데이터가 훨씬 더 적습니다. 다음과 같이 z-점수를 계산하여 데이터를 정규화합니다.

\[x'=(x-\mu)/\sigma\\ \begin{align*} \text{where:}\quad \mu &= \text{mean}\\ \sigma &= \text{standard deviation}\\ \end{align*} \]

정규화 여부에 따른 예시 간의 유사성을 살펴보겠습니다. 그림 1에서 빨간색이 노란색보다 파란색과 더 비슷한 것으로 확인됩니다. 하지만 x축과 y축의 특성은 동일하지 않습니다. 따라서 관찰된 유사성은 확장되지 않은 데이터의 아티팩트일 수 있습니다. z-점수를 사용하여 정규화한 후 모든 특성의 크기는 동일합니다. 이제 빨간색이 노란색과 더 비슷하다는 것을 알게 되었습니다. 따라서 데이터를 정규화한 후에 유사성을 더 정확하게 계산할 수 있습니다.

정규화 전후의 특성 데이터를 비교하는 그래프 2개
그림 1: 정규화 전후의 특성 데이터 비교

요약하면 다음 중 하나가 참일 때 정규화를 적용합니다.

  • 데이터에 가우시안 분포가 있습니다.
  • 데이터 세트에 분위수를 만들 만큼 충분한 데이터가 없습니다.

로그 변환 사용

때로 데이터 세트는 저사양에 데이터를 제공하는 전원법 분포를 준수합니다. 그림 2에서 빨간색은 파란색보다 노란색에 더 가깝습니다.

대부분의 데이터가 낮은 곳에 위치한 막대 그래프
그림 2: 전력법 배포.

로그 변환을 사용하여 전력회사 분포를 처리합니다. 그림 3에서 로그 변환은 더 매끄러운 분포를 그러면 빨간색이 노란색보다 파란색에 더 가깝습니다.

정규 (가우시안) 분포를 보여주는 그래프
그림 3: 노멀 (가우시안) 분포

분위수 사용

정규화와 로그 변환은 특정 데이터 분포를 해결합니다. 데이터가 가우스 또는 전력법 분포를 따르지 않는 경우에는 어떻게 될까요? 데이터 배포에 적용되는 일반적인 접근 방식이 있나요?

이 배포를 사전 처리해 보겠습니다.

사전 처리 전의 데이터 분포를 보여주는 그래프
그림 4: 사전 처리 전에 분류되지 않은 분포

직관적으로 두 예시 사이에 몇 가지 예만 있으면 두 예시가 값과 관계없이 비슷합니다. 반대로 두 예시 사이에 많은 예가 있으면 두 예가 덜 유사합니다. 따라서 두 예의 예시 수가 증가하면 두 예의 유사성이 감소합니다.

데이터 정규화는 단순하게 데이터 분포를 재현합니다. 정규화는 선형 변환입니다. 아래 그림 5와 같이 로그 변환을 적용해도 유사성의 직관이 반영되지 않습니다.

로그 변환 후의 데이터 분포를 보여주는 그래프
그림 5: 로그 변환 이후의 분포

대신 각 간격에 동일한 수의 예시가 있는 간격으로 데이터를 분할합니다. 이러한 간격 경계를 분위수라고 합니다.

다음 단계에 따라 데이터를 분위수로 변환합니다.

  1. 간격 수를 결정합니다.
  2. 각 간격에 동일한 수의 예시가 있도록 간격을 정의합니다.
  3. 각 예시를 해당하는 간격의 색인으로 바꿉니다.
  4. 색인 값을 [0,1]로 확장하여 색인을 다른 특성 데이터와 같은 범위로 가져옵니다.
분위수로 변환한 후의 데이터를 보여주는 그래프 이 선은 20개의 간격을 나타냅니다.]
그림 6: 분위수로 변환한 후의 분포

데이터를 분위수로 변환한 후 두 예시 간 유사성은 두 예시 간의 예시 수에 반비례합니다. 또는 수학적으로, 'x'는 데이터 세트의 예 중 하나입니다.

  • \(sim(A,B) \approx 1 − | \text{prob}[x > A] − \text{prob}[x > B] |\)
  • \(sim(A,B) \approx 1 − | \text{quantile}(A) − \text{quantile}(B) |\)

분위수는 데이터를 변환하는 데 가장 좋은 기본 옵션입니다. 그러나 기본 데이터 분포를 신뢰할 수 있는 분위수로 만들려면 많은 데이터가 필요합니다. 일반적으로 분위수를 만들려면 \(n\) 예시가 \(10n\) 개 이상 있어야 합니다. 데이터가 충분하지 않은 경우 정규화를 유지하세요.

이해도 확인

다음 질문의 경우 분위수를 생성하기에 충분한 데이터가 있다고 가정합니다.

질문 1

데이터 분포 3개를 표시하는 플롯
이 데이터 배포를 어떻게 처리할까요?
분위수를 만듭니다.
정답입니다. 분포가 표준 데이터 분포와 일치하지 않으므로 분위수 생성으로 돌아가야 합니다.
정규화.
일반적으로 다음과 같은 경우에 데이터를 정규화합니다.
  • 데이터 분포는 가우시안입니다.
  • 데이터가 무엇을 나타내는지 알면 데이터를 비선형으로 변환하면 안 된다는 것을 알 수 있습니다. 따라서 분위수를 방지하고 대신 정규화를 선택합니다.
두 경우 모두 적용되지 않습니다. 데이터 분포가 대칭이 아니므로 가우시안이 아닙니다. 실제로 이러한 값이 무엇을 나타내는지는 알지 못합니다.
로그 변환입니다.
완벽한 파워 법 분포가 아니므로 최선의 선택은 아닙니다.

질문 2

데이터 분포 3개를 표시하는 플롯
이 데이터 배포를 어떻게 처리할까요?
정규화.
정답입니다. 가우시안 분포입니다.
분위수를 만듭니다.
정답이 아닙니다. 가우시안 분포이므로 선호되는 변환은 정규화입니다.
로그 변환입니다.
정답이 아닙니다. 전력회사 배포에만 로그 변환을 적용합니다.

데이터 누락

데이터 세트에 특정 특성의 값이 누락된 예시가 있지만 그러한 예시가 드물게 발생하는 경우 예시를 삭제할 수 있습니다. 이러한 예가 자주 발생하는 경우 이 특성을 아예 삭제하거나 머신러닝 모델을 사용하여 다른 예의 결측값을 예측할 수 있습니다. 예를 들어 기존 특성 데이터에 대해 학습된 회귀 모델을 사용하여 누락된 숫자 데이터를 추론할 수 있습니다.