
이 시리즈는 포항공과대학교 옥정슬 교수님의 기계학습(CSED515) 수업과 [Probabilistic Machine Learning: Advanced Topics] 등을 참고로 하여 작성된 글입니다.
들어가기에 앞서 간단한 개념을 이해해야 합니다. 기계 학습은 말 그대로 기계(컴퓨터)가 대신 학습해주는 것을 의미합니다. 대신 그 학습 방식을 기계가 하기 쉽도록 간단하게, 대신 대규모로 진행이 가능하게끔 만드는게 핵심입니다. 이를 통해 인간과 흡사한, 혹은 인간을 뛰어넘는 능력을 구현하는 것이 목표입니다.
그러면 기계에 뭔가 학습을 시키는 과정에서 데이터를 다루게끔 해야할텐데, 이때 다루고자 하는 데이터에 라벨링이 되어 있는지에 따라 Supervised Learning(지도 학습), Unsupervised Learning(비지도 학습), Reinforcement Learning(강화 학습) 등으로 그 학습 방법이 구분됩니다.
지도 학습은 쉽게 말해서 input data(입력 데이터)와 Label(정답, target)이 함께 제공됨으로써 모델이 정답을 학습합니다. 예를 들어 데이터를 바탕으로 이메일이 스팸인지 분류하는 문제가 고전적인 지도 학습의 예시로 볼 수 있겠습니다.
다음으로 비지도 학습의 경우 정해진 정답이 없습니다. 우리가 해야할 것은 데이터에서 숨겨진 패턴이나 구조를 찾아내는 것입니다. 예를 들어 정해진 정답 없이 데이터를 비슷한 종류로 묶는 문제가 그 예시일 것입니다.
강화 학습의 경우 환경과 에이전트를 구분해놓는 것으로부터 시작합니다. 에이전트가 특정 상황에서 어떻게 행동하는지에 따라 보상이 주어지고, 에이전트는 이 보상을 최대화하는 쪽으로 학습을 하게끔 진행됩니다.
이번 포스트에서 다룰 Linear regression(선형 회귀)은 지도 학습에 속합니다. 각 데이터는 라벨링이 되어 있고 우리가 원하는 것은 데이터를 가장 잘 설명하는 직선을 찾는 것입니다.
Linear regression(선형 회귀)는 통계학과 머신러닝에서 널리 사용되는 기본적인 예측 모델입니다. 이번 포스팅에서는 선형 회귀의 기본 개념부터 최소제곱 방법, 가중 최소제곱, 그리고 MLE에 이르는 다양한 접근법을 살펴보겠습니다.
사실 linear regression도 그 종류가 많습니다. 당연하게도 좌표 공간 상에 여러 개의 점이 찍혀있을 때, 무엇을 기준으로 하냐에 따라 직선을 다양하게 그을 수 있습니다. 그 다양한 기준 중 가장 일반적 형태인 Least squares method(최소제곱법)에 대해 알아보려고 합니다.
흔히 Linear regression이라고 하면 다음 식으로 그 모델이 설명됩니다.
조건부 기댓값이 나왔다고 하더라도 해석만 잘 한다면 쉽게 이해를 할 수 있습니다. 왼쪽은 'input data 가 주어졌을 때, output data 의 기댓값'입니다. 우리는 그 기대하는 값을 input data 로 어쨌든 예측을 해야할텐데, 그 형태가 바로 linear combination(선형 결합)의 형태라는 것입니다. 즉, 어떤 직선의 형태로 output을 예측하겠다는 것이 그 핵심입니다.
확률로는 다음과 같이 작성하기도 합니다.
이것도 전혀 어렵게 생각할 필요가 없습니다. 왼쪽을 먼저 보면, 우리는 'input data 가 주어졌을 때, output data 의 확률 분포'를 알아내고자 합니다. 는 잠시 무시하셔도 좋습니다. 다음으로 오른쪽을 보면 우리는 그 확률 분포를 임의로 Gaussian distribution(정규 분포, normal distribution)으로 가정하고 있습니다. 이때 정규 분포의 평균은 위 식에서 봤던 이고, 어떤 라는 분산을 가지고 있습니다. 어떤 직선을 그으면서도, 약간의 분산, 어느 정도의 불확실성을 반영하는 모델이라고 생각하시면 됩니다. 이때 우리가 도입한 , , 는 모델의 생김새를 결정짓는 parameter입니다(통계학에서는 대신 를 사용하기도 합니다.). 이를 묶어서 왼쪽의 로 퉁치는 겁니다. 즉, 는 어떤 모델의 parameter를 통칭하는 역할을 하기도 합니다.
기계 학습에서 한가지 더 중요한 요소는 차원입니다. 예를 들어 계산이 올바르게 되었는지 확인하기 위해 차원 확인(Dimensionality Check)을 하기도 하며, 입출력의 차원을 정확히 하는 것이 중요합니다. Linear regression에서도 마찬가지입니다.
이렇게 구분된다는 정도만 이해하시면 될 것 같습니다.
하지만 직선으로는 사실 데이터를 잘 표현하기 어려울 수 있습니다. 이럴때 약간의 비선형적인 요소가 필요할 수 있는데, feature extractor를 이용한 nonlinear transformation으로 linear regression을 구현하는 방법이 있습니다. 이에 대해서는 linear regression에 대한 numerical example과 함께 별도의 포스팅으로 다루도록 하겠습니다.
본격적으로 그 해를 구하기에 앞서 상황을 세팅해놓으면, data matrix 와, 각 관측치 , 그리고 weight vector , 마지막으로 정규분포를 따른다고 가정한 noise 를 이용해서 다음과 같은 모델링을 할 수 있습니다.
전형적인 선형 모델의 모습입니다. 그러면 y는 다음 확률 분포를 따르게 됩니다.
정규분포 식에 각 값을 집어넣고, log를 취한 뒤, 부호를 바꿔주면 negative log-likelihood(NLL)을 구할 수 있습니다.
이때, 을 Residual Sum of Squares(RSS) 라고 합니다.
앞서 보았듯, RSS는 다음과 같이 작성됩니다.
그 계산을 조금 풀어보면 다음과 같이 됩니다.
여기서 에 대해 미분할 수 있습니다. 미분한 결과는 다음과 같습니다.
이를 0으로 세팅하고 정리하면 다음과 같은 식이 나옵니다. 이를 Normal Equation(정규 방정식) 이라고 합니다.
다음으로 를 구하기 위해 정리합니다. 가 가역적이라고 가정하겠습니다.
마지막으로 optimal한 값인지 보이기 위해 Positive definiteness를 확인해주면 됩니다. 이를 확인하기 위해서는 이계 미분을 통해 RSS의 hessian을 구해 보이면 됩니다.
hessian은 다음과 같습니다. RSS를 두 번 미분한 결과입니다.
다음으로 0이 아닌(non-zero) 임의의 vector 에 대해,
위 식이 성립하므로 minimum입니다.
따라서 optimal weights 는 다음과 같이 나타납니다.
weights는 다음과 같이 주어졌습니다.
하지만 사실 이건 수학에서의 얘기이고, 수치적으로 이를 계산하는 과정에서 의 역행렬을 직접적으로 구하는 것은 수치적으로 불안정할 수 있습니다. 이때 SVD나 QR decomposition을 이용해서 해결하기도 합니다.
만약에 위아래로 긴 데이터 행렬 일 때(, 즉 데이터 포인트의 개수가 각 데이터 포인트의 차원보다 클 때), QR decomposition을 사용하는 것이 더 효율적입니다.
먼저, 를 다음과 같이 분해합니다.
식에 대입을 해보겠습니다.
를 양변 왼쪽에 곱하면,
이므로,
여기서 에 대해 풀면,
이렇게 QR decomposition을 이용하면 직접적으로 의 역행렬을 구하는 과정이 없어 좋습니다.
이제 새로운 상황도 가정해볼 수 있습니다. 모든 관측치가 다 중요할까요? 사실 우리가 구한 방법은 모든 관측치가 다 동일한 가중치를 갖는다는 등분산성(Homoscedasticity)을 가정했습니다. 만약에 이분산(Heteroskedasticity)과 같은, 즉 위와 같은 가정이 깨지는 상황이라면, 이 같은 상황을 해결하기 위해서는 가중 최소제곱법(Weighted Least Squares, WLS)을 사용해야 합니다.
WLS의 확률 분포는 다음과 같이 표현됩니다.
여기서 입니다. 대각행렬이며, 각 관측치의 분산의 역수를 그 요소로 가지고 있습니다.
역시 정규 분포이므로, negative log-likelihood(NLL)을 구하면,
Weighted Residual Sum of Squares (WRSS) 는 그럼 다음과 같이 표현 된다고 생각할 수 있습니다.
이걸 풀면,
역시나 마찬가지의 과정으로 에 대해 미분하고, 0으로 세팅한 뒤 를 구하면 됩니다.
따라서 Weighted least squares estimates는 다음과 같이 구할 수 있습니다.
가장 기본적이고 쉬운 모델인 Linear regression 모델의 개념과, 앞선 확률, 통계적 측면과 연결지어봤습니다. 다음 포스팅에서는 Ridge, Lasso linear regression와, 마지막으로 Bayesian linear regression까지 다루며 linear regression 파트를 끝내도록 하겠습니다.