1. 로지스틱 회귀란?
로지스틱 회귀는 선형 회귀와 같이 입력 변수와 출력 변수 사이의 관계를 모델링하는데 사용되지만, 출력 변수가 이진 변수인 경우에 사용됩니다. 즉, 출력 변수의 값이 0 또는 1, 참 또는 거짓, 성공 또는 실패와 같은 두 가지 범주 중 하나에 속하는 경우에 로지스틱 회귀를 사용합니다. 로지스틱 회귀는 이진 분류 문제에 적합합니다.
2. 로지스틱 회귀의 원리
로지스틱 회귀는 선형 회귀와 비슷한 방식으로 동작합니다. 다만, 선형 회귀가 입력 변수의 선형 조합을 바로 출력으로 사용하는 반면, 로지스틱 회귀는 입력 변수의 선형 조합을 로지스틱 함수를 통해 변환하여 출력으로 사용합니다. 이 로지스틱 함수는 '시그모이드 함수'라고도 불립니다.
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1 / (1 + np.exp(-x))
x = np.linspace(-10, 10, 100)
y = sigmoid(x)
plt.plot(x, y)
plt.show()
3. 로지스틱 회귀의 예제
로지스틱 회귀는 사이킷런 라이브러리를 사용하여 쉽게 구현할 수 있습니다. 다음은 붓꽃 데이터를 사용한 로지스틱 회귀의 예입니다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 데이터 로드
iris = load_iris()
X = iris.data
y = (iris.target == 2).astype(int) # 'virginica'인 경우 1, 아니면 0
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
4. 로지스틱 회귀의 분석 방법
로지스틱 회귀의 성능은 주로 정확도, 정밀도, 재현율, F1 점수 등을 통해 측정됩니다. 또한, ROC 곡선 아래 영역(AUC)이라는 지표도 널리 사용됩니다.
4.1 정확도
정확도는 모델이 올바르게 분류한 샘플의 비율입니다. 사이킷런의 accuracy_score 함수를 사용하여 측정할 수 있습니다.
from sklearn.metrics import accuracy_score
print('Accuracy: ', accuracy_score(y_test, y_pred))
4.2 정밀도, 재현율, F1 점수
정밀도는 양성으로 예측된 샘플 중 실제 양성인 샘플의 비율이고, 재현율은 실제 양성 샘플 중 양성으로 예측된 샘플의 비율입니다. F1 점수는 정밀도와 재현율의 조화 평균입니다. 사이킷런의 precision_score, recall_score, f1_score 함수를 사용하여 측정할 수 있습니다.
from sklearn.metrics import precision_score, recall_score, f1_score
print('Precision: ', precision_score(y_test, y_pred))
print('Recall: ', recall_score(y_test, y_pred))
print('F1 Score: ', f1_score(y_test, y_pred))
4.3 ROC 곡선과 AUC
ROC 곡선은 재현율(민감도)에 대한 1-특이도 그래프입니다. AUC는 이 곡선 아래의 영역으로, 값이 클수록 모델의 성능이 좋다는 것을 의미합니다. 사이킷런의 roc_curve와 roc_auc_score 함수를 사용하여 그릴 수 있습니다.
from sklearn.metrics import roc_curve, roc_auc_score
# 확률 예측
y_proba = model.predict_proba(X_test)[:, 1]
# ROC 곡선
fpr, tpr, thresholds = roc_curve(y_test, y_proba)
plt.plot(fpr, tpr)
plt.title('ROC Curve')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()
# AUC
print('AUC: ', roc_auc_score(y_test, y_proba))
5. 결론
로지스틱 회귀는 이진 분류 문제를 해결하는 강력한 기법입니다. 선형 회귀와 유사하게 동작하지만, 시그모이드 함수를 통해 출력을 변환하여 0과 1 사이의 값으로 만듭니다. 이를 통해 출력 변수가 이진 변수인 경우에도 모델링할 수 있습니다. 로지스틱 회귀의 성능은 정확도, 정밀도, 재현율, F1 점수, AUC 등의 지표를 통해 측정할 수 있습니다.
'머신러닝' 카테고리의 다른 글
AI에서의 활성화 함수: 기본 개념, 종류, 예제 및 분석 방법 (0) | 2023.05.11 |
---|---|
선형 회귀에 대한 기본 개념 및 그 적용 (0) | 2023.05.11 |
Pandas (판다스) 라이브러리 in Python (파이썬) (0) | 2023.05.09 |
Python 라이브러리 Numpy 소개 (0) | 2023.05.09 |
인공지능에서의 비용 함수 (0) | 2023.05.07 |