데이터분석
53. Classification 모델링
장수우
2024. 2. 9. 14:59
학습 주제
- Classification 모델링이란?
- Classification 모델 종류
- Classification 모델 성능 평가
- scikit-learn 사용법 학습
- Classification 모델 실습
주요 학습 내용
- Classification 모델링 정의
- 분류 모델은 데이터를 다양한 클래스로 분류하는데 사용
ex) 이메일 스팸 감지, 질병 진단, 이미지 인식 등
- 분류 모델은 데이터를 다양한 클래스로 분류하는데 사용
- Classification 모델 종류
- 이진 분류 (Binary Classification)
- 다중 클래스 분류 (Multiclass Classification)
- 다중 레이블 분류 (Multilabel Classification)
- Classification 알고리즘 종류
- Logistic Regression
- 이진 분류 문제에 자주 사용 - Decision Tree
- 직관적이고 시각화 하기 쉽다. - Random Forests
- Support Vector Machines
- 복잡한 분류 문제에 효과적 - Deep Learning
- 고급 분류 문제, 이미지 및 음성 인식에 사용
- Logistic Regression
- Classification 모델 성능 평가
- Confusion Matrix
- Precision = TP / (TP + FP) : ex) spam으로 예측된 리뷰 중 얼마나 실제로 spam인가 ?
- Recall = TP / (TP + FN) : ex) 실제 spam중의 얼마나 spam으로 예측되었나?
- Accuracy : (TP + TN) / (TP + TN + FP + FN)
- Confusion Matrix
실제 / 예측 | Positive 예측 | Negative 예측 |
Positive 실제 | True Positive (TP) | False Negative(FN) |
Negative 실제 | False Positive (FP) | True Negative(TN) |
- True Positives & False Positives
- 스팸리뷰 classification의 경우
- True Positive : 스팸리뷰를 스팸리뷰라 판정
TPR : TP / (TP + FN)
- False Positive : 정상리뷰를 스팸리뷰가 판정하는 경우
FPR : FP / (FP + TN) - 모든 리뷰를 스팸이라고 판정하면?
- TPR은 100% 이지만 FPR 도 100% - 모든 리뷰를 정상이라고 판정하면?
- FPR 은 0 %가 되지만 TPR도 0 % - Binary Classifier는 확률을 리턴해준다.
- 어떤 threshold를 사용할지 결정하는데 사용하는 것이 ROC커브와 AUC
- 스팸리뷰 classification의 경우
- ROC 커브
- ROC : Receiver Operating Characteristic
- Binary classifier의 정확도를 보기위한 용도로 사용한다. - True Positive Rate를 Y축, False Positive Rate를 X축으로 그려진 그래프
- TPR : 스팸 판정 시 맞을 확률, FPR : 스팸이 아닌 것들을 스팸 판정하는 확률
- 이 그래프를 통해 TPR(높)과 FPR(낮) 을 최적의 위치에서 조정한다.ROC 커브의 밑면적을 계산하면 바로 AUC가 나온다.
- ROC : Receiver Operating Characteristic
- AUC(Area under te Curve)
- 0부터 1사이의 값을 리턴한다.
- 1에 가까우면 ML 모델이 굉장히 정확함을 의미
- 0.5는 랜덤 추정에 가까움을의미
- 0에 가까우면 데이터에 뭔가 문제가 있다. - AUC 값을 보고 binary classification의 경우에는 threshold를 결정한다.
- 0부터 1사이의 값을 리턴한다.
- scikit-learn 학습
- 큰 흐름 (Hold Out 사용 시)
- 먼저 머신러닝 알고리즘과 모델 성과 지표 결정
- 데이터셋 로딩
- 데이터셋을 훈련 데이터와 데스트 데이터로 분리
- 훈련 데이터 전처리
- 훈련 데이터로 모델 빌딩
- 테스트 데이터 전처리
- 레이블 정보 제외 테스트 데이터를 모델에 입력으로 지정
- 위 결과물과 정답 레이블 비교하여 성과계산
- 큰 흐름 (Hold Out 사용 시)
- 피처 추출
- 피처 값들을 모델 훈련에 적합한 형태로 바꾸는 것을 지칭한다.
- Feature extraction
- Loading features from dicts
- Feature hashing
- Text feature extraction
- Image feature extraction - Preprocessing data
- 숫자 필드 값 범위 표준화
- 가능한 값의 범위를 특정 범위(0~1)로 변환해야한다.
- Feature Scaling 혹은 정규화 라고 한다. - Imputation of missing values
- 비어있는 필드들의 값을 어떻게 채울 것인가? - 카테고리를 숫자로 변환
ex ) Red, Blue, Orange, White, Black => 1, 2, 3, 4, 5 - Encoder 들간의 차이점
- OneHotEncoder : 서로 관계 없는 카테고리들을 인코딩
- LabelEncoder : 레이블 필드를 인코딩하는 경우
- OrdinalEncoder : 순서가 있는 카테고리들을 인코딩 하는 경우
- 피처 변환
- 숫자 필드 값의 범위 (0~1)로 변환
- Feature Scaling 혹은 Normalization이라 부른다. - sklearn.preprocessing 모듈 아래 스케일러 존재
- StandardScaler : 각 값에서 평균을 빼고 이를 표준편차로 나눈다. 값의 분포를 정규분포를 따르게 변환
- MinMaxScaler : 모든 값을 0~1 사이로 스케일, 각 값에서 최소값을 빼고 (최대값 - 최소값) 으로 나눈다.
- RobustScaler
- MaxAbsScaler - sklearn.preprocessing 모듈 아래 두 개의 Imputer 존재
- Simplelmputer : 간단한 통계(평균, 중앙값, 최다 빈도 또는 상수)를 지정하여 누락된 값을 대체
- IterativeImputer : 결측값이 있는 각 피처를 다른 피처들의 함수로 지정
- 숫자 필드 값의 범위 (0~1)로 변환
- 모델 데스트
- Hold out 테스트 : train_test_split
- Cross Validation (X-Fold) 테스트 : cross_validate
from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_validate
- 파이프 라인 사용 해보기
from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler X, y = make_classification(random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) pipe = make_pipeline(StandardScaler(), LogisticRegression()) pipe.fit(X_train, y_train) pipe.score(X_test, y_test)
- Classifiaction 리포트 생성
from sklearn.metrics import classification_report classificationReport = classification_report(expected, predicted) # recall = 정답값, f1-score = 예측값
- 이후 타이타닉 파일, 당뇨병 여부 예측 문제를 가지고 머신러닝 실습을 진행하겠습니다.
공부하면서 어려웠던 점
- -
반응형