출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정
돌다리도 다시 두들겨보고 건너는 개념 복습 게시물
Hyper-Parameter
1.Learning rate
2. Depth, number of leaves (모델의 깊이와 잎사귀 개수 제한)
3. Column Sampling Ratio: 컬럼 선택 랜덤
이렇게 계속 랜덤하게 다른 피쳐들로 생성된 트리들을 만든다.
4. Row sampling ratio: 컬럼이 아니라 row를 랜덤하게 선택하여 만든다.
이러한 파라미터 변수명은 각 모델들마다 약간씩 차이가 있다.
Category 변수 사용 가능 여부도 XGboost는 numeric만 가능하므로 전처리가 따로 필요한 반면
LightGBM과 CatBoost는 pandas의 category 타입을 사용할 수 있다.
하이퍼파라미터 튜닝: 모델 설정값 최적화
방법1) Manual Search: 자동화 툴 없이 하나 씩 실험 테스트하는 것
방법2) Grid Search: 가능한 모든 것 테스트해서 찾기(완전 탐색 느낌)
문제점: 데이터 크기, 테스트 범위에 따라 시간이 많이 걸릴 수 있음
방법3) Random Search: 파라미터 랜덤하게 설정하고 테스트하기
그리드 서치보다 좀 더 효율적으로 하는 것
방법4) Bayesian Optimization: 처음에 랜덤서치(방법3)을 수행하다가 성능이 좋은 구간을 집중적으로 탐색하는 방법
오래하면 오래할 수록 잘 나옴. 그러다가 중간중간 랜덤서치를 수행하여 혹여나 놓친 최적 구간을 검토까지 함
요즘 트랜드, 가장 효율적으로 여겨지는 방법
Optuna
하이퍼 파라미터 튜닝 오픈소스 프레임워크: 방법4 제공을 비롯 여러 방법을 제공함
쉬운 Paralleization(병렬화) -> 분산처리에도 용이
<간단한 예제>
1. 목적함수(objective) 최적화 정의. 여기서는 최솟값 찾기
2. trial을 이용해 하이퍼파라미터 제안 (x값이 -10에서 10범위 내로)
3. study는 optimize 방법을 100번 시도하는 것을 보여주는 객체
Optuna는 Storage API를 통해 하이퍼 파라미터 검색 결과 저장 可
RDB, Redis와 같은 persistent 저장소에 탐색결과를 저장해서 한 번 탐색 후, 다음에 이어서 다시 可
Optuna는 시각화 기능도 제공한다.
Ensemble(앙상블): 단일 알고리즘 대신 여러 알고리즘을 합쳐서 성능 좋은 모델을 만들기
Ensemble learning: 여러 개 결정 트리를 결합해 하나의 결정 트리보다 더 좋은 성능을 내는 ML 기법.
핵심: Weak classifier(약 분류기) 결합하여 Strong classifier(강 분류기) 만드는 과정
[기법 1: Bagging = Boostrap Aggregation] : 훈련 set에 중복 허용하여 샘플링 cf) 중복 금지 샘플링은 Pasting(페이스팅)
보통 overfitting 방지에 효과적. ex) Random Forest
[기법 2: Voting(보팅)] : 서로 다른 알고리즘이 도출해 낸 결과물에 대한 최종투표 결과를 출력
기법 1과 같은 투표방식이지만 보팅은 다른 알고리즘 model 조합 사용 <-> 배깅은 같은 알고리즘 내 다른 sample 사용
Hard vote: 결과물에 대한 최종 값을 투표해서 결정 (다수결 원칙같은 것)
Soft vote: 최종 결과물이 나올 확률 값을 모두 더해서 각 결과물에 대한 확률을 구한 뒤 최종 값을 도출
[기법 3: Boosting] : 순차적으로 이전 오차 보완(학습)하며 가중치 부여 ex) LightGBM, XGBoost, CatBoost
보통 배깅방식보다 성능 좋음
단점: 순차적(Sequential) 학습 특성으로 배깅보다 속도 느리고 overfitting 可이므로 주의 요
[기법 4: Stacking] : 여러 모델들을 활용해 각 예측 결과 도출 후, 그 결과를 종합해 최종 예측 결과를 만드는 것
base learner: 중간의 여러개 모델들
meta model: 최종 결합
장점: 성능향상. 경진대회에서 보통 마지막으로 성능 쥐어짜내는 트릭으로 사용됨
단점: overfitting 위험, 경진대회에서 짜내는 용도로 쓰기엔 너무 많은 모델 요구해서 구현 어려움
Stacking으로 만든 것은 비현실적이라는 지적 -> 요즘 경진대회는 모델시간 제한 有로 stacking 남발 제한
-> 요즘 잘 안씀
'Programming > Python' 카테고리의 다른 글
인공지능(AI) 기초 (0) | 2024.02.07 |
---|---|
인공지능 기본 수학 (선형대수: 벡터, 행렬, 경사하강법) (1) | 2024.02.05 |
기본 개념 정리 3 (features) (0) | 2024.01.30 |
트리 모델, TabNet (0) | 2024.01.27 |
기본 개념 정리 2 (ML) (0) | 2024.01.16 |