데이터 과학

회귀 분석의 이해

흩어진 점들 사이로 선 하나를 긋습니다.
그 선이 아직 보지 못한 값을 알려 줍니다.

학습 목표

  1. 회귀 분석이 독립 변수와 종속 변수의 관계를 수식으로 나타내는 방법임을 설명할 수 있다.
  2. 독립 변수의 개수에 따라 단순 선형 회귀 분석과 다중 선형 회귀 분석을 구별할 수 있다.
  3. 회귀식의 기울기와 절편이 각각 무엇을 뜻하는지 데이터의 맥락에 맞게 해석할 수 있다.
  4. 로지스틱 회귀 분석이 범주형 값을 예측하는 데 쓰이는 까닭을 설명할 수 있다.

왜 하필 「회귀」라는 이름일까?

회귀(回歸)는 「돌아간다」는 뜻입니다. 예측하는 일에 왜 이런 이름이 붙었을까요?

19세기 영국의 학자 프랜시스 골턴(Francis Galton)은 부모의 키와 그 자녀의 키를 아주 많이 모아 나란히 놓아 보았습니다. 키가 큰 부모에게서 큰 자녀가 태어나는 경향은 분명히 있었습니다. 그런데 그가 눈여겨본 것은 그 경향의 세기였습니다.

골턴이 발견한 것

아주 큰 부모의 자녀는 부모보다는 작은 편이었고, 아주 작은 부모의 자녀는 부모보다는 큰 편이었습니다. 양쪽 끝이 모두 전체 평균 쪽으로 되돌아가는 것처럼 보였습니다. 골턴은 이 「되돌아감」을 regression이라 불렀습니다.

부모 평균 키(가로) · 자녀 키(세로) 부모와 키가 똑같아지는 선 실제 데이터가 그리는 선

파란 선이 회색 점선보다 덜 기울어져 있습니다. 오른쪽 끝에서는 파란 선이 점선보다 아래에 있고, 왼쪽 끝에서는 점선보다 위에 있습니다. 이 「덜 기울어짐」이 골턴이 본 평균으로의 되돌아감입니다.

이름만 남았습니다

오늘날의 회귀 분석은 평균으로 되돌아가는 현상을 연구하는 방법이 아닙니다. 골턴이 두 속성을 하나의 함수 관계로 이어 본 그 방식이 널리 쓰이면서, 속성과 속성 사이를 수식으로 잇는 일 전체를 회귀 분석이라 부르게 되었습니다. 이름은 유래일 뿐이니 「회귀 = 평균으로 돌아감」으로 외우지 마세요.

회귀 분석은 무엇을 하는 일일까?

속성을 넣는 쪽과 얻는 쪽으로 나누는 데에서 시작합니다.

회귀 분석(regression analysis)은 데이터가 가진 속성들을 독립 변수와 종속 변수로 나누고, 두 쪽에 관련이 있다고 보고 그 관계를 하나의 수식으로 만드는 분석 방법입니다. 수식이 만들어지면 표에 없던 값을 넣어 답을 구할 수 있습니다. 이때 나오는 답은 숫자입니다.

독립 변수(independent variable)

수식에 넣는 쪽입니다. 우리가 이미 알고 있는 값이고, 보통 x로 씁니다. 하나일 수도 있고 여럿일 수도 있습니다.

종속 변수(dependent variable)

수식에서 얻는 쪽입니다. 우리가 알고 싶은 값이고, 보통 y로 씁니다. 이 수업에서 다루는 회귀 분석에서는 하나입니다.

「독립」과 「종속」은 원인과 결과라는 뜻이 아닙니다

이름만 보면 독립 변수가 원인이고 종속 변수가 결과인 것처럼 읽힙니다. 그러나 이 둘은 어느 쪽을 넣고 어느 쪽을 예측할지 우리가 정한 것일 뿐입니다. 같은 데이터에서 x와 y를 서로 바꾸어 회귀 분석을 해도 계산은 문제없이 됩니다. 다만 그때 나오는 식은 원래의 식과 다릅니다. 어느 쪽의 오차를 줄이는지가 달라지기 때문입니다. 무엇이 무엇의 원인인지는 데이터가 아니라 사람이 따로 판단해야 합니다.

중고 자전거의 값을 예측해 봅시다

중고 거래 앱에 올라온 자전거 여섯 대를 모았습니다. 얼마나 오래 탔는지와 얼마에 팔렸는지를 나란히 적어 두었습니다. 우리가 알고 싶은 것은 「4년쯤 탄 자전거는 얼마쯤 받을 수 있을까」입니다.

사용 연수(년) — 독립 변수 x 1 2 3 4 5 6
거래 가격(만 원) — 종속 변수 y 41 30 28 22 12 11

수업에서 원리를 확인하려고 지어낸 값입니다.

실제 거래된 자전거 6대 여섯 점을 대표하는 직선

직선에 아주 가까운 점도 있지만, 여섯 점 모두 직선에서 조금씩 어긋나 있습니다. 그래도 직선은 여섯 점의 흐름을 하나의 규칙으로 요약해 줍니다. 이 직선의 식이 y = −6x + 45 입니다. 여기서는 그런 직선이 있다는 것과, 그 직선을 어떻게 읽는지만 다룹니다.

3년 반 탄 자전거는 얼마쯤 받을까?

x 자리에 3.5를 넣으면 y = −6 × 3.5 + 45 = 24(만 원)입니다. 표에는 3.5년짜리 자전거가 없었지만, 수식이 있으니 답을 낼 수 있습니다. 이것이 회귀 모델을 만드는 이유입니다.

스스로 확인

같은 식에 x = 8을 넣으면 얼마가 나오나요? 직접 계산해 보세요. 가격이 음수가 나왔을 것입니다. 자전거를 넘기면서 돈을 얹어 준다는 뜻일까요? 우리가 모은 데이터의 사용 연수는 1년부터 6년까지였다는 점을 떠올려 보세요.

독립 변수가 하나뿐이라면?

회귀 분석은 독립 변수가 몇 개인가로 나뉩니다.

독립 변수 하나로 종속 변수 하나를 예측하고, 그 관계를 직선으로 나타내는 것을 단순 선형 회귀 분석(simple linear regression)이라고 합니다. 방금 본 자전거 모델이 바로 여기에 해당합니다.

y = a x + b

a = 기울기  ·  b = 절편  ·  이 둘을 묶어 회귀 계수라고 부릅니다

회귀 분석이 하는 일은 결국 a와 b라는 두 숫자를 정하는 일입니다. 두 숫자만 정해지면 모델이 완성되고, 그다음부터는 x를 넣기만 하면 됩니다. 자전거 모델은 a = −6, b = 45 였습니다. 각각을 읽어 봅시다.

기울기 a = −6

x가 1 늘어날 때 선의 높이가 6만큼 내려간다는 뜻입니다. 데이터의 말로 옮기면 — 「사용 연수가 1년 더 긴 자전거는 평균 6만 원 낮은 값에 거래되는 경향이 있다」 입니다. 기울기가 음수면 오른쪽으로 갈수록 값이 내려갑니다.

절편 b = 45

x가 0일 때의 y값, 즉 선의 높이를 맞춰 주는 숫자입니다. 여기서는 「산 지 얼마 안 된 자전거의 값」쯤으로 읽고 싶어지지만, 우리 데이터에는 사용 연수 0년짜리가 없었습니다. 선을 데이터 밖까지 늘였을 때 나온 값이므로 참고값으로만 두어야 합니다.

「1년 지나면 6만 원씩 떨어진다」고 말하지 않기

이렇게 말하면 한 대의 자전거가 시간이 흐르며 값을 잃는 이야기가 됩니다. 그러나 우리가 측정한 것은 서로 다른 여섯 대를 나란히 놓고 비교한 결과입니다. 한 대를 6년 동안 지켜본 것이 아닙니다. 그러니 「1년 더 오래 탄 자전거가 6만 원 싸더라」가 정확한 표현입니다. 관찰한 데이터를 변화의 이야기로 바꿔 읽는 것은 회귀 분석에서 흔한 실수입니다.

직접 해 보고 싶다면

학생의 공부 시간과 시험 점수가 담긴 공개 데이터가 있습니다. 공부 시간 하나로 점수를 예측한다면 그것도 단순 선형 회귀 분석입니다.
kaggle.com/datasets/kamleshsam/student-scores

독립 변수를 더 넣으면 어떻게 될까?

자전거 값을 정하는 것이 사용 연수뿐일까요?

같은 5년짜리 자전거라도 거의 안 탄 것과 매일 통학한 것은 값이 다릅니다. 사용 연수 말고 총 주행 거리도 함께 넣으면 예측이 나아질 것 같습니다. 이렇게 두 개 이상의 독립 변수로 하나의 종속 변수를 예측하는 것을 다중 선형 회귀 분석(multiple linear regression)이라고 합니다.

y = (계수 × 독립 변수) + (계수 × 독립 변수) + … + b

독립 변수 하나마다 회귀 계수가 하나씩 붙고, 절편 b는 끝에 하나만 붙습니다

자전거 데이터에 주행 거리를 더해 만든 모델

가격 = 48 − 4 × 사용 연수 − 0.003 × 주행 거리(km)

3년 동안 2,000 km를 탄 자전거라면 48 − 12 − 6 = 30(만 원)으로 예측됩니다.

수업에서 원리를 확인하려고 지어낸 값입니다.

사용 연수의 계수가 −6에서 −4로 바뀌었습니다

앞의 단순 회귀에서는 −6이었는데, 주행 거리를 넣자 −4가 되었습니다. 계산을 틀린 것이 아닙니다. 두 계수는 뜻하는 바가 다릅니다.

  • 단순 회귀의 −6 — 오래 탄 자전거는 대개 주행 거리도 깁니다. 그래서 −6 안에는 주행 거리가 긴 자전거의 낮은 값까지 섞여 있습니다.
  • 다중 회귀의 −4 — 주행 거리가 같은 자전거끼리만 비교했을 때 사용 연수가 1년 더 긴 자전거와의 값 차이입니다. 겹치던 몫이 주행 거리 쪽으로 떨어져 나간 것입니다.

다중 회귀의 계수는 「다른 변수를 모두 같은 값으로 두었을 때」라는 단서를 붙여서 읽어야 합니다. 그 단서를 빼고 읽으면 뜻이 달라집니다.

계수의 크기로 중요도를 비교하지 않기

사용 연수의 계수는 −4이고 주행 거리의 계수는 −0.003입니다. 그렇다고 사용 연수가 훨씬 중요한 것은 아닙니다. 단위가 다르기 때문입니다. 자전거끼리 사용 연수는 몇 년 차이에 그치지만 주행 거리는 수천 km씩 차이 납니다. 계수의 크기만 보고 순위를 매기면 틀리기 쉽습니다.

그림으로 그리면 무엇이 될까

독립 변수가 하나면 평면 위의 직선이었습니다. 독립 변수가 둘이면 가로 · 세로 · 높이 세 축이 필요하므로 공간 속의 평면이 됩니다. 셋 이상이면 더 이상 그림으로 그릴 수 없습니다. 수식은 똑같이 잘 돌아가지만, 눈으로 확인할 수단이 사라진다는 점은 기억해 둘 만합니다.

스스로 확인

자전거 값을 예측하려고 「자전거 색깔」을 독립 변수로 하나 더 넣었습니다. 모델은 문제없이 계수를 하나 더 만들어 냅니다. 독립 변수를 많이 넣을수록 좋은 모델이 될까요? 넣기 전에 무엇을 검토해야 할지 이야기해 보세요.

답이 숫자가 아니라 「예/아니오」라면?

답이 범주인 분류 문제를 회귀의 방법으로 풀어 봅니다.

지금까지 회귀 모델이 내놓은 답은 모두 숫자였습니다. 24만 원, 30만 원처럼 그 사이의 어떤 값도 될 수 있는 값이었습니다. 그런데 우리가 알고 싶은 것이 「이 자전거가 3개월 안에 팔릴까, 안 팔릴까」라면 어떨까요? 답은 둘 중 하나여야 합니다. 「0.7만큼 팔림」 같은 답은 뜻이 없습니다.

범주형(categorical) 값

미리 정해진 몇 개 중 하나만 될 수 있는 값을 범주형 값이라고 합니다. 그 사이의 값은 존재하지 않습니다. 불량품 개수처럼 중간값이 없는 수치형 데이터를 이산형이라고 부르기도 하지만, 개수는 크기를 비교하고 더할 수 있는 수치라서 여기서 말하는 범주형 값과 다릅니다.

  • 둘 중 하나 — 0 또는 1, 합격 또는 불합격, 스팸 또는 스팸이 아닌 것
  • 셋 이상 중 하나 — 적합 · 보통 · 부적합, 낮음 · 중간 · 높음

직선을 그대로 쓰면 왜 안 될까

「팔림」을 1, 「안 팔림」을 0으로 두고 직선을 그어 봅시다. 직선은 위아래로 끝없이 뻗어 나가므로 예측값이 1.4나 −0.3도 될 수 있습니다. 「1.4만큼 팔린다」는 말은 뜻이 없습니다. 그러니 0과 1 사이에 가둬 두는 장치가 필요합니다.

시그모이드 함수가 값을 접어 넣습니다

로지스틱 회귀 분석(logistic regression)은 직선이 내놓은 수치를 시그모이드(sigmoid) 함수에 한 번 통과시킵니다. 이 함수는 아무리 큰 수를 넣어도 1을 넘지 않고, 아무리 작은 수를 넣어도 0 아래로 내려가지 않습니다. 그래서 결과를 확률로 읽을 수 있습니다.

시그모이드 곡선 — 위로는 1, 아래로는 0에 붙습니다 확률 0.5 — 두 답을 나누는 기준선

곡선이 0.5를 지나는 지점에서 판정이 뒤바뀝니다. 확률이 0.5보다 크면 한쪽으로, 작으면 다른 쪽으로 판정합니다.

사용 연수 올린 가격 직선이 내놓은 값 시그모이드를 지난 확률 판정
1년 40만 원 2.1 0.89 팔린다
3년 35만 원 0.8 0.69 팔린다
4년 33만 원 −0.4 0.40 안 팔린다
6년 30만 원 −2.3 0.09 안 팔린다

수업에서 원리를 확인하려고 지어낸 값입니다.

가운데 두 줄을 보세요. 직선이 내놓은 값은 0.8과 −0.4로 1.2밖에 차이 나지 않는데, 확률로 바뀌자 0.69와 0.40이 되어 판정이 달라졌습니다. 0.5 근처에서는 작은 차이가 답을 바꾸고, 양 끝으로 갈수록 웬만한 차이로는 답이 바뀌지 않습니다.

이름에 「회귀」가 들어 있지만 하는 일은 분류입니다

로지스틱 회귀는 확률이라는 숫자를 구하는 단계까지가 회귀를 닮았고, 그 확률로 범주를 나누는 마지막 단계가 분류입니다. 회귀를 먼저 배운 사람이 분류로 넘어가기에 자연스러운 다리라서, 보통 회귀 분석을 익힌 다음에 배웁니다.

다만 분류가 회귀의 한 종류라는 뜻은 아닙니다. 회귀가 내놓는 답은 숫자이고 분류가 내놓는 답은 범주라는 구별은 그대로입니다. 로지스틱 회귀는 둘을 잇는 방법 하나일 뿐이고, 분류에는 이 밖에도 의사결정트리 · 인공신경망 같은 방법이 따로 있습니다. 범주가 셋 이상일 때 쓰도록 넓힌 로지스틱 회귀도 있습니다.

메일

스팸인지 아닌지 구분한다

금융

고객의 신용을 우수와 불량으로 나눈다

의학

검사 수치로 질병이 있는지 예측한다

움직이는 것으로 보고 싶다면

로지스틱 회귀 시뮬레이터에서 점을 두 무리로 찍고 경계가 어떻게 잡히는지 볼 수 있습니다. 직선이라면 1을 넘어갔을 값이 어떻게 0과 1 사이로 접히는지 눈여겨보세요.

직접 해 보고 싶다면

두 과목의 점수와 합격 여부가 함께 담긴 공개 데이터가 있습니다. 점수 두 개를 독립 변수로, 합격 여부를 종속 변수로 두면 로지스틱 회귀 분석의 예가 됩니다.
kaggle.com/datasets/abhishekdhule/exam-marks-of-two-subjectclassification-passfail

회귀 분석은 어디에 쓰일까?

묻는 방식은 달라 보여도 세 갈래로 모입니다.

얼마나 될까

아직 값을 모르는 대상에 대해 숫자를 내놓습니다. 회귀 분석이 가장 흔히 쓰이는 방식입니다. 다음 달 전기 사용량, 내일 방문객 수 같은 것들입니다.

어떻게 변해 왔나

시간을 독립 변수 자리에 두면, 값이 길게 보아 오르는 중인지 내리는 중인지가 선 하나로 요약됩니다. 이렇게 흐름을 읽는 것을 추세 분석이라고 합니다.

무엇이 얼마나 관련될까

여러 속성을 함께 넣어 각 속성이 결과와 어떤 관계인지 살펴봅니다. 예측보다 이해가 목적일 때 쓰는 방식입니다.

어떤 물음이 회귀 분석이 될까

회귀 분석을 설계한다는 것은 결국 무엇을 독립 변수 자리에 놓고 무엇을 종속 변수 자리에 놓을지 정하는 일입니다. 아래 표를 소리 내어 읽어 보면 감이 잡힙니다.

알고 싶은 것 독립 변수 — 넣는 값 종속 변수 — 얻는 값
급식 재료를 얼마나 준비할까 요일, 메뉴 종류, 그날 등교한 학생 수 남는 음식의 양
이 지역 집값은 얼마쯤 할까 면적, 층수, 가장 가까운 역까지의 거리, 지은 지 몇 해 거래 가격
내일 자전거를 몇 대 둘까 기온, 강수량, 요일, 공휴일 여부 대여 건수
이 약을 얼마나 써야 할까 투여량, 나이, 몸무게, 앓아 온 기간 증상이 나아진 정도
스스로 확인

표에서 하나를 골라 독립 변수를 하나 더 보태 보세요. 그리고 그 회귀 모델이 예측을 아주 잘 맞히더라도 「이것이 저것의 원인이다」라고 말할 수 없는 까닭을 설명해 보세요.

핵심 정리

회귀 분석

regression analysis

  • 속성을 독립 변수와 종속 변수로 나눈다
  • 둘의 관계를 수식으로 만들어 숫자를 예측한다
  • 이름은 골턴의 「평균으로 되돌아감」에서 왔지만 뜻은 넓어졌다
  • 계산은 프로그램이 해도, 결과를 인과로 읽어도 되는지는 사람이 판단한다

단순 선형 회귀 분석

simple linear regression

  • 독립 변수가 하나. y = ax + b
  • a와 b를 묶어 회귀 계수라고 한다
  • 기울기는 비교 화법으로, 절편은 참고값으로 읽는다

다중 선형 회귀 분석

multiple linear regression

  • 독립 변수가 둘 이상. 계수도 그만큼 늘어난다
  • 계수는 「다른 변수를 같게 두었을 때」를 붙여 읽는다
  • 단위가 다르므로 계수 크기로 중요도를 비교하지 않는다

로지스틱 회귀 분석

logistic regression

  • 종속 변수가 범주형일 때 쓴다
  • 시그모이드 함수가 값을 0~1 확률로 접어 넣는다
  • 이름은 회귀지만 하는 일은 분류다

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

회귀 분석에서 우리가 알고 싶어서 예측하려는 쪽의 변수를 무엇이라고 하나?

Q2

중고 자전거 모델 y = −6x + 45(x는 사용 연수, y는 가격)에서 기울기 −6을 가장 정확하게 읽은 것은?

Q3

사용 연수만 쓴 모델에서는 계수가 −6이었는데, 주행 거리를 함께 넣자 −4가 되었습니다. 그 까닭은?

Q4

로지스틱 회귀 분석에서 시그모이드 함수가 하는 일은?

Q5

로지스틱 회귀 분석에 대한 설명으로 옳은 것은?