티스토리 뷰

로지스틱 회귀(Logistic Regression)


이번 포스팅에서는 둘 중에 하나 (TRUE/FALSE) 이항 분류의 문제를 정의하고 있는 로지스틱 회귀에 대하여 알아 볼 것이다. ( 다항 분류의 문제는 다음 포스팅에서.. )


우리는 이전 포스팅인 선형 회귀(Linear Regression)의 방법에서

x의 값인 트레이닝 데이터(Training Data)를 입력하여 y의 값인 숫자를 예측하는 것의 모델

(즉, 학습시간에 따른 시험 점수와 같은 문제) 에 대하여 알아 보았다.


이와 비슷하게, 로지스틱 회귀(Logistic Regression)는 y의 값이 숫자를 나타내는 것이 아니라 어떤 특정 분류에 속한다는 것의 결과치가 나오게 되는 모델이다.


그 중 이항분류의 문제를 살펴볼 것이다.


예를들어, 

독립변수의 값( 트레이닝 셋 ) 의 데이터를 받아 다음과 같은 여러가지 결과가 될 수 있다.

1. 스팸메일인지 아닌지

2. 질병에 대해서 반응이 양성인지 음성인지

3. 카드 사용의 패턴이 정상적인지 아닌지 ( 도난 여부 판단 )


이렇게 트레이닝 데이터 셋에 의해 판별 된 결과 값은 0에서 1사이의 값으로 인코딩된다.

이것은, 기존의 선형 모델로는 이와 같은 판별 값을 나타내기에는 적합하지 않다는 뜻이기도 하다.

(그게 갑자기 무슨소리냐?!)


아래 (개떡같은.. ) 그림을 보자!

찰떡 같이 알아들을 것이라고 생각한다!( 음...-_- )


위와 같이 공부시간에 있어 시험 합격(T)/불합격(F) 판정을 받은 데이터의 결과가 있다고 할 때 

새로운 데이터(빨간색) 가 들어온경우 (공부는 더럽게 조금했는데 시험에 통과한 경우-_-) 기존의 선형 모델로 표현하면 새로운 데이터로 인한 학습으로 재조정 될 때 기존의 통과했던 데이터가 불합격이 되어버리는 이상현상이 발생한다.


그래서 기존 선형회귀의 식인 H(w) = Wx + b 의 식으로는 0 또는 1을 표현하기 힘들다.

( bias 값만으로도 1보다 더 큰 값을 가지는 경우가 있으므로)

이와 같은 0에서 1사이를 표시하기 위한 인코딩의 결과치를 나타내는 함수가 필요하게 되는데 

이것이 바로 시그모이드 함수(Sigmoid Function) 이다.


여기서 우리가 예측하고자 하는 H(w) 인 가설 값을 z로 놓고 z의 정보를 0에서 1사이로 인코딩 하기 위한 함수 g(z)를 정의하면 다음과 같이 나타낼 수 있는데,


시그모이드 함수(Sigmoid Function)를 matplot 라이브러리를 활용하여 시각화 해보면 다음과 같이 나타낼 수 있다.


1
2
3
4
5
6
7
8
9
10
import numpy as np
import matplotlib.pyplot as plt
 
= np.linspace(-77200)
= 1 / (1 + np.exp(-X))
 
plt.figure()
plt.plot(X, Y)
plt.grid(True)
plt.show()
cs







※ 본 포스팅은 최대한 정리하고자 노력하긴 했으나, 개인 공부 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다. 홍콩과기대의 김성훈 교수님의 강의를 기반으로 만들어진 정리의 글임을 알립니다!






반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함