혼공 머신러닝 + 딥러닝 5장

cse 23·2023년 10월 25일
0

05 트리 알고리즘

05-1 결정트리

결정트리: 예/아니오에 대한 질문을 이어가면서 정답을 찾아 학습하는 알고리즘
-> 비교적 예측과정을 이해하기 쉽고 성능도 뛰어남
분순도: 결정트리가 최적의 질문을 찾기 위한 기준
정보이득: 부모 노드와 자식 노드의 분순도 차이 (결정 트리 알고리즘은 정보 이득이 최대화되도록 학습)
가지치기: 결정 트리의 성장을 제한하는 방법
특성중요도: 결정 트리에 사용된 특성이 불순도를 감소하는데 기여한 정도를 나타내는 값

info() : 데이터프레임의 요약된 정보를 출력
-> 인덱스와 컬럼 타입을 출력하고 널이 아닌 값의 개수, 메모리 사용량을 제공
describe() : 데이터프레임 열의 통계 값을 제공합니다. 수치형일 경우 최소,최대,평균,표준편차와 사분위값 등이 출력됌
percentiles 매개변수: 데이터프레임 열의 통계 값을 제공

DecisionTreeClassifier : 결정 트리 분류 클래스

  • citerion 매개변수: 불순도를 지정하며 기본값을 지니 불순도를 의미하는 gini , - - entropy를 선택하여 엔트로피 불순도를 사용가능
  • spliter 매개변수: 노드를 분할하는 전략을 선택
  • max_depth : 트리가 성장할 최대 깊이를 지정(기본값: None)
  • max_samples_split : 노드를 나누기 위한 최소 샘플 개수 (기본값: 2)
  • max_features 매개변수: 최적 분할을 위해 탐색할 특성의 개수를 지정 (기본값: None)

plot_tree() : 결정 트리 모델을 시각화

로지스틱 회귀로 와인분류하기
다운로드 주소: http://bit.ly/wine_csv_data

각 열의 데이터 타입과 누락된 데이터가 있는지 확인하는데 유용

descibe(): 열에 대한 통계를 출력해줌


StandardScaler 클래스를 사용해 훈련세트를 전처리 -> 테스트 세트를 변환

표준점수로 변환된 train_scaled와 test_scaled를 사용해 로지스틱 회귀모델 훈련

훈련세트(train_input)와 테스트 세트(test_input)로 결정트리 모델을 다시 훈련

05-2 교차 검증과 그리드 서치

검증세트: 하이퍼파라미터 튜닝을 위해 모델을 평가할때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트

판다스로 CSV데이터를 읽고

교차검증: 훈련세트를 여러 폴드로 나눈 다음 한 폴드가 검증세트의 역할을 하고 나머지 폴드에서는 모델을 훈련

그리드 서치: 하이퍼파라미터 탐색을 자동해 해주는 도구

하이퍼파라미터 튜닝
먼저 GridSearchCV클래스를 임포트하고 탐색할 매개변수와 탐색할 값의 리스트를 딕셔너리로 만듦

GridSearchCV클래스에 탐색 대상 모델과 params 변수를 전달하여 그리드 서치 객체를 만듦

  1. 탐색할 매개변수를 지정
  2. 그 다음 훈련세트에서 그리드 서치를 수행하여 최상의 평균 검증 점수가 나오는 매개변수 조합을 찾음(이 조합은 그리드 서치 객체에 저장됌)
  3. 그리드 서치는 최상의 매개변수에서 전체 훈련 세츠를 사용해 최종 모델을 훈련한다.(그리드 서치 객체에 저장됌)

from scipy.stats import uniform, randint
랜덤서치: 연속된 매개변수 값을 탐색할때 유용. 탐색할 값을 나열 하는것이 아니고 탐색 값을 샘플링 할수 있는 확률 분포 객체를 전달
-> 지정된 횟수만큼 샘플링하여 교차검증을 수행하기 떄문에 시스템 자원이 허락하는 만큼 탐색량 조절가능

cross_validate(): 교차 검증을 수행하는 함수
scoring 매개변수에 검증에 사용할 평가 지표를 지정할수 있다
GridSearchCV() : 교차검증으로 하이퍼파라미터 탐색을 수행, 최상위 모델을 찾은 후 훈련 세트 전체를 사용해 최종 모델을 훈련
RandomizedSearchCV : 교차 검증으로 랜덤한 하이퍼파라미터 탐색을 수행

05-3 트리의 앙상블

앙상블 학습: 더 좋은 예측 결과를 만들기 위해 여러개의 모델을 훈련하는 머신러닝 알고리즘
랜덤 포레스트: 대표적인 결정 트리 기반의 앙상블 학습 방법
-> 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택하여 트리를 만드는 것이 특징

cross_validate()함수를 사용해 교차검증을 수행

엑스트라 트리: 랜덤 포레스트와 비슷하게 결정 트리를 사용하여 앙상블 모델을 만들지만 부트스트랩 샘플을 사용하지 않다.(대신 랜덤하게 노드를 분할해 과대적합을 감소)
그레디언트 부스팅: 랜덤 포레스트나 엑스트라 트리와 달리 결정 트리를 연속적으로 추가하여 손실함수를 최소화하는 앙상블 방법

히스토그램 기반 그레이디언트 부스팅 : 그래디언트 부스팅의 속도를 개선한것

RandomForestClassifier : 랜덤 포레스트 분류 클래스

  • n_estimators 매개변수: 앙상블을 구성할 트리의 개수를 지정(기본값:100)
  • bootstrap 매개변수: 부트스트랩 샘플을 사용할지 지정(기본값: true)
  • ExtraTreesClassifier: 엑스트라 트리 분류 클래스
  • bootstrap 매개변수: 부트스트랩 샘플을 사용할지 지정(기본값: False)

GrandientBoostingClassifier : 그레이디언트 부스팅 분류 클래스

  • loss 매개변수: 손실 함수를 지정(기본값: deviance)
  • learning_rate 매개변수: 트리가 앙상블에 기여하는 정도를 조절 (기본값: 0.1)
  • n_estimators 매개변수: 부스팅 단계를 수행하는 트리의 개수 (기본값: 100)
  • subsample 매개변수: 사용할 훈련 세트의 샘플 비율을 지정 (기본값: 1.0)
  • max_depth 매개변수: 개별 회귀 트리의 최대 깊이(기본값:3)

HistGradientBoostingClassifier : 히스토그램 기반 그레이디언트 부스팅 분류 클래스

  • learning_rate 매개변수: 학습률 또는 감쇠율 (기본값: 0.1)
  • max_iter 매개변수: 부스팅 단계를 수행하는 트리의 개수 (기본값: 100)
  • max_bins 매개변수: 입력 데이터를 나눌 구간의 개수 (기본값: 255)

0개의 댓글