로지스틱 회귀(Logistic Regression)
로지스틱 회귀(Logistic Regression)는 이름은 회귀이지만 분류 모델이다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습한다. 예를 들면 다음과 같다.
$$z = a \times (Weight) + b \times (Length) + c \times (Diagonal) + d \times (Height) + e \times (Width) = f$$
특성은 늘어났지만 다중 회귀를 위한 선형 방정식과 같다. 하지만 확률이 되려면 z가 아주 큰 음수일 때 0이 되고, z가 아주 큰 양수일 때 1이 되도록 바꿀 수 있어야 한다. 이는 시그모이드 함수를 사용하면 가능하다.
로지스틱 회귀(Logistic Regression)가 이진 분류인 경우 predict_proba() 메서드는 음성 클래스와 양성 클래스에 대한 확률을 출력한다. z는 LogisticRegression 클래스의 decision_function() 메서드를 이용해 구할 수 있으며, 이렇게 구한 결과는 양성 클래스에 대한 z 값이 된다. 사이파이 라이브러리의 expit() 함수에 decision_function()의 결과를 넣어 주면 양성 클래스에 대한 확률을 얻을 수 있다.
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(train_bream_smelt, target_bream_smelt)
decisions = lr.decision_function(train_bream_smelt[:, 5])
print(decisions) # 양성 클래스에 대한 z 값
from scipy.special import expit
print(expit(decisions)) # 시그모이드 함수 결과, 양성 클래스에 대한 확률
로지스틱 회귀(Logistic Regression)의 다중 분류
로지스틱 회귀의 다중 분류는 각 클래스마다 z 값을 하나씩 계산한다. 그리고 가장 높은 z 값을 출력하는 클래스가 예측 클래스가 된다. 또한 다중 분류에서 확률은 소프트맥스(softmax) 함수를 사용하여 각 클래스의 z 값을 확률로 변환한다.
softmax 함수는 여러 개의 선형 방정식의 출력값을 0~1 사이로 압축하고 전체 합이 1이 되도록 만든다. 이를 위해 지수 함수를 사용하기 때문에 정규화된 지수라고도 부른다. softmax 함수는 scipy.special 아래에 있는 softmax() 함수를 가지고 와서 사용한다.
from scipy.special import softmax
proba = sotxmax(decision, axis = 1)
print(np.round(proba, decimals = 3))
'혼공학습단' 카테고리의 다른 글
[혼공머신] 4주차_트리 알고리즘과 앙상블 학습 (0) | 2024.01.29 |
---|---|
[혼공머신] 3주차(2)_확률적 경사 하강법 (0) | 2024.01.21 |
[혼공머신] 2주차(2)_특성 공학과 규제 (0) | 2024.01.07 |
[혼공머신] 2주차(1)_KNN 회귀 (0) | 2024.01.07 |
[혼공머신] 1주차(2)_마켓과 머신러닝 (1) | 2024.01.03 |