본문 바로가기

ML & DL

[머신러닝]Machine Learning(standford) 2강 - feature scaling/learning rate/polynomial regression

이 시리즈는 스탠퍼드에서 제공하는 머신러닝 강의를 듣고 스터디를 진행하며 몰랐던 혹은 헷갈렸던 개념들 위주로 정리합니다

1. Feature Scaling

 

  • Scaling은 머신러닝에서 중요한 문제인데, 그 이유는 위 그림에서 알 수 있듯이 Gradient descent로 학습을 하는 속도에 영향을 주기 때문이다.

  • 좌측 그림을 보면 x1 = size 변수와 x2 = number of bedrooms 의 data scale(범위, 크기)이 크게 차이난다. 이럴 경우 cost function이 그래프처럼 한 축으로 치우친 타원 꼴이 나오게 되고 gradient descent로 학습하는 과정에서 단번에 최적점으로 이동하지 못하고 왔다 갔다 하면서 시간이 많이 걸리게 된다.

  • 따라서, Scaling을 통해 주어진 데이터의 범위를 균등하게 조정해주어, 오른쪽과 같이 cost function 그래프가 나오게 하고 학습의 효율을 높일 수 있다. Scaling 방법은 다음과 같다.

 

 1) MinMax normalization

 

  • 데이터의 범위를 0 ~ 1사이로 맞춰주는 scale 방법 데이터의 최대/최소만 알고 있어도 사용이 가능하다

 

 2) Standardization

 

  • 분모는 데이터의 표준편차, 이를 모를 경우 data range(Xmax - Xmin)으로 대체해도 괜찮다

  • range로 나눌 경우 데이터의 최소값을 -1 최대값을 1로 mapping하여 데이터 범위를 -1 ~ 1 로 맞춘다

  • 표준편차로 나눌 경우 원래 데이터의 분산 정도는 보존하면서 범위를 균일하게 해준다 > Z분포

  • 통계학에서는 표준화라고 부르는데 컴퓨터 과학이나 머신러닝 분야에서는 정규화라는 표현으로도 쓰이는 듯 하다.

 

 ※ Application tip ※

  • 실제 적용에서는 데이터의 범위가 -3 ~ 3 보다 크거나 -0.3 ~ 0.3 보다 작은 경우 scaling을 해주는게 좋다고 한다. 

  • 물론 정형화된 방법은 없으며 여러 데이터를 다루면서 개인의 전처리 방법을 형성해 나가는게 중요 할 듯 하다.

  • anomaly detection과 같은 task의 경우 이상치 탐색을 위해 scaling시 zero - centering 시키지 않는 방법도 사용한다

 

2. Learning rate

 

  • 기본적으로 learning rate가 너무 크면 gradient descent 과정에서 수렴하지 못하고 튕기는 문제가 발생하므로 적절히 작은 값으로 주는것이 중요하다.
  • 좌상단 그림에서 처럼 cost function이 감소하지 않고 증가하는 경우 learing rate를 줄일 필요가 있는것이다.
  • 그 밑에 그림의 경우 cost function의 local minima가 많음을 알 수 있다
  • 하지만 learning rate가 너무 작을 경우 매우 천천히 수렴하는 문제가 발생할 수 있다 따라서 learning  rate를 적절히 조절해 가며 학습하는 것이 중요!

 

 

 

 

3. polynomial regression

 

 

  • polynomial regression회귀에서는 각 변수의 데이터 범위가 그림과 같이 매우 크게 차이나므로 scaling할때도 신경을 써야 한다. 그림의 데이터의 경우 3차 모델인 cubic 모형을 사용하였는데, 변수마다 스케일이 크게 차이나므로 이를 고려해서 scaling 해야 한다.