728x90
반응형

시그모이드 함수 역할

 

[그림1]  시그모이드 함수 출처 : https://incheonkirin.tistory.com/entry/Do-it-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%84%B0%EB%94%94-2%EC%B0%A8

 

선형 함수의 출력 값 z는 활성화 함수를 통과해 a가 된다. 로지스틱 회귀에서 사용하는 활성화 함수인 시그모이드 함수는 z를 0~1 사이의 확률 값으로 변환시켜주는 역할 시그모이드 함수를 통과한 값 a를 암 종양 판정에 사용하면 '양성 샘플일 확률(악성 종양일 확률)'로 해석할 수 있다.

보통 a가 0.5(50%) 보다 크면 양성 클래스, 그 이하면 음성 클래스라고 구분한다.

[그림2] 선형 함수의 출력값 z

 

 

 

시그모이드 함수가 만들어지는 과정

  • 오즈 비 -> 로짓 함수 -> 시그모이드 함수

 

 

 

시그모이드 함수는 오즈 비(odds ratio)라는 통계를 기반으로 만들어진다. 오즈 비는 성공 확률과 실패 확률의 비율을 나타내는 통계이며 다음과 같이 정의

[그림3] 오즈 비

 

pb = np.arange(0, 1.0, 0.01)
odds = [p/(1-p) for p in pb]

plt.plot(pb, odds)
plt.ylabel("p")
plt.xlabel("p/(1-p)")
plt.show()

[그림4] 오즈 비 

 

 

 

로짓 함수

  • 로짓 함수는 p가 0.5일 때 0이 되고, p가 0과 1일 때 각각 무한대로 음수와 양수가 되는 특징을 가진다.

[그림5] 로짓 함수 식

 

pb = np.arange(0.001, 0.999, 0.001) # 0.001부터 0.999까지 0.001씩 증가하는 배열 만듬
logit = [np.log(p/(1-p)) for p in pb]
plt.plot(pb, logit)
plt.ylabel("p")
plt.xlabel("log(p/(1-p))")
plt.show()

 

[그림6] 로지 함수 그래프

 

 

로지스틱 함수의 유도 과정

[그림7] 로지스틱 함수
[그림8] 로지스틱 함수의 유도 과정

zs = np.arange(-10.0, 10.0, 0.1) # -10.0 ~ 10.0 0.1씩
gs = [1/(1+np.exp(-z)) for z in zs]
plt.plot(zs, gs)
plt.xlabel("z")
plt.ylabel("1/(1+e^-z)")
plt.show()

[그림9] 로지스틱 함수 그래프 - 시그모이드 함수

 

로지스틱 회귀 중간 정리

[그림10] 로지스틱 회귀 중간 정리

 

시그모이드 함수를 활성화 함수로 사용한 이유 - 시그모이드 함수를 통과하면 z를 확률처럼 해석할 수 있기 때문 

그 결과 입력 데이터(x)가 0 또는 1의 값으로 나누어짐 - 이진 분류

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기