Logistic Regression

2026. 7. 20. 19:20Computer Science/AI(ML, DL, RL, etc)

 

회기할 순 없지만 분류할 순 있다

Odds Raito

Odds는 특정 이벤트가 발생활 확률로, Odds Ratio는 이때 p/(1-p)로 한다. 여기에서 P는 양성(예측 대상)일 확률을 의미한다. 이는 또한 조건부 확률로 생각해 볼 수 있다. 쨋든 여기서 오즈비에 로그 함수를 취하면 logit 함수로 정의가 된다.

 

그리고 logit 함수는 0과 1사이의 입력값을 받아 실수 범위 값으로 변환하게 된다. 이때 입력과 로그 오즈 사이에 선형 관계가 있다고 가정하자, 그러면 logit 함수는 확률을 실수에 매핑하므로 이 함수의 역함수를 사용해 실수 범위를 확률 p에 대한 [0, 1] 범위로 다시 매핑할 수 있다. 이를 Logistic Sigmoid function이라고 한다.

 

참고로 이때 Boundary는 당연히 0.5가 되시겠다.

 

Logistic Regression

그리고 아달린에 Activation Function으로 Sigmoid function을 때려 박은게 Logistic Regression이다. 물론 이름에 Regression이 들어가긴 하지만, 회귀가 아니라 분류 모델이다. 대충 가중치와 절편 파라미터를 활용해서 특성 x에 대한 sigmoid function의 출력을 특정 샘플이 어느 클래스에 속할 확률로 해석하는데, 이 확률로 0/1을 분류하기에 분류모델이다! 요약하자면, 위의 구조를 이용해 w와 b로 p를 회귀로 때려 맞춰서 분류하는 셈.

 

근데 문제는 w와 b(가중치/절편유닛)를 가지고 어케 학습을 시키냔건데. 일단 어떤 데이터가 정답일 확률을 y(hat)이라 하고 아닐 확률을 1-y(hat)이라고 해보자.이 두가지 경우를 조건문 없이 지수적으로 표현하면 아래와 같이 표현 가능하다.

 

이때 데이터가 N개 있다고 할 때, 모든 데이터를 다 맞출 전체 확률은 각각의 곱이 됨으로 아래와 같다.

 

그리고 당연히 L(가능도, Likelyhood)이 좋아야 모델이 좋을 것이다. 다만 문제는 확률의 곱은 0에 수렴해 컴퓨터로 계산하기가 참 뭣해짐으로 양변에 자연 로그를 씌워 덧셈으로 만들어보자.

 

 

근데 여기에 경사 하강법을 때려 박아야 하는데, Gradient Descent는 loss값을 최적화 하는 데에 방안이 있으므로 양변에 -를 곱해서 loss로 만들어주자.

 

 

Loss가 나왔다! 이제 여기에 Gradient Descent를 친절하게 박아주자. 참고로 결과값은 신비하게도 예측오차*입력값이 된다.

 

로 갱신!

 

참 쉽죠?

 

Logistic Regression vs Naive Bayse

간혹 비슷한 친구인 Naive Bayse와 헷갈릴 수 있다. Logistic Regression이 판별을 목적으로 하는 가장 훌륭한 모델을 찾아 삼천리 여행을 떠나는 거라면, Naive Bayse는 "각 특징이 이러한 데이터를 얼마나 표현하는지" 보여주는 생성 모델이다. 또한 Loistic Regression은 각 Feature간의 독립을 상정하지 아니하나, Naive Bayse는 "순진하게(나이브하게)" 각 Feature가 독립이라고 박박 우기고 시작한다.

 

따라서 Naive Bayse는 Lositrc Regression마냥 계산을 미친듯이 돌릴 필요가 없어서 유용하나, 세상의 각 Feature는 독립일 확률이 거의 0에 수렴함으로 범용성은 Logistic Regression이 훨 높겠다 하겠다.

 

개인간의 영향이 없다 치고 각각을 주인공이라 봐야 하는가? 이게 나이브 베이즈다.