KNOU STUDYREAD

한국방송통신대학교 통계데이터과학과 블로그

CS & Department of Statistics and Data Science

통계데이터과학과 및 컴퓨터과학 독서

05. 딥러닝 6장

Harryㅤ 2023. 11. 20.

 
로지스틱 회귀 : 참과 거짓, 둘 중 하나로 판단해야할 때 딥러닝에서 주어진 데이터를 놓고 쓰임.
예시 : 5장의 공부한 시간과 공부한 성적 사이를 선형회귀적으로 표현하는 문제가 아닌 시험 결과 여부가 합/불합격만 존재할경우

공부시간 2 4 6 8 10 12 14
합격여부

합격을 1, 불합격이 0일때 좌표 평면에 그리면 일정한 기울기를 가지는 일차 방정식이 아니기에 1.과 0으로 구분된 선을 그리기 어려움. 
따라서 1과 0을 이어주는 S자 그래프 형태로 그려지게됨 -> 시그모이드 함수를 통해 로지스틱 회귀를 풀어낼 수 있음. 선형회귀에서 평균 제곱 오차 함수를 사용해 보정했다면, 로지스틱 회귀는 교차 엔트로피 오차 함수를 이용.

# 필요한 기본 라이브러리 세팅
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

x = np.array([2, 4, 6, 8, 10, 12, 14]) # 앞서 설명한 공부시간 X 배열 생성
y = np.array([0, 0, 0, 1, 1, 1, 1])    # 앞서 설명한 공부시간 X에 따른 합불여부 배열 생성

# 시그모이드 함수 사용을 위해 활성화 함수부분 'sigmoid' 설정
model = Sequential()
model.add(Dense(1, input_dim=1, activation='sigmoid')) 

# 교차 엔트로피 오차 함수를 이용을 위해 'binary_crossentropy'로 설정
model.compile(optimizer='sgd', loss='binary_crossentropy')
model.fit(x, y, epochs=5000)

# 결과 시각화
plt.scatter(x, y)
plt.plot(x, model.predict(x), 'r')
plt.show()

# 임의의 학습 시간을 집어넣어 합불 여부 출력
hour = 5
prediction = model.predict([hour])
print("%.f시간을 공부할 경우, 합격 여부는 %.01f%%입니다." % (hour, prediction * 100))

앞서 5시간을 공부할 경우 합격확률을 알 수 있다.(불합에 가까움)

'통계데이터과학과 및 컴퓨터과학 독서' 카테고리의 다른 글

07. 딥러닝 10-12장  (0) 2023.12.04
06. 딥러닝 7-9장  (0) 2023.11.27
04. 딥러닝 5장  (0) 2023.11.13
03.딥러닝 3-4장  (0) 2023.11.06
02. 딥러닝 2장  (0) 2023.10.30