1. 결정 트리
* 결정 트리: 예/아니오에 대한 질문을 이어나가면서 정답을 찾아 학습하는 알고리즘
* 불순도: 결정 트리가 최적이 질문을 찾기 위한 기준
* 정보이득: 부모노드와 자식노드의 불순도 차이
* 가지치기: 결정트리는 제한 없이 성장하면 과대접합되기 쉽기 때문에 가지치기로 성장을 제한
* 특성 중요도: 결정 트리에 사용된 특성이 불순도를 감소하는데 기여한 정도, 쉽게말해 특성이 트리에서 유용했는지를 판단하는 정도
* pandas
- info()는 데이터 프레임의 요약된 정보를 출력, 인덱스/컬럼타입/메모리/Null개수 등
- describe()는 데이터프레임의 열의 통계값 제공, 최소/최대/평균/표준편차 등
* scikit-learn
- DecisionTreeClassifier: 결정 트리 분류 클래스
* criterion 매개변수는 불순도를 지정, 기본값=gini
* splitter 매개변수는 노드를 분할하는 전략을 선택, 기본값=best
* max_depth은 트리가 성장할 최대 깊이를 지정
* min_samples_split, max_features 등
- plot.tree()는 결정 트리 모델을 시각화
* max_depth은 트리가 성장할 최대 깊이를 지정
* feature_names 매개변수로 특성의 이름 지정
* filled 매개면수를 True로 지정하면 노드가 색칠됨
2. 교차 검증과 그리드 서치
* 검증 세트: 하이퍼파라미터 튜닝을 위해 모델을 평가할 때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트
* 교차 검증: 훈련 세트를 여러 폴드로 나눈 다음 한 폴드가 검증 세트의 역할을 하고 나머지 폴드에서는 모델을 훈련, 교차 검증은 이런 식으로 모든 폴드에 대해 검증 점수를 얻어 평균하는 방법
* 그리드 서치: 하이퍼파라미터 탐색을 자동화해 주는 도구, 탐색할 매개변수를 나열하면 교차 검증을 수행하여 가장 좋은 검증 점수의 매개변수 조합을 선택
- 이후 선택된 매개변수 조합으로 최종 모델을 훈련
* 랜덤 서치: 연속된 매개변수 값을 탐색할 때 유용, 탐색할 값을 직접나열하는 것이 아니고 탐색 값을 샘플링할 수 있는 확률 분포 객체를 전달
* scikit-learn
- cross_validate()교차 검증을 수행하는 함수
* 첫 번째 매개변수는 모델 객체, 두 번째 세 번째 매개변수는 특성과 타깃 데이터
* scoring 매개변수에 검증에 사용할 평가지표 지정
* cv 매개변수에 교차 검증 폴드 수 지정 기본값 =5
1. 회귀일 때는 KFold 클래스사용
2. 분류일 때는 StratifiedKFold 클래스 사용
* n_job 매개변수는 교차 검증을 수행할 때 사용할 cpu코어 수를 지정
* return_train_score 매개변수를 True로 지정하면 훈련세트의 점수 반환
- GridSearchCV는 교차 검증으로 하이퍼파라미터 탐색을 수행
* 최상의 모델을 찾고 훈련 세트 전체를 사용해 최종 모델을 훈련
- RandomizedSearchCV는 교차 검증으로 랜덤한 하이퍼파라미터 탐색을 수행
3. 트리의 양상블
* 양상블 학습: 더 좋은 예측 결과를 만들기 위해 여러 개의 모델을 훈련하는 머신러닝 알고리즘
* 랜덤 포레스트: 대표적인 결정 트리 기반의 양상블 학습 방법, 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택하여 트리를 만듬
* 엑스트라 트리: 결정 트리를 사용하여 양상블 모델을 만들지만 부트스트랩 사용을 하지 않고, 랜덤하게 노드를 분할해 과대적합을 감소시킴
* 그레이디언트 부스팅: 결정 트리를 연속적으로 추가하여 손실 함수를 최소화하는 양상블 방법, 속도는 느리지만 좋은 성능을 기대할 수 있고 속도를 개선한 것이 히스토그램 기반 그레이디언트 부스팅임
* scikit-learn
- RandomForestClassifier 랜덤 포레스트 분류 클래스
* n_estimators 매개변수는 트리의 개수를 지정
* criterion 매개변수는 불순도를 지정
* max_depth는 트리가 성장할 최대 깊이를 지정
* min_samples_sploit은 노드를 나누기 위한 최소 샘플 개수, 기본값=2
* max_features 매개변수는 최적의 분할을 위해 탐색할 특성의 개수를 지정
* bootstrap 매개변수는 부트스트랩 샘플을 사용할지 지정
* oob_score는 OOB 샘플을 사용하여 훈련한 모델을 평가할지 지정
* n_job 매개변수는 벙렬 실행에 사용할 cpu 코어 수를 지정
- ExtraTreesClassifier 엑스트라 트리 분류 클래스
* bootstrap 매개변수 기본값 = False
* oob_scoreㄴ 매개변수 기본값 = False
* n_jobs 매개변수는 cpu 코어수 지정 기본값=1, 모든코어는 -1
- GradientBoostingClassifier 그레이디언트 부스팅 분류 클래스
* loss 매개변수는 손실 함수 지정
* learning_rate 매개변수는 트리가 양상블에 기여하는 정도
* n_estimators 매개변수는 부스팅 단계를 수행하는 트리의 개수
* subsample 매개변수는 사용할 훈련 세트의 샘플 비율을 지정
* max_depth 매개변수는 트리의 최대 깊이
- HistGradientBoostringClassifier 히스토그램 기반 그레이디언트 부스팅 분류 클래스
* learning_rate 매개변수는 학습률이라고 함 기본값=0.1
* max_iter 부스팅 단계를 수행하는 트리의개수
* max_bins 입력데이터를 나눌 구간의 개수
'[ML&DL]' 카테고리의 다른 글
[ML&DL] 딥러닝 입문 (0) | 2023.03.13 |
---|---|
[ML&DL] 비지도학습 (0) | 2023.03.10 |
[ML&DL] 다양한 분류 알고리즘 (0) | 2023.03.08 |
[ML&DL] 회귀 알고리즘과 모델 규제 (0) | 2023.03.07 |
[ML&DL] 데이터 다루기 (0) | 2023.03.06 |