Code › ai-engineering-study
로지스틱 회귀와 결정 경계
선형회귀가 분류에 맞지 않는 이유와 로지스틱 회귀가 확률로 클래스를 나누는 과정
오늘은 저번부터 소화를 못하고 묵혀두었던 주제에 대해서 써보려 한다. 사실 시간이 좀 지나서, 실시간 수업을 들으면서 속기로 정리한 노트 내용도 잘 떠오르지 않았는데 검색도 해보고 특히 코드잇 강의로 제공되는 것을 들으면서 다시 정리 해보았다! 정리한 것이 내가 100% 이해한 것이라고 보기는 힘들지만, 일단 정리해 두고 이걸 계속 곱씹으면서 보고 수정하고 반복적으로 보다보면 학습 효과가 있다고 본다.
로지스틱 회귀의 기본 구조
먼저 로지스틱 회귀는 이름 때문에 선형 회귀처럼 연속적인 숫자를 예측하는 회귀 문제라고 생각하기 쉬운데, 그런데 실제로는 스팸인지 아닌지, 종양이 악성인지 아닌지처럼 정답이 0과 1로 나뉘는 분류 문제에 사용한다.
선형회귀에서는 직선으로 숫자 값을 예측했다면, 로지스틱 회귀에서는 먼저 선형식으로 점수를 계산하고 그 결과를 확률로 바꾼다. 강사님은 이 과정을 서로 다른 데이터를 구분하는 선형 경계선을 찾고, 그 경계선을 기준으로 특정 카테고리일 확률을 예측하는 두 단계로 설명했다.
이름은 회귀인데 왜 분류일까
로지스틱 회귀는 처음부터 스팸이나 정상 같은 범주를 직접 출력하지 않고, 먼저 스팸일 확률을 0.92 또는 0.37 같은 숫자로 계산한다. 이처럼 확률이라는 숫자를 먼저 구하기 때문에 이름에는 회귀가 들어간다.
다만 계산한 확률을 그대로 답으로 사용하지 않고 기준값이 0.5라면, 스팸 확률이 0.5 이상일 때 스팸, 미만일 때 정상으로 나누므로 최종적으로 해결하는 문제는 분류라고 볼 수 있다.
이메일의 특징
→ 스팸일 확률 계산
→ threshold와 비교
→ 스팸 또는 정상으로 분류
선형회귀는 집값 8.2억 원처럼 숫자 예측 자체가 최종 결과다. 반면 로지스틱 회귀는 스팸 확률 0.92를 계산한 뒤 스팸이라는 범주를 선택하므로, 이름에는 회귀가 들어가지만 머신러닝 문제의 종류로는 분류에 해당한다.
왜 선형회귀를 분류에 그대로 쓰지 않을까
선형회귀의 예측값에 0.5라는 기준을 두면 0과 1을 분류할 수는 있다. 하지만 선형회귀는 예측값의 범위가 제한되지 않고, 입력 범위에서 멀리 떨어진 데이터 하나가 회귀 직선과 분류 기준을 크게 움직일 수 있다.
예를 들어 입력 와 정답 가 다음처럼 주어졌다고 하자.
| 1 | 2 | 3 | 4 | |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 |
이 데이터에 최소제곱 선형회귀를 적용하면 다음 직선을 얻는다.
예측값이 0.5 이상이면 1로 분류한다고 할 때 경계는 이고, 네 데이터를 모두 올바르게 나눈다. 다만 의 예측값은 -0.1, 의 예측값은 1.1이므로 처음부터 확률의 범위인 0과 1을 벗어난다.
여기에 정답이 1인 데이터 을 하나 추가해보자. 기존 직선을 까지 연장하면 예측값은 7.5가 되고 실제 정답 1과 큰 차이가 난다. 선형회귀는 이 차이를 제곱한 오차를 줄이기 위해 직선을 크게 눕히며, 다시 학습한 식은 대략 다음과 같이 바뀐다.
이제 0.5 기준이 되는 위치는 약 로 이동하고, 원래 정답이 1이었던 의 예측값은 약 0.492가 되어 0으로 잘못 분류된다. 여기서 큰 값에 민감하다는 말은 정답 가 크다는 뜻이 아니라, 처럼 다른 입력들과 멀리 떨어진 데이터가 직선의 기울기와 절편에 큰 영향을 준다는 뜻이다.
로지스틱 회귀는 선형 점수를 시그모이드에 넣어 예측을 0과 1 사이로 제한한다. 정답이 1인 데이터가 경계에서 충분히 멀리 떨어지면 예측 확률은 1에 가까워지고 손실도 작아지므로, 선형회귀처럼 그 점의 출력값을 정확히 1에 맞추려고 직선을 눕힐 필요가 없다.
물론 로지스틱 회귀도 이상치나 잘못된 라벨의 영향을 전혀 받지 않는 것은 아니다. 다만 출력이 확률 범위 안에 있고, 분류에 맞는 손실 함수를 사용한다는 점에서 선형회귀에 임의의 threshold를 붙이는 방식보다 분류 문제에 적합하다.
선형 점수 z가 의미하는 것
입력 특징이 이고 가중치가 , 편향이 라면 선형 결과는 다음과 같이 계산한다.
특징이 두 개인 경우에는 다음과 같이 쓸 수 있다.
을 만족하는 점들을 연결하면 두 카테고리를 나누는 경계가 된다.
특성이 하나일 때
공부 시간 로 시험 통과 여부를 예측한다고 하자. 학습된 로지스틱 회귀 모델이 다음과 같다면,
threshold가 0.5일 때 결정 경계는 가 되는 지점이다. 시그모이드는 입력이 0일 때 0.5를 출력하므로 다음 식을 풀면 된다.
따라서 이 모델은 공부 시간이 47시간일 때 통과 확률을 0.5로 계산한다. 의 계수가 양수이므로 47시간보다 크면 확률이 0.5보다 높아져 통과로, 작으면 탈락으로 분류한다. 여기서 47은 사람이 미리 정한 값이 아니라, 학습된 가중치와 편향으로부터 계산된 경계다.
특성이 두 개일 때
이번에는 공부 시간을 , 모의고사 점수를 라고 하자. 학습을 마친 모델의 선형 점수가 다음과 같다고 가정한다.
threshold가 0.5라면 결정 경계에서는 이므로 다음 관계식이 나온다.
이를 에 대해 정리하면 다음과 같다.
이 식은 과 의 답을 하나씩 구하는 방정식이 아니다. 학습이 끝난 뒤 , 2, 1이라는 파라미터는 고정되고, 식을 만족하는 모든 공부 시간과 모의고사 점수의 조합이 하나의 직선을 만든다.
예를 들어 공부 시간이 20시간이면 경계 위의 모의고사 점수는 60점이고, 공부 시간이 30시간이면 40점이다. 이 점들을 연결한 직선이 결정 경계가 된다. 이 예시에서는 직선 위쪽의 점은 이라 통과 확률이 0.5보다 높고, 아래쪽은 이라 탈락 확률이 더 높다.
특성이 세 개라면 이 3차원 공간의 평면을 만들고, 특성이 더 많으면 직접 그리기 어려운 초평면(hyperplane)이 된다. 원래 특성을 선형 결합하는 로지스틱 회귀의 경계는 직선이나 평면이지만, 다항 특성을 추가하면 곡선 형태의 경계도 만들 수 있다.
는 입력 에 대해 모델이 계산한 선형 점수다. 가 양수인지 음수인지에 따라 입력이 결정 경계의 어느 쪽에 있는지가 정해지고, 이면 입력이 결정 경계 위에 있다.
입력 에서 결정 경계까지의 부호 있는 수직 거리는 다음과 같이 계산한다.
따라서 자체는 거리가 아니다. 같은 결정 경계를 나타내더라도 와 에 같은 상수를 곱하면 의 크기는 달라질 수 있기 때문이다. 가중치 벡터의 크기 로 나눠야 경계까지의 실제 수직 거리가 되며, 나눈 결과의 부호는 경계의 어느 쪽에 있는지를 나타낸다.
결정 경계는 로지스틱 회귀에만 사용하는 개념이 아니다. 분류 모델이 서로 다른 클래스를 나누는 기준이 되는 선이나 면, 곡면을 결정 경계라고 부른다.
시그모이드로 점수를 확률로 바꾸기
선형식의 결과인 는 음의 무한대부터 양의 무한대까지 나올 수 있다. 이 값을 0과 1 사이로 바꾸는 함수가 시그모이드(sigmoid) 함수다.
의 값에 따라 출력은 다음처럼 달라진다.
| 선형 점수 | 시그모이드 출력 |
|---|---|
| 0.5보다 작음 | |
| 0.5 | |
| 0.5보다 큼 | |
| 0에 가까워짐 | |
| 1에 가까워짐 |
로지스틱 회귀의 가설 함수는 선형 점수를 시그모이드에 넣은 형태다.
여기서 실제 정답 는 0 또는 1이지만, 모델의 예측값 는 0부터 1 사이의 확률이다. 예를 들어 라면 모델은 해당 데이터가 positive class일 확률을 0.9로 예측한 것이다.
확률을 최종 분류 결과로 바꿀 때는 threshold를 사용한다. threshold가 0.5라면 예측 확률이 0.5 이상일 때 1, 미만일 때 0으로 분류한다. 이 경우 이므로 이 결정 경계가 된다. threshold를 바꾸면 같은 확률을 두고도 최종 분류 결과가 달라질 수 있다.
로지스틱 회귀는 선형 점수 자체를 답으로 사용하지 않고, 시그모이드를 거쳐 확률로 바꾼 뒤 threshold와 비교한다. 학습된 가중치와 편향이 결정 경계를 만들고, 입력이 그 경계의 어느 쪽에 있는지에 따라 최종 분류가 달라진다.
선형 점수 와 경계까지의 실제 거리가 같지 않다는 점도 이번에 함께 정리했다. 아직 수식이 한 번에 익숙해지지는 않지만, 특성이 하나일 때의 기준점부터 두 개일 때의 직선까지 순서대로 놓고 보니 결정 경계가 무엇을 뜻하는지는 이전보다 분명해졌다.