일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- 파이썬게임만들기
- STT
- 기본기
- 업무자동화
- 카카오
- 자동화
- 음성인식
- 오늘배워오늘쓰는
- kakao
- Ai
- Selenium
- 독학
- 파이썬독학
- 파이썬간단한게임
- 간단한파이썬게임
- 파이썬게임
- 웹크롤링
- 구글
- 머신러닝
- 딥러닝
- 구글일정
- 인공지능
- Quickstart
- 크롤링
- OpenAPI
- 소스코드
- 빅데이터
- 구글캘린더
- 파이썬
- Today
- Total
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)함수 최적선을 찾고 이 시그모이드 함수의 반환값을 확률로 간주해 확률에 따라 분류를 결정하는 것이다.
로지스틱 회귀는 가볍고 빠르지만, 이진 분류 예측성능도 뛰어나다. 이 때문에 로지스틱 회귀를 이진 분류의 기본 모델로 사용하는 경우가 많다. 또한 로지스틱 회귀는 희소한 세트 분류에도 뛰어난 성능을 보여서 테스트 분류에서도 자주 사용한다.
회귀계수를 보고 해석하는 방법은 아래와 같다.
- 회귀계수가 양수면 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
1) 그간 학습한 알고리즘을 모두 사용하여, 타이타닉 생존자 예측을 하고 가장 예측을 잘 하는 알고리즘을 선정해보자.
2) logistic regression의 회귀계수를 확인하고, 어떤 변수가 예측변수에 영향을 미치는지 확인하세요.
ㅁ 참고
p (확률) : 0~1
odds (승률) = p / (1-p) : 0~무한대
log(odds) = logit = 무한대~무한대
ㅁ Reference
- [책] 파이썬 머신러닝 완벽가이드
- [블로그] 파이썬 머신러닝 완벽가이드 정리본 (Link)
- [소스코드 출처] : https://github.com/wikibook/pymldg-rev
'데이터 분석 > 왕초보를 위한 머신러닝' 카테고리의 다른 글
[머신러닝 기초] 텍스트분석 - classification (20newsgroups 데이터) (0) | 2021.11.27 |
---|---|
[머신러닝 기초] 비지도학습(Unsupervised-learning) - 군집화(Clustering) (4) | 2021.10.19 |
[머신러닝 기초] 지도학습 - 선형 회귀(Regression) 분석 (0) | 2021.10.19 |
[머신러닝 기초] 지도학습 - classification (Ensemble, Random Forest) (0) | 2021.10.16 |
[머신러닝 기초] 하이퍼파라메터 튜닝을 쉽게! - GridSearchCV (0) | 2021.10.16 |