빅데이터 부트캠프/머신러닝&딥러닝

빅데이터 부트캠프 23&24일차

Mecodata 2022. 8. 5. 09:23

앙상블

- 이미 만든 여러 분류기를 연결하여 더 좋은 분류기를 생성하는 방법

 

Simple Voting

- Hard Voting : 다수의 분류기들 간에 다수결로 최종 클래스를 선정하는 방법
- Soft Voting : 다수의 분류기들이 각각 분류한 확률값들을 기반으로 평균 확률값을 내어서 더 높은 확률값을 갖는 클래스로 최종 선정하는 방법

 

VotingClassifier 

- 개별 모델들하나의 분류기 객체에 담아 앙상블 학습을 진행

- Regressor 없이 모두 Classifier 담아져야함 (Regressor 앙상블은 VotingRegressor)

- 데이터셋 분리(train_test_split) 에 실행해야함

- from sklearn.ensemble import VotingClassifier

voting_clf = VotingClassifier(estimators=, voting =)

 

※ VotingClassifier 하이퍼파라미터

- estimators = 앙상블을 진행할 여러 모델들튜플 형식으로 입력

ex) estimators = [('지정명', 모델명), ('지정명', 모델명), ...]

- voting = 하드 보팅 혹은 소프트 보팅 설정 (기본값은 hard)

 

Bagging (Bootstrap Aggregating)

- 원 데이터 집합으로부터 크기가 같은 표본을 여러 번 단순 임의 복원추출하여 각 표본에 대해 분류기(classifiers)를 생성한 후 그 결과를 앙상블하는 방법

 

RandomForestClassifier

- 대표적인 배깅의 분류 알고리즘 중 하나

- 데이터를 반복 복원추출을 진행할 뿐만 아니라 변수 또한 임의로 추출하여 다양한 모델을 만드는 것

- 공분산을 줄이는 효과를 기대하기 위해 사용

- from sklearn.ensemble import RandomForestClassifier

forest = RandomForestClassifier()

Boosting

- 성능이 약한 변환 모델들을 진행하면서 조금씩 가중치를 부여하며 모델의 성능을 높이는 앙상블 기법

 

GradientBoostingClassifier

- 경사하강법에 기반하여 부스팅하는 분류 알고리즘
- 순차적으로 분류기들을 학습하기 때문에 학습시간이 상대적으로 오래걸림 

- from sklearn.ensemble import GradientBoostingClassifier

 

XGBClassifier

- 트리 기반의 앙상블 학습에서 각광받는 부스팅 알고리즘

Gradient Boosting 기반이지만 강력한 병렬 처리로 학습과 처리가 Gradient Boosting보다 빠름

- 예측 성능이 좀 떨어지는 시점에 실행을 종료하여 예측 성능이 뛰어남

- XGBoost 조기중단을 수행하려면 fit() 함수에 조기중단 파라미터 입력해야함


※ XGVClassifier 조기중단 하이퍼파라미터 

- early_stopping_rounds = 평가 지표 향상될 수 있도록 반복횟수 정의

- eval_metric = 조기 중단을 위한 평가지표 (logloss-이진 분류시 예측, 정답과의 오차값 계산),

- eval_set = 성능 평가를 수행할 데이터 셋
-> eval_set으로 반복 수행시마다 지정된 데이터 세트에서 eval_metric으로 지정된 평가 지표 함수로 예측 오류 측정

 

- from xgboost import XGBClassifier

xgb = XGBClassifier()

 

LGBMClassifier

- 대용량 데이터 처리에 적합하며 XGBoost에서 학습 속도를 업그레이드한 버전이라 XGBoost와 마찬가지로 병렬처리인 GPU를 지원하며 예측 성능도 XGBoost와 차이가 거의 없는 편

- 메모리를 적게 사용하며 현시점에서 가장 빠른 학습 속도의 부스팅 알고리즘
- 데이터 수가 10000건 이하일때는 과적합 문제를 일으킬 가능성이 높은 치명적인 단점이 존재 

- import lightgbm

- from lightgbm import LGBMClassifier

lgbm_clf = LGBMClassifier()

 

PCA(Principal Component Analysis)

- 차원 축소 기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환

- 여러 변수간에 존재하는 상관 관계를 이용해 이를 대표하는 주성분을 추출하여 차원을 축소
- 차원 축소시 기존 데이터의 정보 유실이 최소화

- PCA는 여러 속성의 값을 연산해야 하므로 속성의 스케일에 영향을 받음
- 여러 속성을 PCA로 압축하기 전에 각 속성값을 동일한 스케일로 변환하는 것이 필요
- 평균이 0, 분산이 1인 표준 정규 분포로 모든 속성값 변환 (StandardScaler)

- n_components = 기존 차원에서 몇차원으로 축소할지 설정 (PCA 하이퍼파라미터)

 

매니폴드 학습(manifold learning)

시각화 알고리즘으로 훨씬 복잡한 매핑을 만들어 더 나은 시각화를 제공 (PCA의 일부 중 하나) 

- 그중에서 t-SNE 알고리즘을 주로 사용 (t-Distributed Stochastic Neighbor Embedding)

 

- from sklearn.manifold import TSNE

tsne = TSNE(random_state=)
tsne.fit_transform()

 

make_pipeline

- Voting과 유사한 방법이며 입력해준 순서에 따라 앙상블 학습을 진행

- Classifier 끼리만 입력하거나 Regressor 끼리만 입력해야했던 voting과는 달리 Classifier와 Regressor 심지어 VotingClassifier, VotingRegressor, PCA 등 다양한 알고리즘을 입력할 수 있음

 

K-means 군집화 알고리즘

- 데이터를 K개의 군집(Cluster)으로 묶는(Clusting) 알고리즘

- 레이블(정답)이 주어지지 않았을 때 주어진 데이터를 묶는 비지도학습

- 군집화시에 PCA 적용해서 분류할 경우 신뢰도가 높아짐

- from sklearn.cluster import KMeans