25일차 강의 : 통계기반 데이터 활용 (분류)

Luis_J·2024년 10월 15일
0

MS_AI_School 5기

목록 보기
25/48
post-custom-banner

Summary

파이썬을 활용한 분석이 오히려 쉽고 직관적이고 다양하게 접근할 수 있습니다.

Introduction

김자영 강사님
통계 관련 이론 내용을 기반으로 파이썬 실습을 진행합니다.

Code, Conept & Explanation

K 폴드 교차 검증

홀드아웃 검증 vs K-폴드 교차검증

K-폴드 교차검증 :
K개로 나누고 K-1개 학습 1개 검증
k번 반복 실행

전체 데이터를 train과 test로 나눔
train 중 교차 검증 (Fold1~Fold5)

train : 학습, 검증
test: 최종 검증

데이터가 너무 적은 경우는 test를 따로 빼지 않기도 합니다.

회귀 모듈 및 함수 정리

데이터 전처리 모듈 : sklearn.preprocessing
함수/클래스 : StandardScaler 데이터 스케일링 (표준화 : 평균0, 표준편차1)

분류

LinearRegression

로지스틱 회귀 개념
종속 변수가 범주형일때, 수행할 수 있는 회귀분석 기법의 한 종류
독립변수들의 선형 결합을 이용하여 개별 관측치가 속하는 집단을 확률로 예측
선형회귀의 출력값을 시그모이드 함수에 입력하여 0~1 사이의 확률로 변환

이진 분류 뿐만 아니라 다중 분류에도 사용할 수는 있습니다

Linear Regression VS Logistic Regression

h(x) = wx+b
선형회귀 공식을 응용해서 Logistic Regression 에 활용

시그모이드 함수(로지스틱 함수)

결과를 0과 1 사이의 확률로 변환하는 함수

공부 시간에 따른 성적

K-Nearest Neighbors, KNN 알고리즘

주변의 가장 가가운 K개의 샘플을 통해 값을 예측

단점 : 이상치에 민감 (피처 스케일링이 중요)
피처의 중요도를 반영하지 않습니다.

머신러닝 알고리즘

Decision Tree 의사결정트리

데이터의 특성을 바탕으로 분기를 만들어 트리 구조로 의사결정 과정을 모델링

루트 노드 Root node 가장 상위에 위치한 노드, 첫번째 규칙 조건
내부 노드 Internal node 규칙 조건

depth 숫자가 중요

데이터 분할 기준
Information Gain 정보이득 : 분할 전후의 엔트로피 차이
엔트로피(Entropy) : 데이터의 혼잡도

Gini Impurity 지니 불순도 : 데이터의 혼합 정도를 나타내는 지표
0 이면 가장 순수
0.5 이면 불순도가 가장 높다

지니 불순도는 계산이 빨라서 더 자주 사용합니다.
시험 문제, 자격증 문제로 자주 나옵니다.

Decision Tree 장단점

장점 : 해석하기 쉽습니다
피처 스케일에 거의 구애 받지 않습니다 (독립변수 피처스케일이 필요하지 않다)

단점 : 트리가 너무 깊어지면, 과적합
최적의 트리 찾기가 어렵습니다, 하이퍼 파라미터 튜닝이 어렵습니다
데이터 클래스 불균형이 실한 경우, 소수의 클래스는 선택되지 않을 확률이 높다

가자치기를 위한 하이퍼 파라미터 (Hyper parameter)

max_depth 트리의 최대 깊이 규정. 깊이가 깊어지면 과적합 문제가 발생할 수 있으므로 제어 필요
과도한 가지치기는 underfitting 과소적합 발생시킬 수 있으므로 주의

max_depth=3 인경우, depth 3 이후로 더 이상 분할하지 않습니다

가지치기 (min_samples)

앙상블 학습

여러 개의 모델을 결합하여 더 강력한 예측 모델을 만드는 기법
박사 1명 vs 학사 10명

장점 : 성능 향상, 안정성, 일반화, 편향 감소, 상호보완
그렇지만 과적합 발생할 수 있어 튜닝 필요함

단점 : 계산 비용 (시간과 리소스 많이 필요)
복잡성, 해석의 어려움

앙상블 학습 유형

  1. 보팅 Voting
    서로 다른 여러 알고리즘을 투표 통해 예측
    하드보팅 : 다수결 원칙
    소프트보팅 : 각 모델의 예측 확률을 평균하여 최종 예측 결정

Decision Tree + KNN + LinearRegression

  1. 배깅 Bagging
    동일한 알고리즘을 사용
    데이터 샘플을 다르게

대표적으로, RandomForest

  1. 부스팅 Boosting
    순차적으로 학습
    이전 단계에서 오분류된 데이터에 더 높은 가중치를 부여하여 학습

tree 기반으로 보통 많이 사용

AdaBoost 초기 모델, 오래돼서 잘 사용하지 않음
Gradient Boosting 시간이 오래 걸림
XGBoost 캐글 대회 상위 팀에서 자주 사용
LightGBM
CatBoost

  1. 스태킹 Stacking

RandomForest

샘플 데이터가 다름
의사결정트리를 결합
분류와 회귀 모두 적용 가능
배깅(Bagging, Bootstrap Aggregating) 기법 사용
랜덤 피처 선택

RandomForest 주요 하이퍼파라미터

트리 관련 파라미터
n-estimators 결정트리 개수
max_depth 각 트리 최대 깊이
min_sample_split 필요한 최소 샘플 수
min_sample_leaf

Boosting 알고리즘

bagging : parallel
boosting : sequential

분류 모델의 성능평가지표

  1. Accuracy : 정확도
  2. Precision : 정밀도
  3. Recall : 재현율 (또는 민감도)
  4. F1 Score F1 점수
  5. ROC/AUC ROC 곡선과 AUC

Confusion Matrix 혼동행령

실제값과 예측값 표를 만듭니다
False 로 예측했는데 맞은 경우

상황에 따라 재현율이 중요하기도 하고
정밀도가 중요하기도 합니다.

재현율 (또는 민감도) : 암 검사

정밀도 : 스팸 필터링, 광고타겟팅

StratifiedKFold

분류모델에서는 StratifiedKFold
회귀모델에서는 KFold

GridSearchCV

교차검증으로 최적 파라미터를 찾습니다.
max_depth 와 min_samples_split를 다양하게 시도해 최적의 파라미터를 찾아
가장 높은 acccuracy 를 구합니다.

refit=True 최적의 하이퍼 파라미터를 찾은 후, 최종 모델을 만듭니다.
bestestimator 속성을 통해 접근

Challenges & Solutions

Results

What I Learned & Insights

반복할수록 이전보다 조금씩 더 많은 내용들이 보입니다.
당장 다 이해할 수 없을지라도
꾸준히 매일매일 학습하고 가까워지는 자세가 중요합니다.

Conclusion

日日新 又日新 "Renew yourself daily, And again, renewed day after day."

profile
New life & History
post-custom-banner

0개의 댓글