ai-creator

[머신러닝 기초] 지도학습 - classification (Logistic Regression) 본문

데이터 분석/왕초보를 위한 머신러닝

[머신러닝 기초] 지도학습 - classification (Logistic Regression)

ai-creator 2021. 10. 19. 14:59
반응형

회귀를 통해서 회귀계수를 산출하게 되면, 회귀계수는 각 피쳐에 대한 설명력으로 이해할 수 있다.

y = 0.5x + 1 이라는 회귀식이 있다면, 'y를 예측하는데 x의 값이 0.5로 영향을 미치는 구나' 하고 말이다.

즉, x가 2->3으로 1증가를 하면 y는 0.5 상승하겠구나 라고 생각할 수 있다.

로지스틱 회귀는 회귀의 이러한 장점을 살린 분류 알고리즘이다.

 

로지스틱 회귀가 선형회귀와 다른 점은 학습을 통해 선형 함수의 회귀 최적선을 찾는 것이 아니라 시그모이드(sigmoid)함수 최적선을 찾고 이 시그모이드 함수의 반환값을 확률로 간주해 확률에 따라 분류를 결정하는 것이다. 

출처 : https://velog.io/@yepark/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C-Chap.5-%ED%9A%8C%EA%B7%802

 

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

 

회귀계수를 보고 해석하는 방법은 아래와 같다.

- 회귀계수가 양수면 label에 양의 상관관계를 갖는다.

- 회귀계수가 음수면 label에 음의 상관관계를 갖는다.

 

Sklearn API

이를 위해 sklearn에서는 API를 지원한다.

목적 import API
Logistic Regression from sklearn.linear_model import LogisticRegression LogisticRegression()

코드에서 보면, 

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

cancer = load_breast_cancer()

# 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)

# 로지스틱 회귀를 이용하여 학습 및 예측 수행. 
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)))

ㅁ 실습

https://drive.google.com/file/d/1zqiBz6w0utNSBuYe2mCrjpTJrz43FTLM/view?usp=sharing

 

(과제) 타이타닉 생존자 예측(Decision Tree, Random Forest).ipynb

 

drive.google.com

1) 그간 학습한 알고리즘을 모두 사용하여, 타이타닉 생존자 예측을 하고 가장 예측을 잘 하는 알고리즘을 선정해보자.

2) logistic regression의 회귀계수를 확인하고, 어떤 변수가 예측변수에 영향을 미치는지 확인하세요. 

ㅁ 참고

https://www.youtube.com/watch?v=BgB2NB7fLiM

p (확률) : 0~1

odds (승률) = p / (1-p) : 0~무한대

log(odds) = logit =  무한대~무한대 

 

ㅁ Reference

- [책] 파이썬 머신러닝 완벽가이드

- [블로그] 파이썬 머신러닝 완벽가이드 정리본 (Link)

- [소스코드 출처] https://github.com/wikibook/pymldg-rev

반응형
Comments