내일배움캠프_QAQC 1기/머신러닝의 이해와 라이브러리 활용

머신러닝 심화_회귀, 분류 모델링 심화

이지응:) 2025. 2. 17. 19:15

강의 자료 : 2. 회귀, 분류 모델링 심화

실습 자료 :

머신러닝 심화_회귀, 분류 모델링 심화.ipynb
0.32MB

 

의사결정나무

  • 의사결정규칙을 나무 구조로 나타내어 전체 자료를 몇 개의 소집단으로 분류하거나 예측을 수행하는 분석 방법
  • 타이타닉의 예시 - 성별의 기준으로 의사결정나무 시각화

 

  • 설명
    • 루트 노드(Root Node): 의사결정나무의 시작점. 최초의 분할조건
    • 리프 노드(Leaf Node): 루트 노드로부터 파생된 중간 혹은 최종 노드
    • 분류기준(criteria): sex는 여성인 경우 0, 남성인 경우 1로 인코딩. 여성인 경우 좌측 노드로, 남성인 경우 우측 노드로 분류
    • 불순도(impurity)
      • 불순도 측정 방법 중 하나 인 지니 계수는 0과 1사이 값으로 0이 완벽한 순도(모든 샘플이 하나의 클래스), 1은 완전한 불순도(노드의 샘플의 균등하게 분포) 됨을 나타냄
      • 리프 노드로 갈수록 불순도가 작아지는(한쪽으로 클래스가 분류가 잘되는)방향으로 나무가 자람
    • 샘플(samples): 해당 노드의 샘플 개수(891개의 관측치)
    • 값(value): Y변수에 대한 배열. 549명이 죽었고(Y = 0), 342명이 살았음(Y = 1)
    • 클래스(class)
      • 가장 많은 샘플을 차지하는 클래스를 표현
      • 위에서는 주황색(Y = 0 다수), 파란색(Y=1 다수)를 표현

 

의사결정나무 장점

  • 쉽고 해석하기 용이
  • 다중분류와 회귀에 모두 적용이 가능
  • 이상치에 견고하며 데이터 스케일링이 불필요(데이터의 상대적인 순서를 고려해서)

의사결정나무 단점

  • 나무가 성장을 너무 많이하면 과대 적합의 오류에 빠질 수 있다.
  • 훈련 데이터에 민감하게 반응하여 작은 변화가 노이즈에도 나무의 구조가 크게 달라짐(불안정성)

Python 라이브러리

  • sklearn.tree.DecisionTreeClassifier
  • sklearn.tree.DecisionTreeRegressor
의사결정나무의 과적합과 불안정성에 대한 문제를 해결하기 위해 나무를 여러 개 만들어 숲을 만드는 것

 

랜덤 포레스트

 

배깅(Bagging)의 원리

  • 언제나 머신러닝은 데이터의 부족이 문제
  • 이를 해결 하기 위한 Bootstrapping + Aggregating 방법론
    • Bootstrapping: 데이터를 복원 추출해서 유사하지만 다른 데이터 집단을 생성하는 것 -> 형태 분포는 비슷하지만 미묘하게 데이터셋이 다름
    • Aggregating: 데이터의 예측,분류 결과를 합치는 것
    • Ensemble(앙상블): 여러 개의 모델을 만들어 결과를 합치는 것

 

 

 

Tree를 Forest로 만들기

  • 여러 개의 데이터 샘플에서 각자 의사결정트리를 만들어서 다수결 법칙에 따라 결론을 냄
  • ex) 1번 승객에 대해서 모델 2개는 생존, 모델 1개는 사망을 분류 => 1번 승객은 최종적으로 생존으로 분류

 

랜덤 포레스트 장점

  • Bagging 과정을 통해 과적합을 피할 수 있다.
  • 이상치에 견고하며 데이터 스케일링이 불필요
  • 변수 중요도를 추출하여 모델 해석에 중요한 특징을 파악 할 수 있다.

랜덤 포레스트 단점

  • 컴퓨터 리소스 비용이 크다.
  • 앙상블 적용으로 해석이 어렵다.

Python 패키지

  • sklearn.ensemble.RandomForestClassifer
  • sklearn.ensemble.RandomForestRegressor

 

최근접 이웃 알고리즘 K-Nearest Neighbor(KNN)

주변의 데이터를 보고 내가 알고 싶은 데이터를 예측하는 방식

 

하이퍼 파라미터

  • 파라미터 : 머신러닝 모델이 학습 과정에서 추정하는 내부 변수로 자동으로 결정되는 값
  • Ex) 선형회귀에서 가중치와 편향
  • 하이퍼 파라미터 : 데이터 과학자가 기계 학습 모델 훈련을 관리하는데 사용하는 외부 구성변수로 모델 학습과정이나 구조에 영향을 미침

유클리드 거리(Euclidean Distance)

 

KNN 모델의 장점

  • 이해하기 쉽고 직관적
  • 모집단의 가정이나 형태를 고려하지 않음
  • 회귀, 분류 모두 가능함

KNN 모델의 단점

  • 차원 수가 많을 수록 계산량이 많아짐
  • 거리 기반의 알고리즘이기 때문에 피처의 표준화가 필요함

Python 라이브러리

  • sklearn.neighbors.KNeighborsClassifier
  • sklearn.neighbors.KNeighborsRegressor

 

부스팅 알고리즘

여러 개의 약한 학습기를 순차적으로 학습하면서 잘못 예측한 데이터에 가중치를 부여하여 오류를 개선해나가는 학습 방식

 

 

 

부스팅 알고리즘 종류

  • Gradient Boosting Model
    • 가중치 업데이트를 경사하강법 방법을 통해 진행
    • Python 라이브러리
      • sklearn.ensemble.GradientBoostingClassifier
      • sklearn.ensemble.GradientBoostingRegressor
  • XGBoost
    • 트리기반 앙상블 기법으로, 가장 각광받으며 Kaggle의 상위 알고리즘
    • 병렬학습이 가능해 속도가 빠름
    • Python 라이브러리
      • xgboost.XGBRegressor
      • xgboost.XGBRegressor
  • LightGBM
    • XGBoost와 함께 가장 각광받는 알고리즘
    • XGBoost보다 학습시간이 짧고 메모리 사용량이 작음
    • 작은 데이터(10,000건 이하)의 경우 과적합 발생
    • Python 라이브러리
      • lightgbm.LGBMClassifier
      • lightgbm.LGBMRegressor