정밀도(precision)와 재현율(recall)은 머신 러닝 알고리즘의 성능을 평가하는 데 중요한 지표입니다. 이 블로그 게시물에서는 파이썬의 scikit-learn 패키지를 사용하여 정밀도와 재현율을 계산하는 방법을 살펴보겠습니다.
정밀도와 재현율이란?
정밀도(precision)는 모델이 참으로 예측한 것 중에서 실제로 참인 비율을 나타냅니다. 즉, 정밀도는 “양성”이라고 예측한 것 중에서 실제로 양성인 샘플의 비율을 말합니다.
재현율(recall)은 실제로 참인 것 중에서 모델이 참으로 예측한 비율을 나타냅니다. 즉, 재현율은 실제로 양성인 샘플 중에서 모델이 양성으로 예측한 샘플의 비율을 말합니다.
scikit-learn에서 정밀도와 재현율 계산하기
scikit-learn 패키지는 머신 러닝 모델의 정밀도와 재현율을 손쉽게 계산할 수 있는 precision_score
와 recall_score
함수를 제공합니다. 이 함수들은 실제 목표값과 모델의 예측값을 인자로 받고, 정밀도와 재현율을 계산하여 반환합니다.
아래는 scikit-learn을 사용하여 정밀도와 재현율을 계산하는 간단한 예제 코드입니다.
from sklearn.metrics import precision_score, recall_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 가상의 데이터셋 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
# 훈련 데이터와 테스트 데이터 분할
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)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
print(f"정밀도: {precision}")
print(f"재현율: {recall}")
위의 코드에서는 먼저 make_classification
함수를 사용하여 가상의 분류 데이터셋을 생성합니다. 그 후, train_test_split
함수를 사용하여 훈련 데이터와 테스트 데이터를 분리합니다. 이후에는 LogisticRegression
모델을 학습하고, predict
메서드를 사용하여 테스트 데이터에 대한 예측값을 계산합니다. 최종적으로 precision_score
와 recall_score
함수를 사용하여 정밀도와 재현율을 계산하고 출력합니다.
결론
정밀도와 재현율은 머신 러닝 모델의 성능을 평가하는 데 중요한 지표입니다. scikit-learn 패키지를 사용하면 간편하게 정밀도와 재현율을 계산할 수 있습니다. 이를 활용하여 모델의 성능을 평가하고 최적화하는 데 도움이 될 것입니다.
정밀도와 재현율 뿐만 아니라 다른 평가 지표에 대해서도 자세히 알아보고 싶다면 scikit-learn의 문서를 참조해보세요.
Happy coding!