우당탕탕 개발일지
[혼공머신] 4-1. 로지스틱 회귀 본문
💡 로지스틱 회귀
로지스틱 회귀는 선형 방정식을 사용한 분류 알고리즘으로,
'회귀'라는 이름을 갖고 있지만 회귀 모델이 아닌 분류 모델이라는 점에서 주의해야 한다!
z = a * Weight + b * Length + c * Diagonal + d * Height + e * Width + f
이렇게 각 특성값에 가중치를 곱하는 선형 방정식의 형태를 갖지만 분류 모델이다.
💡 로지스틱 회귀를 이용한 이진분류와 다중분류의 차이점
이진분류는 이 데이터가 0인지 1인지를 분류하지만, 다중분류는 이게 3개 이상의 클래스 중 어느 클래스에 해당하는지를 분류한다.
이진분류 | 다중분류 |
0 혹은 1 | 3개 이상의 클래스 |
시그모이드 함수 사용 | 소프트맥스 함수 사용 |
z값이 0.5보다 크면 1, 작으면 0으로 분류 | 클래스마다 z값을 하나씩 계산 |
z값의 개수 = 1 | z값의 개수 = 클래스의 개수 |
💡 시그모이드 함수
위 식을 이용해서 z값을 0과 1 사이의 값으로 변환한다.
그래서 변환된 값이 0.5보다 크면 양성 클래스, 작으면 음성 클래스로 판단한다.
파이썬에서는 scipy 라이브러리에 내장된 expit 함수를 사용하면 된다.
from scipy.special import expit
print(expit(decisions)
💡 소프트맥스 함수
다중분류에서는 클래스별로 z값이 형성된다.
책에서 제시된 예제에는 총 7개의 클래스가 있으므로 z값이 7개 생성된다. 이 7개의 z값을 바탕으로 하나의 값을 만들어내는 함수가 바로 소프트맥스 함수이다.
z값이 7개이므로 소프트맥스 출력값도 총 7개가 된다.
이것도 시그모이드 함수와 마찬가지로 출력값의 범위기 0과 1사이가 되도록 바꿔주며, 7개의 클래스의 모든 출력값을 합하면 1이 된다.
from scipy.special import softmax
proba = softmax(decision, axis = 1) # axis = 1로 지정하여 각 샘플에 대해 소프트맥스 계산
print(np.round(proba, decimals = 3)
소프트맥스 함수는 특히 딥러닝 분야에서도 사용되니 식도 알아둬야지!
💡 확인 문제 풀이
문제 1. 2개보다 많은 클래스가 있는 분류 문제를 무엇이라 부르나요?
정답 1. (2) 다중 분류
2개의 클래스에 대한 분류 문제는 이진 분류, 3개 이상의 클래스에 대한 분류 문제는 다중 분류
문제 2. 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요?
정답 2. (1) 시그모이드 함수
로지스틱 회귀가 확률을 출력하기 위해 사용하는 함수로는 1)시그모이드 함수와 2)소프트맥스 함수 두 가지가 있다.이 중에서 이진 분류에 사용되는 함수는 시그모이드 함수이다.
문제 3. decision_function() 메서드의 출력이 0일 때 시그모이드 함수의 값은 얼마인가요?
정답 3. (3) 0.5
시그모이드 함수식이 1 / (1 + exp(-z))이다. z = 0일 때 exp(-z) = exp(0) = 1이므로
1 / (1 + exp(-z)) = 1 / (1 + 1) = 1/2 = 0.5이다.
'인공지능' 카테고리의 다른 글
[혼공머신] 4-2. 확률적 경사 하강법 (1) | 2025.01.14 |
---|---|
[혼공머신] 3-3 다중 회귀, 특성 공학, 사이킷런의 변환기 클래스 PolynomialFeatures (0) | 2025.01.13 |
[혼공머신] 3-2 K-최근접 이웃의 한계, 선형 회귀, 모델 파라미터, 다항 회귀 (0) | 2025.01.13 |
[혼공머신] 3-1 과대적합과 과소적합의 차이, 과소적합 해결 방법, 확인문제 (0) | 2025.01.13 |
[혼공머신] 3-1 K-최근접 이웃 회귀, 회귀분석, 결정계수(R^2), 데이터 준비 (0) | 2025.01.13 |