Data Science

분류

Gauss1 2020. 10. 6. 23:55

1. 결정 트리

if/else 기반으로 규칙을 자동으로 찾아내서 분할

규칙이 많을 경우(분류 tree의 depth가 깊어질수록) 과적합

균일도가 높은 세트부터 먼저 선택할 수 있도록 규칙 조건을 만든다.

 

정보의 균일도를 측정하는 대표적인 방법

엔트로피(데이터 집합의 혼잡도)를 활용한 정보 이득 지수와 지니 계수가 있음

정보이득지수 = 1 - 엔트로피 지수

지니 계수: 0이 가장 평등하고 1이 불평등, 지니계수가 낮을 수록 데이터 균일도가 높은 것으로 판단해 이 기준으로 속성을 분할

 

결정트리의 장점

- 균일도라는 룰을 기반으로 하고 있어 알고리즘이 쉽고 직관적이며 시각화로 표현할 수 있음

- 균일도만 중요하므로 피처의 스케일링과 정규화 같은 전처리 작업이 필요없음

 

결정트리의 단점

- 과적합으로 정확도가 떨어짐

=> 이를 극복하기 위해 트리의 크기를 사전에 제한하는 경우가 많음

 

사이킷 런의 결정트리 알고리즘 클래스

DecisionTreeClassifier와 DecisionTreeRegressor 클래스가 있음

DecisionTreeClassifier는 분류를 위한 클래스이며 DecisionTreeRegressor는 회귀를 위한 클래스

사이킷런의 결정트리 구현은 CART(Classification And Regression Trees) 알고리즘 기반으로 분류 뿐만 아니라 회귀에서도 사용가능

 

DecisionTreeClassifier 파라미터

min_samples_split: 노드를 분할하기 위한 최소한의 샘플수로 과적합을 제어하는데 사용함, default는 2이고 작을수록 과적합

min_samples_leaf: leaf가 되기 위한 최소한의 샘플데이터 수, 과적합 제어 용도

max_features: 최적의 분할ㅇ르 위해 고려할 최대 피쳐 개수, default는 None(전체 feature 선정), sqrt, auto, log가 있음

max_depth: 트리의 최대 깊이를 규정, 과적합 방지

max_leaf_nodes: 말단 노드의 최대 갯수

 

결정 트리 모델의 시각화

Graphviz 패키지 사용

 

2. 앙상블 학습

여러개의 분류기를 생성하여 그 예측을 결합하는 방식

비정형 데이터의 분류는 딥러닝이 뛰어난 성능을 보이고 있지만 대부분의 정형 데이터 분류 시에는 앙상블이 뛰어난 성능을 나타냄

 

유형

- 보팅: 서로 다른 알고리즘의 분류기를 결합

- 배깅: 같은 유형의 알고리즘에서 데이터  샘플링을 서로 다르게 가져가면서 학습

(랜덤 포레스트)

- 부스팅: 여러개의 분류기를 순차적으로 학습을 하되 앞 분류기가 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 분류기에 가중치를 부여하면서 학습과 예측을 진행

 

보팅

- 하드 보팅: 다수결의 원칙

- 소프트 보팅: 모두 더한뒤 평균을 내서 최종 결과 선정

 

일반적으로 소프트 보팅이 적용됨

사이킷런의 VotingClassifier 클래스 이용

 

랜덤 포레스트

대표적인 배깅 알고리즘

분류기의 기반 알고리즘은 결정트리를 사용하며 전체 데이터에서 일부가 중첩되게 샘플링된 데이터 세트로 학습

데이터 세트를 중첩되게 분리하는 것을 부트스트래핑(bootstrappin) 분할 방식이라고 함

배깅(bagging)이 bootstrap aggregating의 줄임말

RandomForestClassifier 클래스를 이용

 

랜덤 포레스트 하이퍼 파라미터 및 튜닝

트리 기반의 앙상블 알고리즘은 하이퍼 파라미터가 너무 많고 그로 인해 튜닝을 위한 시간이 많이 소모된다는 단점이 있다.

그리고 튜닝 후 예측 성능이 크게 향상되지 않는 겨우가 많음

GridSearchCV로 하치퍼 파라미터 튜닝

 

GBM(Gradient Boosting Machine)

부스팅 알고리즘은 여러개의 약한 학습기를 순차적으로 학습 예측함녀서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식

 

XGBoost(eXtra Gradient Boost)

GBM에 기반하고 있지만 GBM의 단점인 느린 수행 시간 및 과적합 규제 부재 등의 문제를 해결해서 매우 각광을 받고 있습니다.

 

LightGBM

XGBoost보다 학습에 걸리는 시간의 훨씬 적고 메모리 사용량도 적으면서 예측 성능은 별다른 차이가 없음

적은 데이터 세트에 적용할 경우 과적합이 발생하기 쉽다(일반적으로 10000건 이하).

다른 GBM 계열의 트리분할 방법과 다르게 리프 중심 트리 분할 방식을 사용.

 

3. 스태킹 앙상블

스태킹은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 배깅 및 부스팅과 공통점을 지니고 있지만 다른 점은 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다는 것

현실 모델에 적용하는 경우는 많지 않고 캐글 같은 대회 사이트에서 조금이라도 성능 수치를 높이고 싶을때 사용

'Data Science' 카테고리의 다른 글

차원 축소  (0) 2020.10.13
회귀  (0) 2020.10.07
데이터 가공  (0) 2020.08.19
사이킷런(scikit-learn)  (0) 2020.08.14
Numpy, Pandas  (0) 2020.08.14