개요

여기까지가 “머신러닝이란 무엇인가”였다면, 이제부터는 “그래서 어떻게 만드나”로 넘어간다. 방법론 편의 첫 타자는 선형회귀다.

가장 오래됐고 가장 단순한 모델이라 “일단 배우고 넘어가는 것” 정도로 생각했는데, 정리해보니 그게 아니었다. 지금부터 나올 모든 모델의 뼈대가 여기 다 들어 있다. 로지스틱회귀도 속을 열어보면 선형회귀가 들어 있고, 신경망도 결국 선형 계산을 겹겹이 쌓은 것이다.

그리고 선형회귀에는 다른 모델이 못 가진 특권이 하나 있다. 계수를 사람이 읽을 수 있다. 예측만 하는 게 아니라 “무엇이 결과에 영향을 주는가”를 문장으로 말해준다.


1. 선형회귀 — 가장 기초가 되는 방법

선형회귀(Linear Regression) = 입력과 출력의 관계를 직선 형태로 근사해서 예측하는 방법

지도학습에서 가장 기초가 되는 접근이고, 단순해 보이지만 개념적으로도 실무적으로도 여전히 아주 유용하다.

광고비와 매출 관계를 예로 들면, 선형회귀는 이런 질문들에 답한다.

  • 광고비와 매출 사이에 관계가 있는가?
  • 그 관계의 강도는 어느 정도인가?
  • 어떤 매체가 매출에 기여하는가?
  • 미래 매출을 얼마나 정확히 예측할 수 있는가?

질문 목록이 마음에 들었다. 예측만 하는 게 아니라 “관계를 이해하는” 도구라는 게 드러난다.


2. 단순선형회귀

설명변수가 하나일 때다. 식은 이렇게 생겼다.

Y = β₀ + β₁X + ε

무섭게 생겼지만 중학교 때 배운 y = ax + b와 똑같다. 이름만 다르다.

기호 읽는 법
β₀ 베타 제로 절편. X가 0일 때의 Y 값
β₁ 베타 원 기울기. X가 1 늘 때 Y가 평균 얼마나 변하는지
ε 엡실론 관측 오차

여기서 β₁이 실무적으로 제일 중요하다. “광고비를 1 늘리면 매출이 평균 얼마 오르는가”를 바로 답해주기 때문이다.

모자(hat)의 의미

추정한 값에는 모자를 씌운다.

  • β₁ : 세상에 실제로 존재하는 진짜 기울기 (우리는 모른다)
  • β̂₁ : 데이터로부터 추정한 기울기 (우리가 계산한 값)

지난 글에서 나온 “참 함수는 볼 수 없다”가 여기서도 그대로 이어진다. 우리가 구하는 건 언제나 추정치다.


3. 최소제곱법 — 어떤 직선이 최고인가

데이터를 지나가는 직선은 무수히 많다. 그중 하나를 어떻게 고르나?

최소제곱법

기준은 잔차(residual)다.

잔차 = 실제값 − 예측값

각 데이터 점에서 직선까지의 세로 거리다. 이걸 전부 제곱해서 더한 값을 RSS(잔차제곱합)라고 한다.

최소제곱법(Least Squares) = RSS가 가장 작아지는 직선을 고르는 방법

그림에서 연한 사각형이 각 잔차를 제곱한 넓이다. 그 넓이의 총합이 가장 작아지는 선을 찾는 것이라고 보면 직관적이다.

왜 하필 제곱인가 (또 나왔다)

지난 글 MSE에서와 똑같은 이유다. 부호를 없애고, 크게 빗나간 걸 더 크게 벌주기 위해서. 머신러닝에서 제곱이 자꾸 나오는 이유가 이거다.

놀라운 사실 — 공식으로 바로 풀린다

단순선형회귀에는 닫힌 해(closed-form solution)가 존재한다. 즉 한 방에 계산되는 공식이 있다.

기울기 β̂₁는 이런 모양이다.

        Σ (Xᵢ − X평균)(Yᵢ − Y평균)
β̂₁ = ──────────────────────────
            Σ (Xᵢ − X평균)²

기호가 많아 보이지만 말로 옮기면 단순하다.

  • 분자 — “X가 평균보다 큰 데이터는 Y도 평균보다 큰가?”를 전부 더한 값. 같이 움직이는 정도
  • 분모 — X가 평균에서 얼마나 퍼져 있는지. X 혼자 흩어진 정도

“둘이 같이 움직이는 정도를, X가 혼자 움직이는 정도로 나눈 것”이다. X가 1 변할 때 Y가 얼마나 변하는지를 재는 것이니 기울기가 맞다.

절편은 더 간단하다. 구한 기울기를 가지고 직선이 데이터 평균점을 지나도록 높이를 맞춘다.

여기가 인상 깊었다. 답을 찾아 헤맬 필요 없이 공식에 넣으면 끝나는 문제가 있다는 것. 하지만 이건 선형회귀라서 가능한 특권이고, 모델이 조금만 복잡해져도 이 공식이 사라진다. 그때 등장하는 게 뒤에 나올 경사 하강법이다.


4. 결과를 어떻게 읽는가

회귀를 돌리면 이런 표가 나온다. 실제 분석 도구가 뱉는 형식이다.

  Coefficient Std. Error t-statistic p-value
Intercept 7.03 0.46 15.4 < 0.0001
광고비 0.0475 0.0027 17.7 < 0.0001

한 칸씩 읽어보자.

Coefficient (계수)

  • 절편 7.03 → 광고비가 0이어도 기본 매출이 7.03 정도는 나온다
  • 기울기 0.0475 → 광고비를 1단위 늘리면 매출이 평균 0.0475단위 오른다

이 두 줄이 회귀 분석의 결론이다. 나머지는 “이 결론을 믿어도 되는가”를 따지는 숫자들이다.

Std. Error (표준오차)

추정치가 얼마나 흔들리는지를 나타낸다. 데이터를 다시 모아서 다시 계산하면 값이 조금씩 달라질 텐데, 그 흔들림의 크기다. 작을수록 믿을 만하다.

t-statistic

계수가 그 흔들림에 비해 얼마나 큰가를 나타낸 값이다.

“0.0475만큼 올랐다”는 결과가 있어도, 흔들림이 ±0.05라면 사실 아무 관계가 없는데 우연히 그렇게 보인 것일 수 있다. 반대로 흔들림이 ±0.0027이라면 진짜 효과다.

신호를 잡음으로 나눈 값이다. 크면 클수록 “우연이 아니다”라는 뜻이 된다.

p-value

이게 실무에서 제일 많이 보는 숫자다.

p-value = “사실은 아무 관계도 없는데, 순전히 우연으로 이 정도 결과가 나올 확률”

이 값이 작을수록 우연으로 보기 어렵다는 뜻이고, 보통 0.05보다 작으면 “통계적으로 유의하다”고 본다.

위 표에서 광고비의 p-value는 0.0001보다 작다. 우연히 이런 결과가 나올 확률이 만분의 일도 안 된다는 뜻이니, 광고비와 매출 사이에 관계가 있다고 봐도 된다.

더 쉬운 비유로. 동전을 10번 던져 앞면이 7번 나왔다면 “그럴 수도 있지”다. 그런데 100번 던져 90번 앞면이 나왔다면? “이 동전 이상한데?”가 된다. p-value는 “그냥 우연이라기엔 너무 심한데?”의 정도를 재는 숫자다.


5. 다중선형회귀

현실에서 매출은 TV 광고비만으로 정해지지 않는다. 라디오, 인터넷, 가격, 계절, 경쟁사까지 얽혀 있다. 설명변수를 여러 개 쓰는 게 다중선형회귀다.

Y = β₀ + β₁X₁ + β₂X₂ + ... + βₚXₚ + ε

각 변수마다 자기 몫의 계수가 하나씩 붙는다. 그림으로는 직선이 평면(hyperplane)으로 바뀐다. 위 그림의 오른쪽이 그거다.

계수 해석이 미묘하게 달라진다

여기서 아주 중요한 차이가 하나 생긴다.

βⱼ의 의미 = 다른 변수를 전부 고정한 채로 Xⱼ가 1 늘 때 Y가 평균적으로 변하는 양

“다른 변수를 고정한 채로”라는 조건이 붙는다. 단순회귀에서는 없던 말이다. TV 광고 계수를 볼 때, 그건 “라디오와 신문 광고비는 그대로 둔 상태에서” TV만 늘렸을 때의 효과다.

실제 결과에서 배운 것

강의에서 본 결과가 재밌었다. TV·라디오·신문 광고비로 매출을 예측했더니,

  • TV, 라디오 → p-value가 아주 작음 (유의미한 관계 있음)
  • 신문 → p-value 0.86 (관계가 거의 없음)

신문 광고는 매출과 통계적으로 무관하다는 결론이 나온 것이다. 예산을 짜는 입장이라면 이 한 줄이 예측값보다 훨씬 값지다.

그리고 설명력을 나타내는 R²는 단순회귀 0.61에서 다중회귀 0.90으로 올랐다. 변수를 늘리니 훨씬 잘 설명하게 된 것이다.

다만 여기엔 함정이 있다. 변수를 늘리면 R²는 거의 항상 올라간다. 쓸모없는 변수를 넣어도 오른다. 그래서 “R²가 올랐으니 좋은 모델”이라고 단정하면 안 되고, 검증 데이터에서의 성능을 봐야 한다. 지난 글의 교차검증이 여기서 쓰인다.


6. 선형회귀의 주의사항 두 가지

① 다중공선성 — 변수끼리 사이가 너무 좋으면

이상적인 상황은 변수들이 서로 독립일 때다. 그럼 계수 해석이 깔끔하다.

문제는 변수들이 서로 강하게 연관되어 있을 때 생긴다. 이걸 다중공선성이라고 한다.

다중공선성

그림의 오른쪽을 보면 문제가 한눈에 보인다. 두 광고비가 항상 같이 움직여서, “TV만 늘리고 온라인은 그대로 둔” 데이터가 아예 없다. 그런데 계수 해석은 “다른 변수를 고정한 채로”를 전제한다. 전제 자체가 데이터에 없는 상황인 것이다.

증상은 두 가지다.

  • 계수 추정이 불안정해진다 — 데이터가 조금만 바뀌어도 계수가 크게 출렁인다
  • 해석이 혼란스러워진다 — 어느 변수의 공인지 나눌 수가 없다

두 사람이 항상 붙어 다니면서 같이 일을 한다고 하자. 성과가 나왔을 때, 누구 덕분인지 나눌 방법이 없다. “A가 다 했다”고 해도 말이 되고 “B가 다 했다”고 해도 말이 된다. 다중공선성이 딱 이 상황이다.

예측 자체는 그럭저럭 될 수 있다. 하지만 “어떤 변수가 중요한가”라는 질문에는 답할 수 없게 된다.

② 상관관계는 인과관계가 아니다

이건 강의에서 강조된 부분이자, 개인적으로 가장 새겨들은 부분이다.

관찰 데이터의 상관관계로 인과관계를 주장해서는 안 된다.

광고비와 매출 데이터는 자연스럽게 인과처럼 보인다. 하지만 선형 관계가 보인다고 해서 원인과 결과인 건 아니다.

유명한 예시가 있다.

아이스크림 소비량 ↑  →  상어에 물리는 사고 ↑

숫자로 보면 상관관계가 뚜렷하다. 그렇다고 아이스크림을 끊으면 상어 사고가 줄어들까? 당연히 아니다. 진짜 원인은 여름이다. 더우면 아이스크림도 많이 먹고, 바다에도 많이 간다.

모델은 “같이 움직인다”까지만 알려준다. “왜”는 사람이 판단해야 한다.

이건 예전에 데이터 시각화를 정리하면서 상관계수 히트맵을 다룰 때도 나온 얘기인데, 회귀에서는 훨씬 위험하다. 히트맵은 그냥 색이지만, 회귀 결과는 “광고비 1억 늘리면 매출 4720만원 증가”처럼 확신에 찬 문장으로 나오기 때문이다. 숫자가 구체적일수록 사람은 더 쉽게 믿는다.


정리

  • 선형회귀 = 입력과 출력의 관계를 직선으로 근사. 예측뿐 아니라 관계 이해의 도구
  • 잔차 = 실제값 − 예측값. 최소제곱법은 잔차 제곱합(RSS)이 가장 작아지는 직선을 고른다
  • 단순선형회귀에는 닫힌 해가 있다. 공식에 넣으면 한 번에 계산된다
  • 결과표에서 계수는 결론, 표준오차·t·p-value는 그 결론을 믿어도 되는지의 근거
  • p-value < 0.05 = “우연이라기엔 너무 뚜렷하다”
  • 다중회귀의 계수는 다른 변수를 고정한 채로의 효과
  • 변수를 늘리면 R²는 거의 항상 오른다. 그러니 검증 데이터 성능을 따로 봐야 한다
  • 다중공선성 — 변수끼리 강하게 얽히면 계수가 불안정해지고 해석이 무너진다
  • 상관관계 ≠ 인과관계. 모델은 “같이 움직인다”까지만 말한다

다음 글에서

다음 글에서는 로지스틱회귀를 다룬다. 같은 직선을 가지고 어떻게 분류를 하는지, 그리고 확률을 다루기 위해 등장하는 오즈·로짓·MLE를 정리한다.

한줄 평

  • 사실 아이스크림을 먹으면 죠스바의 원한으로 상어가 찾아오는게 아닐까..? 라는 상상을 했다 ( 근데 회귀표 값들은 어떻게 구하는 걸까? )