로지스틱 회귀
로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘이다. 즉, 로지스틱 회귀는 분류에 사용된다 .
로지스틱 회귀가 선형 회귀와 다른 점은 학습을 통해 선형함수의 회귀 최적선을 찾는 것이 아니라
시그모이드 함수 최적선을 찾고 이 시그모이드 함수의 반환 갑승 확률로 간주해 확률에 따라 분류를 결정 한다는 것이다.
로지스틱 회귀 실습 - 위스콘신 유방암 데이터
먼저 사이킷런의 load_breast_cancer()를 호출해 전체 데이터 셋을 생성 한다 .
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
cancer = load_breast_cancer()
선형 회귀 계열의 로지스틱 회귀는 데이터의 정규 분포도에 따라 예측 성능 영향을 받을 수 있으므로
데이터에 먼저 정규 분포 형태의 표준 스케일링을 적용한 뒤에 train_test_split()을 이용해 데이터셋을 분리 한다.
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
# StandardScaler( )로 평균이 0, 분산 1로 데이터 분포도 변환
scaler = StandardScaler()
data_scaled = scaler.fit_transform(cancer.data)
X_train , X_test, y_train , y_test = train_test_split(data_scaled, cancer.target, test_size=0.3, random_state=0)
이제 로지스틱 회귀를 이용해 학습 및 예측을 수행하고, 정확도와 ROC-AUC 값을 구해 보자.
from sklearn.metrics import accuracy_score, roc_auc_score
# 로지스틱 회귀를 이용하여 학습 및 예측 수행.
lr_clf = LogisticRegression()
lr_clf.fit(X_train, y_train)
lr_preds = lr_clf.predict(X_test)
# accuracy와 roc_auc 측정
print('accuracy: {:0.3f}'.format(accuracy_score(y_test, lr_preds)))
print('roc_auc: {:0.3f}'.format(roc_auc_score(y_test , lr_preds)))
accuracy: 0.977
roc_auc: 0.972
정확도가 약 0.977, ROC-AUC 가 약 0.972이다.
사이킷런 LogisticRegression 클래스의 주요 하이퍼 파라미터로 penalty와 C가 있다.
penalty는 규제의 유형을 설정하는 것이고, C는 규제 강도를 조절하는 alpha값의 역수 이다.
즉 , C = 1/alpha 이다. 이제 GridSearchCV를 이용해 하이퍼 파라미터를 최적화 해보자.
import warnings
warnings.filterwarnings(action='ignore')
from sklearn.model_selection import GridSearchCV
params={'penalty':['l2', 'l1'],
'C':[0.01, 0.1, 1, 1, 5, 10]}
grid_clf = GridSearchCV(lr_clf, param_grid=params, scoring='accuracy', cv=3 )
grid_clf.fit(data_scaled, cancer.target)
print('최적 하이퍼 파라미터:{0}, 최적 평균 정확도:{1:.3f}'.format(grid_clf.best_params_,
grid_clf.best_score_))
최적 하이퍼 파라미터:{'C': 1, 'penalty': 'l2'}, 최적 평균 정확도:0.975
로지스틱 회귀는 가볍고 빠르지만, 이진 분류 예측 성능도 뛰어나다.
이 때문에 로지스틱 회귀를 이진 분류의 기본 모델로 사용하는 경우가 많다.
본문 내용은 파이썬 머신러닝 완벽 가이드 (권철민 저)을 요약정리한 내용입니다.