Logistic Regression + Gaussian Naive Bayes
- binomial 혹은 multinomial에 적용 가능한 확률론적 분류기(probabilitic classifier)
- 로지스틱 회귀는 시그모이드의 특별한 형태
f(x)=11+e−x
- 로지스틱 회귀를 역함수 형태로 만들면 로짓 함수(logit function)이라 하며, 이는
f(x)=log(x1−x)
로 표현함.
- linear regression에서 첫 항을 더미변수 1로 놓았을 때, ^f(x)=Xθ로 표현함.
여기서, logistic regression을 위한 베르누이 분포의 pmf (우리가 궁극적으로 찾아야 할 식)는
P(y|x)=μ(x)y(1−μ(x))1−y 임
한편, μ(x)를 logistic function에 대입시키면
μ(x)=P(y=1|x)=11+e−θTx=eXθ1+eXθ
- 여기서, μ(x)를 linear regression에 의한 추정이 아닌 logistic function에 의해서 regression을 해보겠다고 시도하는 것이 logistic regression이 됨.
- MLE로 θ를 찾아나감. 다만, Y는 input feacture X가 주어진 상태(given)에서 추정하는 것이므로 그냥 MLE가 아닌 MCLE(Maximum Conditional Likelihood Estimation)이 되고, 이를
ˆθ=argmaxθ∏1≤i≤NP(Yi|Xi;θ)
로 표현함.
- 여기서 베르누이 pmf를 대입하여 식을 정리(로그를 씌우고 식을 정리한 뒤 θ에 대해 미분하여 최적값을 찾아나감)하면, 최종형태는
∂∂θj{∑1≤i≤NYiXiθ−log(1+eXiθ)}=∑1≤i≤NXi,j(Yi−eXiθ1+eXiθ)=∑1≤i≤NXi,j(Yi−P(Yi=1|Xi;θ))=0
로 표현됨.
- 위의 식에서 θ가 0이 되는 지점이 결국 θ를 optimize 하는 것인데, θ에 관해서 풀어내는 것이 쉽지 않다. (참고로, linear regression의 경우에는 θ=(XTX)−1XTY)로 θ에 대해 딱 떨어짐)
따라서, θ를 직접 계산하는 것이 아니라 방법을 우회하여 점점점점 approximation 하는 방향으로 진행하게 된다.
- 이 때 쓰이는 방법이 우리들이 흔히 알고 있는 Gradient Method(Gradient Descent/Ascent)
※ Gradient Method에 기존 스터디 자료가 있으므로 참고할 것(여기)
※ 해당 자료는 간단한 개요
- Gradient Method를 위해 테일러 전개를 통해 실제 식을 근사한 식으로 표현한 뒤, 초기값(x1)을 잡고 방향벡터와 그 크기(x=x1+hu)를 가정 (h는 learning rate로 휴리스틱하게 잡는다)
f(x1+hu)=f(x1)+hf′(x1)u+h2O(1)
- 여기서, 뒤에 식은 Big-O notation관련 내용이며 별도로 정리하지 않음. h를 매우 작게 낮추면 뒤에 식은 제곱으로 커지므로 거의 없는셈 치는게 가능하므로,
f(x1+hu)−f(x1)≈hf′(x1)u
로 정리됨.
- 위의 식에서 방향벡터 u를 조정하여 값을 낮추거나 높이는 방향으로 Gradient Method가 진행된다.
u*=argminu{f(x1+hu)−f(x1)}
- NaiveBayes를 Logistic Regression으로 표현 후 비교한 것 정리

- 결론
나이브 베이즈에서, 여러 가정을 추가하면 결국 로지스틱 리그레션과 똑같아진다.
그 형태가 gaussian navie bayes가 되는데, 연산량도 가정도 logistic regrssion보다 많다.
그렇다고 gnb가 무조건 나쁘다고 볼 수 있는가? 그건 아니다.
왜냐하면 prior정보를 gnb에서 설정할 수 있기 때문이다. 즉 사전 정보를 가지고 추정하는게 가능한 형태이기 때문에 적절히 사용하는 것이 중요하다.
sklearn에서의 구현은
참고할 것