선형 회귀 및 최소 제곱법: 한 개의 선으로 세상을 읽다
요약
본 글은 데이터 분석의 기초 개념인 선형 회귀와 최소 제곱법(Least Squares Method)을 설명합니다. 공장 부품의 온도 변화에 따른 지름 변화를 예시로 들며, 산점도의 점들을 가장 잘 대표하는 '최적의 직선'을 찾는 과정을 다룹니다. 이 최적의 선은 모든 데이터 포인트와 예측선 간의 차이(잔차)를 제곱하여 합한 값(RSS)을 최소화하는 방식으로 결정됩니다.
핵심 포인트
- 선형 회귀는 변수 간의 관계를 '최적의 직선'으로 근사합니다.
- 최소 제곱법은 잔차(실제값 - 예측값)를 제곱하여 합한 값을 최소화하는 방법입니다.
- 잔차 제곱합(RSS)을 최소화하는 선이 데이터 군집을 가장 잘 대표한다고 가정합니다.
선형 회귀 (Linear Regression) · 최소 제곱법 (Least Squares Method)
\hat{eta}= ext{arg} ext{min}_eta
Vert y-Xeta
Vert^2
나는 매일 공장에서 같은 부품을 만들고 있다.
지난번에는 같은 조건, 같은 재료를 사용했음에도 불구하고 부품에 필연적으로 편차가 생긴다는 것을 알게 되었다.
그리고 데이터를 살펴보던 중 다른 점을 깨달았다.
더운 날에 만든 부품은 조금 더 큰 것 같다.
실내 온도가 높을수록, 부품도 커지는 걸까?
가로축에 공장 실내 온도, 세로축에 부품의 지름을 그려보았다.
물론 지난번 알았듯이 점들은 여기저기 흩어져 있었다.
하지만—
완전히 무작위만은 아니었다.
실내 온도가 올라갈수록, 지름이 조금씩 커지는 것처럼 보인다.
나는 생각했다.
이 점들의 군집을,
한 개의 선으로 나타낼 수는 없을까?
산점도를 보면 점들이 상당히 흩어져 있다. 그럼에도 불구하고, 어렴풋이 우상향하는 경향이 보인다.
이 점들의 모임을 한 개의 선으로 표현할 수 있을까?
가장 단순한 것은 다음과 같은 직선이다.
\hat{y}=b_0+b_1x
$x$는 실내 온도, $\hat{y}$는 그 실내 온도를 바탕으로 예측한 부품의 지름이다. '$ ext{\hat{}}$'(햇)은 여기서는 예측값을 나타내는 기호다.
$b_0$는 절편(intercept), $b_1$는 선의 기울기(slope)다.
만약 기울기 $b_1$이 양수라면,
실내 온도가 높을수록, 부품의 지름도 커지는 경향이 있다는 선이 된다.
하지만 여기서 문제가 있다.
직선이라면, 얼마든지 그릴 수 있다.
기울기가 가파른 선도 그릴 수 있고, 완만한 선도 그릴 수 있다. 절편을 바꾸면 선의 상하 위치도 바뀐다.
그렇다면, 어떤 선을 골라야 할까?
어떤 측정값을 $(x_i,y_i)$라고 하자.
직선이 예측하는 값은,
\hat{y}_i=b_0+b_1x_i
이 된다.
실제 값 $y_i$와, 예측값 $\hat{y}_i$의 차이를,
e_i=y_i-\hat{y}_i
이라고 한다. 이것을 **잔차(residual)**라고 부른다.
요컨대,
이 점이, 그어진 선으로부터 수직 방향으로 얼마나 벗어나 있는지를 나타낸 숫자다.
그렇다면, 모든 점에 대해 이 벗어남을 가능한 한 작게 만드는 선을 찾으면 될 것 같다.
하지만 잔차를 그대로 더해서는 잘 되지 않는다.
선보다 위에 있는 점은 플러스가 되고, 아래에 있는 점은 마이너스가 되기 때문에 서로 상쇄되어 버리기 때문이다.
그래서, 벗어남을 제곱해 본다.
e_i^2=(y_i-\hat{y}_i)^2
제곱하면 플러스도 마이너스도 0 이상의 값이 된다.
게다가, 크게 벗어난 점일수록 그 영향이 커진다.
그리고, 모든 점에 대해 더한다.
\sum_{i=1}^{n}(y_i-\hat{y}_i)^2
이것이 **잔차 제곱합(Sum of Squared Residuals)**이다.
이 값이 작을수록, 점들의 모임과 직선 사이의 벗어남이, 제곱 합이라는 기준으로 작다는 의미다.
즉, 우리가 찾고 싶은 것은,
잔차 제곱합이 가장 작아지는 한 개의 선
인 것이다.
수식으로 나타내면,
\min_{b_0,b_1}
\sum_{i=1}^{n}
\left[y_i-(b_0+b_1x_i)
ight]^2
이것이 **최소 제곱법(Least Squares Method)**이다.
이름 그대로, 벗어남의 제곱 합을 최소로 만드는 방법이다.
이렇게 해서, 흩어져 있던 측정값에 한 개의 직선을 그릴 수 있게 되었다.
물론, 모든 점이 선 위에 놓이는 것은 아니다.
그럼에도 불구하고 우리는,
이 복잡한 점들의 모임을, 한 개의 선으로 근사한다면?
이라고 질문할 수 있다.
흩어진 세상을, 하나의 선으로 읽어보려는 시도.
그것을 위한 방법인 것이다.
다만, 하나 궁금한 것이 남아있다.
실내 온도가 높을수록, 부품의 지름이 커지는 것처럼 보인다.
그렇다면,
실내 온도가 높아졌기 때문에, 부품이 커진 것일까?
그것은 이 한 개의 선만으로는 알 수 없다.
그 '왜'는 조금 더 나중—제17화에서 인과관계를 생각할 때 다시 돌아오도록 하자.
최소 제곱법의 개념은 이해했다.
그렇다면, 실제로 어떻게 최적의 기울기 $b_1$와 절편 $b_0$를 구할 수 있을까?
무수한 직선을 하나하나 시험해 볼 수는 없다.
그래서, **미분(Differentiation)**이 등장하게 된다.
앞서 구한 잔차 제곱합을 다시 적어보자.
L(b_0,b_1)=
\sum_{i=1}^{n}
\left[y_i-(b_0+b_1x_i)
ight]^2
이 $L$은 절편 $b_0$와 기울기 $b_1$에 의해 결정되는 함수다.
목표는, 이 $L$을 최소화하는 것이다.
따라서 $b_0$와 $b_1$에 대해 각각 편미분한다.
편미분이란, 다른 변수를 고정하고 하나의 변수에 대해 미분하는 것이다.
먼저, $b_0$으로 미분하면,
\frac{\partial L}{\partial b_0}\n=
-2\sum_{i=1}^{n}(y_i-b_0-b_1x_i)\n```
마찬가지로, $b_1$으로 미분하면,
\frac{\partial L}{\partial b_1}\n=
-2\sum_{i=1}^{n}x_i(y_i-b_0-b_1x_i)\n```
각각을 0으로 놓는다.
\frac{\partial L}{\partial b_0}=0\n```
\frac{\partial L}{\partial b_1}=0\n```
이는 함수가 최소가 되는 지점에서는 각 방향의 기울기가 0이 된다는 생각이다.
이번 잔차 제곱합(RSS)은 $b_0, b_1$에 관한 아래로 볼록한 이차 함수이므로, 이 조건으로부터 최솟값을 구할 수 있다.
먼저, $b_0$에 대한 식을 정리하면,
\sum_{i=1}^{n}y_i\n=
b_0+b_1\sum_{i=1}^{n}x_i\n```
이 양변을 $n$으로 나누면,
\bar{y}=b_0+b_1\bar{x}\n```
여기서, $ar{x}$는 실온의 평균이고, $ar{y}$는 부품 직경의 평균이다.
따라서,
절편(Intercept)
b_0=\bar{y}-b_1\bar{x}\n```
을 얻는다.
다음으로, 이 관계를 $b_1$에 대한 식에 대입하여 정리하면,
**기울기(Slope)**
b_1=
\frac{
\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})
...\n```
이 한눈에 복잡하지만, 의미를 생각해 보자.
분자는 실온과 부품 직경이 각각의 평균으로부터 어떻게 함께 변화하고 있는지를 나타낸다.
분모는 실온 자체의 분산이다.
즉, 두 값의 함께 움직이는 정도를 실온의 분산으로 나누어 기울기가 결정된다.
그리고 절편은 구한 직선이 데이터의 평균점 $(ar{x},ar{y})$을 지나도록 결정된다.
이렇게 해서 최적의 기울기와 절편을 직접 계산할 수 있게 되었다.
※여기서는 실온 측정값이 모두 같지 않다고 가정한다. 모두 같다면 분모가 0이 되어 기울기를 유일하게 결정할 수 없다.
이번 창고 공장의 15개 측정 데이터에 적용하면,
\hat b_0 \approx 9.9311\n```
\hat b_1 \approx 0.003302\n```
이 된다.
즉, 구한 회귀 직선은,
\hat{y}=9.9311+0.003302x\n```
이다.
이 식에서는 실온이 1℃ 높아질 때 예측되는 직경이 약 0.0033mm 커진다.
참고로, 절편인 9.9311은 실온이 0℃일 때의 예측값이다. 이번 산점도는 16℃부터 표시하고 있기 때문에 그림의 왼쪽 끝 값과는 다르다.
이 선이 모든 측정점을 정확히 지나가지는 않는다.
그럼에도 불구하고, **직선으로 표현한다는 조건 하에 잔차 제곱합(RSS)이 최소가 되는 하나의 직선**인 것이다.
사실, 지금까지의 계산은 벡터와 행렬을 사용하여 하나의 식으로 요약될 수 있다.
\hat{\beta}=
\arg
min_{\beta}
\lVert y-X\beta\rVert^2
여기서,
- $eta$: 절편과 기울기 $(b_0, b_1)$을 나열한 벡터
- $X$: 각 측정에 대해 상수 1과 실온을 나열한 행렬
- $y$: 부품 직경의 측정값을 나열한 벡터
이다.
$ ext{arg} ext{min}$은
RSS=\sum_{i=1}^{n}\left[y_i-(b_0+b_1x_i)\right]^2\n\n- 제3단계: 수학적 답을 보기\n- '최소 제곱해 표시' 버튼을 누르면, 직선이 최적의 위치로 이동합니다. 계산된 $b_0, b_1$과 RSS의 최소값을 보여줍니다.\n- 직접 찾은 선과, 수학적으로 구한 선을 비교할 수 있습니다.\n\nSee the Pen 04 by aokikenichi (@aokikenichi) on CodePen.\n\n마치 공장의 측정 데이터에서 하나의 선을 찾아냈습니다. 하지만 최소 제곱법이 활약하는 곳은 공장만이 아닙니다.\n\n기계 학습(Machine Learning)에서도, 예측값과 정답의 차이를 줄이는 것이 기본적인 사고방식 중 하나가 되었습니다.\n\n예를 들어, 신경망(Neural Network)을 이용한 수치 예측에서는, 예측값과 정답의 차이를 제곱한 **평균 제곱 오차(MSE)** 를 손실 함수(Loss Function)로 사용하는 경우가 있습니다.\n\n**손실 함수 (Loss Function)**\n- 예측값과 목표값의 차이를 수치화하는 지표입니다.\n- AI 학습에서는, 손실 함수의 값을 작게 만들기 위해, 경사 하강법(Gradient Descent) 등을 사용하여 매개변수(Parameter)를 조정합니다.\n\n$$ \\nMSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \\n$$ \n최소 제곱법과 매우 흡사합니다.\n\n다르다는 점은, 하나의 직선이 아니라 여러 층의 신경망으로 복잡한 관계를 표현할 수 있다는 것입니다.\n\n그리고 단순한 선형 회귀(Linear Regression)에서는 공식으로부터 최적해를 계산할 수 있지만, 신경망에서는 일반적으로 경사 하강법 등을 사용하여 매개변수를 조정합니다.\n\n**'예측하고, 차이를 측정하며, 그 차이를 줄이는 것'**\n\n이러한 생각이 현대 AI에도 연결되어 있습니다.\n\n뇌과학(Neuroscience)에서도 회귀 분석(Regression Analysis)이 사용됩니다.\n\n예를 들어, 빛의 세기를 바꿨을 때, 특정 뉴런의 발화 빈도가 어떻게 변하는지 알아볼 수 있습니다.\n\n자극의 세기를 $x$, 발화 빈도를 $y$로 측정하면, 역시 데이터는 흩어집니다.\n\n여기에 회귀 직선을 그으면, 자극의 세기와 신경 활동의 관계를 정량적으로 파악할 수 있습니다.\n\n물론, 뉴런의 반응이 반드시 직선적이지 않을 수도 있습니다. 일정 이상의 자극에서는 반응이 포화(plateau)될 수도 있습니다.\n\n그럼에도 불구하고, 복잡한 뇌의 작동을 이해하기 위해, 우선 단순한 모델부터 생각해 보는 것입니다.\n\n공장에서 했던 일과 기본적인 발상이 같아집니다.\n\n사실, 지금까지 연재된 글에서 등장했던 수식들과도 연결되어 있습니다.\n\n2화에서 배운 **최대 우도 추정(Maximum Likelihood Estimation)** 과, 3화에서 배운 **정규 분포(Normal Distribution)** 입니다.\n\n만약, 직선으로부터의 편차가 평균이 0이고 분산이 일정한 정규 분포를 따르며, 각각 독립이라고 가정한다면, 최대 우도 추정을 통해 구한 직선은 최소 제곱법으로 구한 직선과 일치합니다.\n\n즉,\n- 최대 우도 추정: 관측된 데이터가 가장 발생하기 쉬운 매개변수를 찾는 것\n- 최소 제곱법: 예측값과 실측값의 차이 제곱 합이 가장 작은 매개변수를 찾는 것\n\n겉보기에는 다른 두 가지 생각이, 정규 분포라는 가정 하에서 같은 답에 도달하는 것입니다.\n\n수식은 각각 독립적으로 존재하는 것이 아닙니다.\n\n**하나의 선을 긋는다는 소박한 문제 속에도 통계학, 기계 학습, 그리고 뇌과학으로 이어지는 길이 숨겨져 있습니다.**\n\n세상은 하나의 선처럼 정돈되어 있지 않습니다.\n\n같은 기계로 만든 부품이라도 지름은 조금씩 다릅니다. 실온과의 관계를 조사해 봐도, 측정값은 여기저기 흩어져 있습니다.\n\n그럼에도 우리는, 그 산포(ばらつき) 속에 어떤 경향이 있지 않을까 생각합니다.\n\n선형 회귀는, 그런 복잡한 세상을 단 하나의 직선으로 표현하려 합니다.\n\n그리고 최소 제곱법은, **'차이 제곱의 합이 가장 작은'** 이라는 기준으로 그 직선을 선택합니다.\n\n하지만, 조금 생각해 봅시다.\n\n이 하나의 선은, 원래 세상 어딘가에 숨어 있던 '정답'일까요?\n\n아닙니다.\n\n우리가 '직선으로 표현해 보자'라고 정하고, '차이 제곱으로 평가하자'고 결정했기 때문에, 이 선이 선택된 것입니다.\n\n다른 곡선을 골랐다면? 다른 평가 기준을 사용했다면?\n\n분명히, 다른 답이 나올 것입니다.\n\n그러므로, 선에서 벗어난 점들이 틀린 것은 아닙니다. 하나의 직선으로는 표현할 수 없는 것이 그곳에 남아 있는 것입니다.\n\n**수식은 세계 그 자체가 아닙니다. 세상을 이해하기 위해 우리가 만든 모형(Model)입니다.**\n\n하지만, 모형이기 때문에 오히려 쓸모가 있을지도 모릅니다.\n\n복잡한 현실에서 지금 알고 싶은 특징만을 추출할 수 있습니다. 예측하거나, 비교하거나, 새로운 질문을 만들어낼 수 있습니다.\n\n중요한 것은, 하나의 선을 그었다는 사실만이 아닙니다.\n\n**왜 그 선을 선택했는지. 그리고, 그 선으로는 무엇이 보이지 않는지.**\n\n그것을 잊지 않는다면, 단 하나의 직선으로도 세상을 조금 더 깊이 읽을 수 있습니다.\n\n저는 또 하나, 세상 보는 법을 얻었습니다.
본 문서는 ChatGPT 6.0 Sol을 사용하여 구성안, 초안 작성, 데모 생성, 내용 검토 등을 진행했습니다.
다만, 기사 자체의 내용은 본문 저자인 아오키가 직접 수정했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기