기본 미션
교차 검증을 그림으로 설명하기
교차 검증이란? 모델의 성능을 평가하기 위해서 training data로 학습시키고, test data로 성능을 평가한다. 성능 좋은 모델을 찾기 위해 최적의 파라미터를 찾아야하는데 이 파라미터를 찾기 위해서는 파라미터 값을 바꿔가면서 training data의 정확도를 확인해야 한다. 하지만 정확도를 확인하기 위해 테스트를 해도 100% 신뢰할 수 없다. 우연히 맞추기 쉬운 데이터가 뽑혔을 수도 있기 때문이다. 그래서 데이터를 일정 비율로 나눠서 차례대로 학습을 시키고 정확도를 측정한다. 예를 들어 Split1에서는 Fold2~5로 학습을 시키고 Fold1로 정확도를 측정한다. 이를 K번 반복하여서 평균 정확도를 측정하는 방법이다. 이를 통해 일반적인 정확도와 성능을 알 수 있다. 교차 검증은 파라미터를 찾을 때에도 쓰이고, 모델을 선정하거나 성능을 측정할때도 사용한다.
선택 미션
Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기
개념 정리
불순도와 정보 획득이란? 불순도는 얼마나 다양한 정보가 모여있는지를 나타내는 정도이고, 정보 획득은 불순도의 차이를 말한다. 예를 들어 성별을 구분하는 머신러닝 모델을 만든다고 했을때 남자 데이터 100개와 여자 데이터 100개를 섞어 데이터셋을 만들었다. 200개의 데이터를 남100:여100으로 나눠야지 남50+여50:남50+여50으로 똑같이 나누면 안됀다. 제대로 나눌수록 불순도는 낮아지고 정보 획득은 높아진다.
지니 불순도 계산식: 1 - (양성 클래스 비율^2 + 음성 클래스 비율^2)
엔트로피 불순도 계산식: - 음성 클래스 비율 * log2(음성 클래스 비율) - 양성 클래스 비율 * log2(양성 클래스 비율)
min_impurity_decrease: 불순도의 감소량으로, 불순도의 감소량이 매개변수 값보다 작으면 분할을 안 한다. 그래서 매개변수 값이 클수록 간단한 모델이 나오고, 작을수록 복잡한 모델이 나온다. 성능은 그냥 max_depth를 설정한 것보다 높게 나온다. 가지치기를 잘 하면 좋은 모델을 얻을 수 있을 것 같다.
from sklearn.model_selection import GridSearchCV
params = {'min_impurity_decreas':[0.0001, 0.0002, 0.0003, 0.0004, 0.0005]}
gs = GridSearchCV(DecisionTreeClassifier(random_state=42), params, n_jobs=-1)
엑스트라 트리는 랜덤 포레스트와 비슷하지만 부트스트랩 샘플을 사용하지 않는다. 전체 데이터를 사용하면서 분할도 최적의 분할이 아닌 랜덤 분할을 사용한다. 랜덤 포레스트는 앞에서 배운 정보의 획득량이 최대가 되도록 최적의 분할을 하지만 엑스트라 트리는 무작위로 분할 한다는 것이다. 이를 통해 GI는 줄어들 수 있지만 연산량이 줄어들어 많은 트리를 학습시킬 수 있다고 한다.
그레디언트 부스팅은 깊이가 얕은 트리를 사용하여 이전 트리의 오차를 보완하는 방식으로 앙상블하는 방법이다. 경사하강법을 사용하여 트리를 앙상블에 추가하고, 분류에서는 로지스틱 손실 함수를 사용하고 회귀에서는 평균 제곱 오차 함수를 사용한다.
히스토그램 기반 그레이디언트 부스팅은 정형 데이터를 다루는 머신러닝 알고리즘 중에 가장 인기가 많다고 한다. 대용량 데이터를 빠른 속도로 학습할 수 있다. 데이터를 정렬하지 않고 노드에서 히스토그램을 생성해 트리를 구성한다.
메모
이제 슬슬 어려운 내용이 나오는것 같다...
'혼공단' 카테고리의 다른 글
[혼공단 11기] 혼공머신 6주차 (0) | 2024.02.17 |
---|---|
[혼공단 11기] 혼공컴운 5주차 (0) | 2024.02.01 |
[혼공단 11기] 혼공머신 3주차 (0) | 2024.01.18 |
[혼공단 11기] 혼공머신 2주차 (0) | 2024.01.17 |
[혼공단 11기] 혼공머신 1주차 (0) | 2024.01.08 |