분류 분석은 머신 러닝의 결과 범주형 변수를 도출하려고 할 때 활용합니다.
1. 로지스틱 회귀 분석 (Logistic Regression)
독립 변수의 선형 결합으로 확률을 예측하여 범주형 변수를 도출하려고 하는 분석입니다.
성공 확률 / 실패 확률은 p / (1-p) 로, 오즈(odss) 라고 합니다. 오즈에 자연로그를 취한 로짓(Logit) = w0+w1x1+w2x2+... 을 통해 p 값인 확률을 도출하고, 확률이 특정 값(Threshold) 보다 높은지를 통해 1 또는 0으로 분류합니다. 클래스가 3개 이상인 다중클래스인 경우에는 각각의 클래스에 대해 확률을 구하고, 가장 확률이 높은 클래스로 데이터를 분류합니다.
매개 변수로 C 가 있는데, C 가 높을 수록 규제가 감소하며 개개의 데이터 포인트를 정확히 분류하려고 노력하게 됩니다.
대용량 데이터셋의 경우에는 solver= 'sag' 옵션을 활용할 수 있습니다.
2. 결정 트리
결정에 다다르기 위해 예, 아니오 질문을 이어나가며 학습하는 모델입니다. 불순도가 낮아지는 방향으로 데이터의 분할이 이뤄집니다. 매개변수로는 max_depth, max_leaf_nodes, min_samples_leaf 를 지정하여 과적합을 막을 수 있습니다.
결정트리는 특성의 정규화, 표준화 같은 전처리 과정이 필요 없다는 장점이 있습니다.
● 랜덤 포레스트
랜덤 포레스트는 여러 결정 트리들을 평균 냄으로써 과적합을 줄일 수 있습니다. 매개변수로 n_estimators, max_features 를 가지는데, n_estimator 가 클수록, max_features 가 작을 수록 과적합을 줄일 수 있습니다.
max_features의 기본값은 분류의 경우 sqrt(n_features), 회귀의 경우 n_features 입니다.
● 그레이디언트 부스팅 회귀트리
부스팅은 예측력이 약한 모형들을 결합하여 강한 예측 모형을 만드는 기법입니다. 이전 트리의 오차를 보완하는 방식으로 순차적으로 트리를 만듭니다.
매개변수로는 n_estimators, learning_rate, max_depth 가 있습니다.
● 기타
붓스트랩은 중복의 랜덤 샘플링을 통해 여러 개의 동일한 크기의 표본을 획득하는 기법입니다.
배깅은 주어진 자료에서 여러 개의 붓스트랩 자료를 생성하고 각각을 결합하여 최종 예측 모형을 만드는 기법입니다.
SVM 은 클라스의 결정 경계를 구분하는 기술이고, 매개변수로 gamma, C 를 가집니다. gamma 는 하나의 훈련 샘플이 미치는 영향의 범위이고, C 매개변수는 규제 매개변수로, gamma, C 가 클수록 개개의 데이터 포인트를 정확히 분류하려고 노력하게 됩니다.
SVM 의 단점은 데이터 전처리, 매개 변수 설정에 신경을 많이 써야 한다는 점입니다.
2. 나이브 베이즈 분류
데이터가 각 클래스에 속할 특징 확률을 계산하는 조건부 확률 기반의 분류 방법입니다.
BernoulliNB 는 이진 데이터에 적용할 수 있고, MultinomialNB는 카운트 데이터에, GaussianNB 는 연속적인 데이터에 적용할 수 있습니다.
● 분류 예측의 불확실성 추정
decision_function: 데이터 포인트가 양성 클래스인 클래스 1에 속한다고 믿는 정도를 반환합니다.
predict_proba : 각 클래스에 대한 확률을 반환합니다.
● 평가 지표
classification_report 는 정밀도, 재현율, f1-score / suppot (샘플 수) / 정확도, macro avg (클래스별 평균), weighted avg(클래스의 샘플 수로의 가중 평균) 을 나타냅니다.
정밀도-재현율 곡선의 아랫부분 면적인 평균 정밀도: average_precision_score 를 활용하거나,
거짓 양성 비율(FPR)에 대한 진짜 양성 비율(TPR) 을 나타내는 ROC 곡선의 아래 면적인 roc_auc_score 을 활용할 수 있습니다.
from sklearn.metrics import classification_report / average_precision_score / roc_auc_score
'데이터 사이언스 기초' 카테고리의 다른 글
데이터 스케일링 (머신 러닝) (1) | 2024.11.28 |
---|---|
회귀 분석 (머신 러닝) (0) | 2024.11.27 |
분산분석 with 파이썬 (1) | 2024.11.15 |
t 검정 with 파이썬 (0) | 2024.11.15 |
웹 스크래핑의 기본 (0) | 2024.11.13 |