본문 바로가기
Machine Learning

로지스틱 회귀

by rubyda 2020. 5. 27.
728x90

로지스틱 회귀는 선형 회귀 방식을 분류에 적용한 알고리즘입니다. 로지스틱 회귀가 선형 회귀와 다른점은 학습을 통해서 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(Sigmod)함수를 사용해서 최적선을 찾고 이 시그모이드 함수의 반환값을 확률로 간주하여 분류를 결정한다는 것입니다.

 

시그모이드 함수

시그모이드 함수의 정의는 다음과 같습니다.

$$f(x) = \frac{1}{1+e^{-x}}$$

그래프를 통해서도 알 수 있듯이 시그모이드 함수는 x값이 아무리 커지거나 작아져도 Y값은 항상 0과 1사이에 존재합니다. 

 

이번 예제에서는 회귀 문제를 분류 문제에 적용해 보도록 하겠습니다. 종양의 크기에 따라서 악성(1) 인지 아닌지(0)을 회귀를 통해서 1과 0의 값으로 예측해 보도록 하겠습니다.

 

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()
from sklearn.metrics import accuracy_score, roc_auc_score

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

print('accuracy:{:0.3f}'.format(accuracy_score(y_test,lr_pred)))
print('roc_auc:{:0.3f}'.format(roc_auc_score(y_test,lr_pred)))
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

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)

다음과 같은 결과가 나왔습니다. 사이킷런 LoLogisticRegression 클래스에는 하이퍼 파라미터로 penalty와 C가 있습니다. 여기서 penalty는 규제의 유형을 설정하는데 기본값은 l2입니다. C는 규제 강도를 조절하는 알파값의 역수입니다. 즉 C값이 작을수록 규제 강도가 크게 작용을 합니다.

 

 

 

 

Reference


파이썬 머신러닝 완벽가이드

'Machine Learning' 카테고리의 다른 글

회귀 실습 - (자전거 대여 수요 예측)  (0) 2020.05.28
회귀 평가 지표  (0) 2020.05.27
규제 선형 모델  (0) 2020.05.27
LinearRegression 실습( 주택 가격 예측)  (0) 2020.05.27
회귀란?  (0) 2020.05.26