4주차
Ch. 05 트리 알고리즘
ㄴ 05-1 결정 트리
ㄴ 05-2 교차 검증과 그리드 서치
ㄴ 05-3 트리의 앙상블
05-1 결정 트리
✅info() : 데이터프레임의 각 열의 데이터 타입과 누락된 데이터 확인
✅describe() : 열에 대한 평균, 표준편차, 최소, 최대, 중간값, 1사분위수, 3사분위수 출력
이번에 쓸 데이터를 예시로 보면. 이러합니다 하하
데이터 준비는 간단히 보면~~
캐글의 red wine quality 데이터셋의 일부를 사용하규.
데이터 - alcohol, sugar, pH / 타깃 - class 이렇게 설정.
훈련/테스트셋 비율8:2로 설정하고 StandardScaler로 표준화까지 잇겟네여.
그리고 로지스틱회귀에 학습시키고 정확도 확인 & 계수 확인까지 햇습니당
근데 모델이 이상하게 바보인 사건..
너 학습하라니까 머한거야!!
다음으로 결정 트리를 사용해서 학습시켰다.
이번엔 과대적합... ㅡㅡ
결정 트리는 plot_tree()를 활용해서 그림으로 출력할 수 있다고 한다.
대박 싱기 ㅋ
특성 정보를 더 자세히 볼 수도 있다.
✅테스트 조건(sugar)
✅불순도(gini)
✅총 샘플 수(samples)
✅클래스별 샘플 수(value)
여기서 지니 불순도는 데이터를 분할할 기준을 정해주는 역할을 한다.
위에서는 -0.239를 결정해주었다고 볼 수 있다.
결정 트리에서 예측하는 방법은 리프 노드에서 가장 많은 클래스가 예측 클래스가 된다고 한당.
결정 트리는 가지치기를 할 수가 있는데,
✅트리의 최대 깊이 지정 : max_depth 지정
이것을 활용할 수 있다.
가지치기를 했을 때 더욱 이해하기 쉬워진다.
결정 트리 알고리즘은 표준화 전처리를 할 필요가 없다는 장점도 있다.
05-2 교차 검증과 그리드 서치
검증 세트는 모델이 과대적합인지 과소적합인지 판단하기 위해 사용한다.
이전에 데이터를 준비하면서 훈련 / 검증 / 테스트로 나눈 적이 있었는데
드디어 무슨 역할을 하는지 알게 되었다.
생각보다 중요한 친구인 듯.
기본 과제 : 교차 검증을 그림으로 설명하기
슬라이드로 그렸더니 화질이.. ㅎ
훈련 세트를 n번 떼어내어 평가하고, 각 검증 점수를 평균해서 최종 점수를 얻는다.
cross_validate()를 사용하면 거대한 출력값이 나온다........
훈련 시간, 검증 시간, score 인데, 폴드 수만큼 나온다.
여기서 최종 점수는 test_score키의 점수를 평균하면 된다.
점수를 평균하면 이렇다규한다. 음.
여기서 cross_validate()는 훈련세트를 섞지 않기 때문에 섞으려면 분할기를 사용하라는데..
기본적으로 회귀 - KFold / 분류 - StratifiedKFold 를 쓴단다.
폴드 수를 바꾸려면 분할기에서 n-splits 파라미터로 설정해주어야 한다.
이어서 하이퍼파라미터 설정을 도와주는 그리드 서치!
GridSearchCV를 사용하면 하이퍼파라미터 탐색과 교차 검증이 한 번에 수행된다고 한다. (우와대박..)
사용법은 { '탐색할 매개변수' : [탐색할 값] } 이렇게 딕셔너리로 설정하고,
GridSearchCV에 전달!
객체에 설정하고 fit()으로 서치하면 된당.
그리고 서치가 끝나면 검증 점수가 가장 높은 모델으로 다시 모델이 훈련되어
객체의 best_estimator_에 저장이 되어있단다..
왜이리 고능함?! 레전드 똑똑한 친구다.
✅best_estimator_ : 검증 점수가 가장 높은 모델
✅best_params_ : 최적의 매개변수
✅cv_results_['mean_test_score'] : 교차 검증의 평균 점수
✅argmax() : 가장 큰 값의 인덱스 추출
매개변수
✅min_samples_split : 노드를 분할하기 위한 최소 샘플 수
✅min_impurity_decrease : 노드를 분할하기 위한 불순도 감소 최소량
✅min_samples_leaf : 리프 노드가 되기 위한 최소 샘플의 개수
매개변수의 값이 수치일 때 값의 범위나 간격 설정, 또는 매개변수가 너무 많을 때에는
랜덤 서치를 사용할 수 있다.
정수 -> randint
실수 -> uniform
를 사용해서 랜덤으로 수를 넘겨주고 찾으라고 시키는 방식이라고 한다.
이제 하이퍼파라미터 조정도 시켜서 해야겟다. 아주 유용하겠어 (후후)
'Machine Learning' 카테고리의 다른 글
[혼공머신] 6주차_인공 신경망 / 심층 신경망 / 손실 곡선, 드롭아웃, 모델 저장, 콜백 (0) | 2025.02.23 |
---|---|
[혼공머신] 5주차_군집 알고리즘 / k-평균, 이너셔 / PCA (1) | 2025.02.16 |
[혼공머신] 3주차_로지스틱 회귀, 시그모이드, 소프트맥스 / 확률적 경사 하강법 (2) | 2025.01.26 |
[혼공머신] 2주차_회귀 / 특성 공학 / 변환기(Transformer) (4) | 2025.01.19 |
[혼공머신] 1주차_훈련, 테스트 셋 / 데이터 전처리 (3) | 2025.01.07 |