• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

MinMaxScaler 미사용

21.12.18 12:25 작성 조회수 150

0

안녕하세요. 좋은 강의 제공해주셔서 감사합니다.

이번 강의를 듣던 중 몇가지 의문점이 생겼는데, 다음과 같이 여쭤봅니다.

1.경사하강법에서 변수 표준화를 거친 뒤 weight와 bias를 구했을 때, 만약 이후 추가로 적용하는(ex; 동일 데이터 변수를 가지고 boston이 아닌 detroit에 적용해본다고 했을 때) 변수가 RM, LSTAT의 최소~최대 범위 밖에 있다면, 구해진 weight와 bias도 달라져야 하는 것은 아닌지?

2.타겟값은 왜 표준화를 거치지 않는지?

3.변수 표준화 없이 경사하강법을 적용하는건 왜 제대로 작동하지 않는지? (실제로, 코드를 변경하여 표준화 없이 시행해 봤을땐 loss 값이 무한히 커졌음)

4.변수 표준화 없이 경사하강법을 사용할 수 있는 방법은 무엇인지?

5.MinMaxScaler를 사용해야 하는 정확한 이유는 무엇인지?

MinMaxScaler의 명확한 사용 이유에 대해 의문이 있다가, 추가적인 의문점이 들었습니다.

한 번에 너무 많은 질문을 드린건 아닌가 하는 생각이 들지만, 답변 해주시면 감사하겠습니다!! :)

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

일반적인 딥러닝은 선형회귀와 비슷한 로직으로 이해 될 수 있습니다. 다만 딥러닝은 선형 방식이 아니라 비선형 방식이고, 은닉층의 갯수를 많아질 수 있으므로 복잡도가 훨씬 높습니다. 

선형회귀는 보통  y = w0 + w1X1 + w2X2 + .... + wnXn과 같은 식으로 근사 시킬 수 있습니다. 여기서 y는 타겟값, X는 피처, w는 회귀 계수(딥러닝의 weight)입니다. 예를 들어 집 가격을 근사하는 회귀 식은

집가격 = w0 + w1* 집넓이 + w2*근처지하철역까지의 거리 +... 와 같이 구할 수 있습니다. 집넓이, 근처 지하철거리는 다 피처 입니다. 

그런데 딥러닝은 피처들의 스케일링에 대해서 매우 민감합니다. 일반적으로 선형회귀도 스케일링에 영향을 받지만 딥러닝 방식은 그 영향도가 더 큰것 같습니다. 

스케일링이라 개별 피처들의 크기를 통일하여 특정 척도로 맞추는 것입니다. 가령 집넓이는 30평, 40평, 50평이 될 수 있지만 근처 지하철역 거리는 100m, 500m, 1000m 가 될 수 있습니다. 회귀식으로 보면 집 가격 = w0 + w1*30평 + w2*1000m가 될 수 있습니다. 이때 집가격과 지하철역 거리까지 서로 크기 구성이 다르기 때문에 w1과 w2는 이들 값에 크게 영향을 받습니다. w1이 1->2로 변할때랑 w2가 1->2로 변할때 타겟값의 범위 차이가 확연히 달라 집니다. 지하철역 거리가 더 큰 숫자이기 때문에 w2의 변동량에 회귀식은 더 큰 영향을 받습니다. 

이 때문에 개별 피처들의 크기를 통일하여 특정 척도로 맞추는 것입니다. MinMaxScaler를 적용하여, 최소는 -1, 최대는 1로 모든 피처들을 크기를 변환하면 집넓이가 100평이 최대,  0평이 최소라고 한다면 100평은 1, 10평은 -1, 50평은 0으로 변환합니다. 마찬가지로 지하철역 거리가 1000m가 최대, 100m가 최소라면 0m는 1, 100m는 -1, 500m는 0과 같이 변환됩니다. 

이렇게 변환하면 모든 피처들이 다 동일 척도값이 -1 ~ 1사이 값으로 변환됩니다. 

1. 질문을 정확히 이해하지 못했습니다만, 기존 feature들을 MinMaxScale 적용했으면 신규로 적용하는 feature들도 반드시 MinMaxScale을 적용해 줘야 합니다. 

원하시는 답변이 아니면 다시 질문을 정리 부탁드립니다. 

2. 타겟값은 스케일링을 할 필요가 없습니다. 타겟값은 딱 한개의 변수로만 되어 있기 때문입니다. 여러개의 피처들로 되어 있는 피처 구성과는 다릅니다. 

3. 딥러닝이 좀 스케일링에 예민합니다. 

4. 스케일링 없이 적용해 볼수는 있지만 일반적으로 스케일링을 적용하는 것이 좋습니다. 

5. MinMaxScaler를 적용하든, StandardScaler(평균이 0, 표준편차가 1인 데이터로 변환)를 적용하든, 개별 피처들을 동일 척도로 변환하는 스케일링만 적용해 주면 됩니다. 

감사합니다. 

redsharks님의 프로필

redsharks

질문자

2021.12.18

네 빠른 답변 감사드립니다.

질문에 대한 궁금증이 해소되었습니다.

질문 1번의 경우, 본 영상에서 구한 weights와 bias를 집값을 예측하고 싶은 타 지역의 데이터에 적용한다고 했을 때,

예를 들어, detroit 지역의 경우, 동일하게 방 개수와 저소득층 주민비율 데이터가 있을 때 이를 통해 집값을 예측할 경우 동일하게 weights와 bias를 사용할 수 있다고 생각했는데요, 

만약 boston 에서의 lstat 변수 값 범위가 10~60 이고, detroit의 lstat 범위가 5~80 이라면, 해당 변수를 표준화 했을 때 범위차이로 인한 값이 달라져 boston 데이터로부터 구한 weight를 제대로 사용할 수 없다고 생각했습니다. 따라서 이러한 경우 weights와 bias를 그대로 적용 가능한지에 대한 질문이었습니다.

weight를 제대로 사용할수 없는 수준은 아니고, 살짝 성능이 떨어질 수는 있습니다.  때문에 모델을 학습 시키는 데이터와 모델에서 예측할 데이터는 가능한 비슷한 형태를 가지는 게 좋습니다. 질문하신내용은 학습과 예측 데이터의 데이터 분포가 달라지는 상황이기 때문에 약간 성능이 떨어 질 수 있습니다. 

좋은 모델을 위해서라면 boston과 detroit 데이터를 함께 학습 해야 하고, 여기에 추가 feature로 '지역 구분' 이 있으면 boston과 detroit 모두를 잘 예측할 수 있는 모델을 만들수 있을 것입니다. 

redsharks님의 프로필

redsharks

질문자

2021.12.19

네 답변 감사드립니다!!