[NLP] 머신 러닝 - (5) 로지스틱 회귀(Logistic Regression)

김규리·2022년 7월 11일
0

NLP

목록 보기
27/33
post-thumbnail

1. 이진 분류(Binary Classification)

  • y(레이블): 0 또는 1이라는 두 가지 값 (0.5를 기준으로 예측값 판단)

2. 시그모이드 함수(Sigmoid function)


입력값이 커지면 1에 수렴, 입력값이 작아지면 0에 수렴
출력값이 0.5 이상이면 1(True), 0.5 이하면 0(False) -> 이진 분류 문제에 활용

  • w는 1, b는 0임을 가정
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()

  • 가중치 w와 편향 b가 출력값에 미치는 영향
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)
    로지스틱 회귀에서 찾아낸 비용 함수
    가중치를 찾기 위해서 크로스 엔트로피 함수의 평균을 취한 함수 사용
    소프트맥스 회귀의 비용 함수이기도 함

profile
connecting the dots

0개의 댓글