1. 이진 분류(Binary Classification)
- y(레이블): 0 또는 1이라는 두 가지 값 (0.5를 기준으로 예측값 판단)
2. 시그모이드 함수(Sigmoid function)
입력값이 커지면 1에 수렴, 입력값이 작아지면 0에 수렴
출력값이 0.5 이상이면 1(True), 0.5 이하면 0(False) -> 이진 분류 문제에 활용
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y, 'g')
plt.plot([0,0],[1.0,0.0], ':') # 가운데 점선 추가
plt.title('Sigmoid Function')
plt.show()
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y1 = sigmoid(0.5*x)
y2 = sigmoid(x)
y3 = sigmoid(2*x)
plt.plot(x, y1, 'r', linestyle='--') # w의 값이 0.5일때
plt.plot(x, y2, 'g') # w의 값이 1일때
plt.plot(x, y3, 'b', linestyle='--') # w의 값이 2일때
plt.plot([0,0],[1.0,0.0], ':') # 가운데 점선 추가
plt.title('Sigmoid Function')
plt.show()
: w의 값에 따라 그래프의 경사도가 변화
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y1 = sigmoid(x+0.5)
y2 = sigmoid(x+1)
y3 = sigmoid(x+1.5)
plt.plot(x, y1, 'r', linestyle='--') # x + 0.5
plt.plot(x, y2, 'g') # x + 1
plt.plot(x, y3, 'b', linestyle='--') # x + 1.5
plt.plot([0,0],[1.0,0.0], ':') # 가운데 점선 추가
plt.title('Sigmoid Function')
plt.show()
: b의 값에 따라 그래프가 이동
3. 비용 함수(Cost function)
로지스틱 회귀에서 MSE를 비용 함수로 사용할 경우
: 글로벌 미니멈(Global Minimum)이 아닌 특정 구역에서의 최소값인 로컬 미니멈(Local Minimum)에 도달
로지스틱 회귀의 비용 함수
파란선: y=1 (-logH(x) 그래프 사용)
빨간선: y=0 (-log(1-H(x)) 그래프 사용)
크로스 엔트로피(Cross Entropy)
로지스틱 회귀에서 찾아낸 비용 함수
가중치를 찾기 위해서 크로스 엔트로피 함수의 평균을 취한 함수 사용
소프트맥스 회귀의 비용 함수이기도 함