[2022 하계 모각코] 5주차 목표 및 결과

vvon_joon·2022년 8월 3일
0

목표

5회차: 8/3 14:00 ~ 17:00
계획: 딥러닝 교재 Chapter5 학습, (시간이 남을 시 파이썬 복습)

결과

5-1. 결정 트리

개념정리

결정 트리

  • '예/아니오'에 대한 질문을 이어나가면서 정답을 찾아 학습하는 알고리즘
  • 비교적 예측 과정을 이해하기 쉽고 성능도 뛰어남

불순도

  • 결정 트리가 최적의 질문을 찾기 위한 기준
  • 사이킷런에는 지니 불순도와 엔트로피 불순도가 있음

정보 이득

  • 부모 노드와 자식 노드의 불순도 차이
  • 결정 트리 알고리즘은 정보 이득이 최대화되도록 학습

가지치기

  • 결정 트리가 제한 없이 성장해 훈련 세트에 과대적합되는 것을 막기 위해 결정 트리의 성장을 제한하는 방법

특성 중요도

  • 결정 트리에 사용된 특성이 불순도를 감소하는데 기여한 정도를 나타내는 값

패키지 및 함수

pandas 패키지

info()

  • 데이터프레임의 요약된 정보를 출력
  • 인덱스와 컬러 타입을 출력하고 null이 아닌 값의 개수, 메모리 사용량을 제공
  • verbose 매개변수의 기본값 True를 False로 바꾸면 각 열에 대한 정보를 출력하지 않음

describe()

  • 데이터프레임 열의 통계 값을 제공
  • 수치형일 경우 최소, 최대, 평균, 표준편차와 사분위값 등이 출력됨
  • 문자열 같은 객체 타입의 열은 가장 자주 등장하는 값과 횟수 등이 출력됨
  • percentiles 매개변수에서 백분위수를 지정, 기본값은 [0.25, 0.5, 0.75]

scikit-learn 패키지

DecisionTreeClassifier

  • 결정 트리 분류 클래스
  • criterion: 불순도를 지정, 기본값은 'gini'(지니 불순도), 'entropy'(엔트로피 불순도) 사용 가능
  • splitter: 노드를 분할하는 전략을 선택, 기본값은 'best'로 정보 이득이 최대가 되도록 분할, 'random'이면 임의로 노드를 분할
  • max_depth: 트리가 성장할 최대 깊이를 지정, 기본값은 None으로 리프 노드가 순수하거나 min_samples_split보다 샘플 개수가 적을 때까지 성장
  • min_samples_split: 노드를 나누기 위한 최소 샘플 개수, 기본값은 2
  • max_features: 최적의 분할을 위해 탐색할 특성의 개수를 지정, 기본값은 None으로 모든 특성을 사용

plot_tree()

  • 결정 트리 모델을 시각화, 첫 매개변수로 결정 트리 모델 객체를 전달
  • max_depth: 나타낼 트리의 깊이를 지정, 기본값은 None으로 모든 노드를 출력
  • feature_names: 특성의 이름을 지정
  • filled: True로 지정하면 타깃값에 따라 노드 안에 색을 채움

실습

Practice 5-1

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

개념정리

검증 세트

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

교차 검증

  • 훈련 세트를 여러 폴드로 나눈 다음 한 폴드가 검증 세트의 역할을 하고 나머지 폴드에서는 모델을 훈련해서 모든 폴드에 대해 검증 점수를 얻어 평균하는 방법

그리드 서치

  • 하이퍼파라미터 탐색을 자동화해 주는 도구
  • 탐색할 매개변수를 나열하면 교차 검증을 수행해 가장 좋은 점수의 매개변수 조합을 선택
  • 마지막으로 매개변수 조합으로 최종 모델을 훈련

랜덤 서치

  • 연속된 매개변수 값을 탐색할 때 유용
  • 탐색할 값을 직접 나열하는 것이 아니고 탐색 값을 샘플링할 수 있는 확률 분포 객체를 전달
  • 지정된 횟수만큼 샘플링해 교차 검증을 수행하므로 시스템 자원이 허락하는 만큼 탐색량을 조절 가능

패키지 및 함수

skiti-learn 패키지

cross_validate()

  • 교차 검증을 수행하는 함수
  • 첫 매개변수에 교차 검증을 수행할 모델 객체를 전달
  • 두 번째 매개변수에는 특성, 세 번째 매개변수에는 타깃 데이터를 전달
  • scoring 매개변수에 검증에 사용할 평가 지표를 지정 가능, 분류 모델은 정확도를 의미하는 'accuracy', 회귀 모델은 결정계수를 의미하는 'r2'
  • cv 매개변수에 교차 검증 폴드 수나 스플리터 객체를 지정 가능, 기본값은 5, 회귀일 때는 KFold 클래스를 사용하고 분류일 때는 StratifiedKFold 클래스를 사용해 5-폴드 교차 검증을 수행
  • n_jobs: 교차 검증을 수행할 때 사용할 CPU 코어 수를 지정, 기본값은 1로 하나의 코어 사용, -1로 지정하면 시스템에 있는 모든 코어를 사용
  • return_train_score: Tru로 지정하면 훈련 세트의 점수도 반환, 기본값은 False

GridSearchCV

  • 교차 검증으로 하이퍼파라미터 탐색을 수행
  • 최상의 모델을 찾은 후 훈련 세트 전체를 사용해 최종 모델을 훈련
  • 첫 번째 매개변수로 그리드 서치를 수행할 모델 객체를 전달
  • 두 번째 매개변수에는 탐색할 모델의 매개변수와 값을 전달
  • 나머지 매개변수는 cross_validate() 함수와 동일

RandomizedSearchCV

  • 교차 검증으로 랜덤한 하이퍼파라미터 탐색을 수행, 최상의 모델을 찾은 후 훈련 세트 전체를 사용해 최종 모델을 훈련
  • 첫 번째 매개변수로 그리드 서치를 수행할 모델 객체를 전달
  • 두 번째 매개변수에는 탐색할 모델의 매개변수와 확률 분포 객체를 전달
  • 나머지 매개변수는 cross_validate() 함수와 동일

실습

Practice 5-2

5-3. 트리의 앙상블

개념정리

앙상블 학습

  • 더 좋은 예측 결과를 만들기 위해 여러 개의 모델을 훈련하는 머신러닝 알고리즘

랜덤 포레스트

  • 대표적인 결정 트리 기반의 앙상블 학습법
  • 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택해 트리를 만듦

엑스트라 트리

  • 랜덤 포레스트와 비슷하게 결정 트리를 사용해 앙상블 모델을 만들지만 부트스트랩 샘플을 사용하지 않음
  • 대신 랜덤하게 노드를 분할해 과대적합을 감소시킴

그레이디언트 부스팅

  • 랜덤 포레스트나 엑스트라 트리와 달리 결정 트리를 연속적으로 추가해 손실 함수를 최소화하는 앙상블 방법
  • 훈련 속도가 느리지만 더 좋은 성능을 기대 가능

히스토그램 기반 그레이디언트 부스팅

  • 그레이디언트 부스팅의 속도를 개선하여 안정적인 결과와 높은 성능을 도출

패키지 및 함수

skiti-learn 패키지

RandomForestClassifier

  • 랜덤 포레스트 분류 클래스
  • n_estimators: 앙상블을 구성할 트리의 개수를 지정, 기본값은 100
  • criterion: 불순도를 지정, 기본값은 'gini'(지니 불순도), 'entropy'(엔트로피 불순도) 선택 가능
  • max_depth: 트리가 성장할 최대 깊이, 기본값은 None으로 리프 노드가 순수하거나 min_samples_split보다 샘플 개수가 적을 때까지 성장
  • min_samples_split: 노드를 나누기 위한 최소 샘플 개수, 기본값은 2
  • max_features: 최적의 분할을 위해 탐색할 특성의 개수를 지정, 기본값은 'auto'로 특성 개수의 제곱근
  • bootstrap: 부트스트랩 샘플을 사용할지 지정, 기본값은 True
  • oob_score: OOB 샘플을 사용해 훈련한 모델을 평가할지 지정, 기본값은 False
  • n_jobs: 병렬 실행에 사용할 CPU 코어 수를 지정, 기본값은 1로 하나의 코어를 사용, -1이면 시스템에 있는 모든 코어를 사용

ExtraTreesClassifier

  • 엑스트라 트리 분류 클래스
  • bootstrap: 부트스트랩 샘플을 사용할지 지정, 기본값은 False
  • 나머지 매개변수는 RandomForestClassifier와 동일

GradientBoostingClassifier

  • 그레이디언트 부스팅 분류 클래스
  • loss 매개변수는 손실 함수를 지정, 기본값은 로지스틱 손실 함수를 의미하는 'deviance'
  • learning_rate: 트리가 앙상블에 기여하는 정도를 조절, 기본값은 0.1
  • subsmaple: 사용할 훈련 세트의 샘플 비율을 지정, 기본값은 1.0
  • max_depth: 개별 회귀 트리의 최대 깊이, 기본값은 3

HistGradientBoostingClassifier

  • 히스토그램 기반 그레이디언트 부스팅 분류 클래스
  • learning_rate: 학습률(감쇠율), 기본값은 0.1이며 1.0이면 감쇠가 전혀 없음
  • max_iter: 부스팅 단계를 수행하는 트리의 개수, 기본값은 100
  • max_bins: 입력 데이터를 나눌 구간의 개수, 기본값은 255(최댓값), 여기에 1개의 구간이 누락된 값을 위해 추가됨

실습

Practice 5-3

profile
김찬호 화이팅

0개의 댓글