데이터 사이언스 기초

분류 분석 (머신 러닝)

skbaek1223 2024. 11. 27. 20:52

분류 분석은 머신 러닝의 결과 범주형 변수를 도출하려고 할 때 활용합니다.

 

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