TIL-4: Statistics

정규화(Normalizaiton), 표준화(Standardization)

  • 머신러닝과 딥러닝에서 데이터 전처리는 모델의 성능에 결정적인 영향을 미치며, 그 중에서도 정규화와 표준화는 특히 중요한 기법들입니다.
  • 정규화와 표준화는 둘다 데이터의 스케일을 조정하는 방법이다.

정의

  • 정규화(Normalization)는 다양한 크기의 데이터를 특정 범위(보통 0~1)로 조정하는 방법
  • 데이터 $x_i$를 정규화(0~1)된 데이터 $x_{i, normalization}$으로 변환하는 방법:
    $$ x_{i,normalizaiton} = \frac{x_i - x_{min}}{x_{max} - x_{min}}$$
    $x_{max}$ : n개의 데이터 $x_1,..,x_n$ 중 최대값
    $x_{min}$ : n개의 데이터 $x_1,..,x_n$ 중 최소값
  • 표준화(Standardization)는 데이터의 평균이 0, 표준편차가 1이 되도록 조정하는 방법이다.
  • 데이터 $x_i$를 표준화된 데이터 $x_{i, standardization}$으로 변환하는 방법:
    $$x_{i,standardization} = \frac{x_i - \overline{x}}{s}$$
    $\overline{x}$ : n개의 데이터 $x_1,..,x_n$에 대한 평균
    $s$ : n개의 데이터에 대한 표준편차(Standardization)

정규화의 필요성

  • 데이터 간 스케일 일치: 데이터 세트 내에 각 데이터들은 단위스케일이 당연히 다양하다. 그때 크기가 큰 특성이 결과에 더 큰 영향을 미칠 수 있습니다. 예를 들어, 주택 가격을 예측할 때 면적(제곱미터)과 방의 수(정수)가 있으면 면적의 스케일이 훨씬 크기 때문에 이 특성이 결과에 더 큰 영향을 미칠 수 있다.
  • 정규화를 통해 이러한 데이터들을 동일한 범위 (0과 1 사이)로 조정하여 모델이 공정하게 데이터를 학습할 수 있도록 도와줍니다.
  • 학습 속도 향상: 경사 하강법 같은 최적화 알고리즘은 정규화를 통해 특성들이 비슷한 범위에 있을 때 더 빠르게 수렴합니다. 다른 스케일의 데이터는 경사면이 불균형하게 되어 최적점에 도달하는 데 더 오랜 시간이 걸릴 수 있습니다.

표준화의 필요성

  • 평균과 분산의 조정: 표준화는 데이터의 평균 = 0으로, 분산 = 1로 조정합니다. 이는 많은 기계 학습 알고리즘, 특히 가중치를 사용하는 알고리즘(선형 회귀, 로지스틱 회귀, 신경망 등)에서 중요합니다. 평균이 0이 되면 학습 과정에서의 계산이 단순해지고, 분산이 1이 되면 모든 특성이 동일한 중요도를 갖게 됩니다.
  • 이상치 처리: 표준화는 이상치가 있는 데이터에 대해 더 강건하게 작동할 수 있습니다. 이상치가 존재하는 경우, 정규화는 전체 범위가 이상치에 의해 크게 영향을 받을 수 있지만, 표준화는 이상치의 영향을 상대적으로 덜 받습니다.
  • 알고리즘 요구 사항 충족: 많은 머신러닝 알고리즘, 특히 서포트 벡터 머신(SVM)이나 주성분 분석(PCA) 같은 알고리즘은 데이터가 정규 분포를 따를 때 최적의 성능을 보여줍니다. 표준화는 데이터를 정규 분포와 유사하게 만들어 이러한 알고리즘의 성능을 개선할 수 있습니다.

1차원 데이터 분석

분산, 표준편차

  • 둘다 데이터가 평균에서 얼마나 멀리 퍼져있는지를 수치화 한 값이고, 데이터와 같은 scale 혹은 단위로 만든 것이 표준편자, 그것의 제곱으로 표현된 것이 분산임.
분산 (Variance, $\sigma$)
  • 분산은 데이터가 평균에서 얼마나 멀리 떨어져 있는지를 수치화한 값.
  • 즉, 데이터의 흩어진 정도를 의미
  • 분산이 크면 데이터 포인트들이 평균에서 멀리 떨어져 있음을,
  • 분산이 작으면 평균 근처에 데이터가 모여 있음을 의미함.
  • 계산 방법: 각 데이터와 평균의 차이를 제곱한 후, 이 값들의 평균을 계산
    $\sigma = \frac{\sum_{i=1}^n (x_i - \overline{x})^2}{n}$
    $x_i$: $i$번째 데이터, $\overline{x}$는 데이터의 평균, $𝑛$은 데이터 수
표준편차(Standard deviation, $s$)
  • 표준편차는 분산의 제곱근으로, 데이터가 평균에서 얼마나 멀리 퍼져 있는지를 나타내는 척도입니다. 분산과 마찬가지로 표준편차가 클수록 데이터가 평균에서 멀리 퍼져 있음을, 작을수록 평균에 가깝게 모여 있음을 나타냅니다.
  • 계산 방법: $s = \sqrt{\sigma}$

2차원 데이터 분석

공분산, 상관계수

공분산 (Covariance)
  • 분산 1차원 데이터에 대한 값이라면, 공분산은 2차원 데이터 $x$와 $y$의 관계를 나타내며, 이 두 변수가 함께 변하는 경향을 수치화 한것
  • 분산은 항상 양수, 공분산은 양수와 음수 둘다 가능
  • 공분산 > 양수 : 두 변수가 같은 방향으로 변하는 경향을 으미
  • 공분산 < 음수 : 반대 방향으로 변하는 경향이 있습니다.
  • $cov(x, y) = \frac{\sum_{i=1}^n (x_i - \overline{x})(y_i - \overline{y})}{n}$
상관계수 (Correlation coefficient)
  • 1차원 데이터의 표준편차와 대응하는 2차원 데이터의 상관계수는 두 변수 사이의 선형적 관계의 강도와 방향을 수치화 한 값이다.
  • 상관계수는 공분산을 표준화한 값으로 -1 ~ 1 사이의 값임.
  • 1에 가까우면 강한 양의 선형 관계,
  • -1에 가까우면 강한 음의 선형 관계,
  • 0에 가까우면 선형 관계가 약하거나 없음을 의미합니다.
  • $cor(x,y) =\frac{cov(x,y)}{s_xs_y}$
  • $s_x$ : 데이터 x에 대한 표준편차, $s_y$ : 데이터 y에 대한 표준편차
예제 코드

다음은 2차원 데이터 분석 ipynb 코드
10명의 학생의 영어점수, 수학점수를 이용해서 데이터의 시각화 및 상관관계 분석
ipynb code