본문 바로가기

Lecture ML

머신러닝 강좌 #28] 로지스틱 회귀에 대해

반응형

로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 즉, 로지스틱 회귀는 분류에 사용됩니다. 로지스틱 회귀 역시 선형 회귀 계열입니다. 회귀가 선형인가 비선형인가는 독립변수가 아닌 가중치 변수가 선형인지 아닌지를 따릅니다. 로지스틱 회귀가 선형 회귀와 다른 점은 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmoid)함수 최적선을 찾고 이 시그모이드 함수의 변환 값을 확률로 간주해 확률에 따라 분류를 결정한다는 것입니다. 

 

많은 자연, 사회 현상에서 특정 변수의 확률 값은 선형이 아니라 시그모이드 함수와 같이 S자 커브 형태를 가집니다. 

종양크기에 따라 악성 종양인지  그렇지 않은지를 회귀를 이용해 1과 0의 값으로 예측하는 내용을 진행해 보겠습니다. 위스콘슨 유방암 데이터 세트를 이용해 로지스틱 회귀로 암 여부를 판단해 보겠습니다.

 

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
from sklearn.model_selection import GridSearchCV

cancer = load_breast_cancer()
sclar = StandardScaler()
data_scled = sclar.fit_transform(cancer.data)

X_train, X_test, y_train, y_test = train_test_split(data_scled, cancer.target, test_size=0.3, random_state=0)

lr_clf = LogisticRegression()
lr_clf.fit(X_train, y_train)
lr_pred = lr_clf.predict(X_test)

print('accuracy_score\n', accuracy_score(y_test, lr_pred))
print('roc_auc_score\n', roc_auc_score(y_test, lr_pred))

params={'penalty': ['l2'],
        '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_scled, cancer.target)

print(grid_clf.best_params_, grid_clf.best_score_)

 

선형 회귀 계열의 로지스틱 회귀는 데이터의 정규 분포도에 따라 예측 성능 영향을 받을 수 있으므로 데이터에 먼저 정규 분포 형태의 표준 스케일링을 적용한 뒤에 train_test_split()을 이용해 데이터 세트를 분리합니다. 

 

이제 로지스틱 회귀를 이용해 학습 및 예측을 수행하고, 정확도와 ROC-AUC값을 구합니다.

accuracy_score
 0.9766081871345029
roc_auc_score
 0.9715608465608465

 

사이킷런 LogisticRegrssion클래스의 주요 하이퍼 파라미터로 penalty와 C가 있습니다. penalty는 규제(Regularization)의 유형을 설정하며 'l2'로 설정 시 L2규제를, 'l1'으로 설정 시 L1규제를 뜻합니다. 기본은 'l2'입니다.

 

C는 규제 강도를 조절하는 alpha값의 역수입니다. 즉 C = 1/alpha입니다. C값이 작을수록 규제 강도가 큽니다. GridSarchCV를 이용해 위스콘신 데이터 세트에서 이 하이퍼 파라미터를 최적화해 보겠습니다. 

{'C': 1, 'penalty': 'l2'} 0.975392184164114

 

로지스틱 회귀는 가볍고 빠르지만, 이진 분류 예측 성능도 뛰어납니다. 이 때문에 로지스틱 회귀를 이진 분류의 기본 모델로 사용하는 경우가 많습니다. 또한 로지스틱 회귀는 희소한 데이터 세트 분류에도 뛰어난 성능을 보여서 텍스트 분류에서도 자주 사용됩니다. 

반응형