ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Week 2] Multivariate Linear Regression
    Courses/Andrew Ng - Machine Learning 2021. 12. 20. 22:55

    Multivariate Linear Regression

     이번에는 변수가 여러 개인 선형 회귀를 다뤄볼 것 입니다. 이는 다변수 선형 회귀라고 불립니다. 하기와 같이 표기법을 정리합니다.

    m은 샘플의 총 갯수, n은 변수들의 총 갯수라는 것을 유념합시다. 그렇다면 다변수 선형 회귀의 가설 공식은 다음과 같을 것입니다.

     

    x라는 변수가 n개이니 그 앞에 붙는 계수 세타들도 n개 입니다. 앞에서 배운 벡터와 행렬의 곱으로 더 간단하게 표현해보도록 하겠습니다.

    세타 벡터에 전치를 취해 x 벡터와 곱한 꼴입니다. 실제로 계산해보면 위의 가설 함수 일반식과 동일함을 알 수 있습니다. 

     파라미터들의 집합은 이제 그냥 세타로 표기합니다. 비용 함수도 그에 따라 J(세타)로 표기합니다. 세타는 벡터이니 비용 함수도 벡터입니다.

    Gradient Descent For Multiple Variables

     

     왼쪽은 지금까지 우리가 배웠던 n=1일 때의 경사 하강법입니다. 오른쪽은 다변수일 때의 경사 하강법입니다. 결국 두 가지 알고리즘은 같습니다. 

     이것이 경사 하강법의 일반적 표현이 됩니다.

     

    Gradient Descent in Practice I - Feature Scaling

     보통 변수의 값의 범위가 비슷할 때 경사 하강법은 더 빠르게 최저값으로 수렴하게 됩니다. 이유는 세타가 작은 범위에서는 빠르게 감소하고 큰 범위에서는 느리게 감소하여 변수가 일정한 범위에 있지 않으면 최저값으로 도달할 때 비효율적으로 진동하기 때문입니다.

     이런 문제를 방지하기 위해 변수들을 일정 범위로 수정합니다. 이를 Feature Scaling이라고 합니다.

     

      보통 Feature Scaling은 모든 값의 범위가 -1<=x<=1 사이에 있는 것이 좋습니다만 꼭 그 범위에 맞춰야 하는 것은 아닙니다. 0<=x<=3은 괜찮습니다. -2<=x<=0.5도 충분히 가깝지만 -100<=x<=100은 너무 범위가 넓습니다. 사람들마다 다르지만 교수님은 -3~3의 범위면 괜찮다고 하십니다. 

     Feature Scaling을 할 때 최대값으로 나누고 평군 정규화 (Mean normalization)을 실행합니다. 평균 정규화는 평균의 값이 0에 수렴하게 스케일링하는 것 입니다. 

     

     

    Gradient Descent in Practice II - Learning Rate

     

     위 그래프를 보시면 실행 회수에 따른 비용 함수의 최솟값을 나타냅니다. 상기 그래프의 경우 최솟값으로 수렴하는 것으로 보아 잘 작동하고 있습니다. 경사 하강법이 제대로 작동할 경우 반복할 때 마다 비용 함수는 감소합니다.

     

     이런 경우들은 어떤가요? 좌상단 그래프는 아예 증가하고 있습니다. 다른 그래프들은 진동하거나 발산하고 있네요. 이런 경우들은 제대로 경사 하강법이 작동하고 있다고 말하기 힘듭니다. 이 경우 학습률이 너무 크기 때문이므로 학습률을 줄여줍니다. 다만 학습률이 너무 작으면 경사 하강법이 수렴하는 시간이 너무 오래걸립니다.

     따라서 적당한 학습률을 찾아야 합니다. 일반적으로 학습률을 결정할 때 가장 작은 값과 가장 큰 값을 찾고 점점 값을 바꾸면서 적절한 값을 찾습니다. 낮추는 간격은 전의 값보다 3배 정도 차이나게 합니다.

     

     

    Features and Polynomial Regression

     간단한 선형 함수가 아니라 복잡한 형태의 함수일 경우 적합한 선형 회귀 메카니즘을 고르기 위해 제대로 된 변수와 학습 알고리즘을 결정해야 합니다.

     

     집값을 예측하는 가설 함수를 만든다면 , 주택의 너비와 깊이를 변수로 각각 둘 수도 있겠지만, 주택의 면적이라는 한가지 변수로 묶을 수도 있습니다. 이렇게 하면 더욱 효과적일 수도 있습니다.

     이런 데이터가 주어졌을 때, 이차 함수 그래프로 가설을 세워보고 싶을 수도 있지만 사실 적절한 방법이 아닙니다. 왜냐하면 이차 함수는 포물선으로 이후 감소하기 때문입니다. 사이즈가 커지는데 집값이 떨어지는 경우는 일반적인 경우가 아닙니다. 따라서 이차 함수는 이 다항 회귀를 표현하는데 적절한 함수가 아닙니다.

     그렇다면 이렇게 3차 함수로 표현해보는 것은 어떨까요? 이 경우 사이즈가 커지면 집값도 상승하므로 2차 함수보다 조금 더 적절해 보입니다. 3차 함수를 다변수 선형 회귀처럼 변형해보겠습니다.

      주택의 사이즈 x를 3차 다항식으로 표현합니다. 하나의 변수를 활용하여 3가지 변수가 있는 것처럼 표현합니다.

    이 경우 Feature Scaling이 매우 중요합니다. 왜냐하면 여러 변수가 비슷한 범위의 값을 가져야 경사 하강법이 잘 작동하는데 , 제곱수들을 사용했기 때문에 범위가 매우 다르기 때문입니다.

     마지막으로 3차 함수를 사용하는 대신 루트 함수를 이용하는 법도 있습니다. 3차 함수의 경우 가격이 급격히 상승하는 문제가 있습니다. 루트 함수는 완만하게 증가하므로 우리의 문제에 조금 더 적합한 모델입니다.


    혼자서 강의를 듣고 정리한 것이니 틀린 점이 있다면 언제든지 지적 부탁드립니다 :)

    'Courses > Andrew Ng - Machine Learning' 카테고리의 다른 글

    [Week 3] Classification and Representation  (0) 2021.12.29
    [Week 2] Normal Equation  (0) 2021.12.20
    [Week 1] Linear Algebra Review  (0) 2021.12.19
    [Week 1] Parameter Learning  (0) 2021.12.16
    [Week 1] Model and Cost Function  (0) 2021.12.14

    댓글

Designed by Tistory.