AI SCHOOL ML

김상민·2023년 3월 16일
0

MachineLearning

목록 보기
1/2

배운 ML모델의 파라미터를 알아보자

from sklearn.tree import DecisionTreeClassifier

# DecisionTreeClassifier 객체를 생성하고 원하는 파라미터를 설정합니다.
clf = DecisionTreeClassifier()

# 훈련 데이터와 레이블을 사용하여 모델을 학습시킵니다.
clf.fit(X_train, y_train)

# 테스트 데이터를 사용하여 모델의 예측 성능을 평가합니다.
y_pred = clf.predict(X_test)
accuracy = clf.score(X_test, y_test)

대충 이런 식으로 진행됌

DecisionTreeClassifier의 모든 파라미터

  • criterion: 분할의 품질을 측정하는 함수로, 지니 불순도(gini impurity), 엔트로피(entropy), 로그 손실(log loss) 등을 선택할 수 있습니다.

  • splitter: 각 노드에서 분할을 선택하는 전략으로, 최적의 분할(best splitter)이나 무작위 분할(random splitter)을 선택할 수 있습니다.

  • max_depth: 트리의 최대 깊이로, 너무 크면 과적합(overfitting)의 위험이 있습니다.

  • min_samples_split: 내부 노드를 분할하기 위한 최소 샘플 수로, 너무 작으면 과적합의 위험이 있습니다.

  • min_samples_leaf: 리프 노드에 있는 최소 샘플 수로, 너무 작으면 과적합의 위험이 있습니다.

  • min_weight_fraction_leaf: 리프 노드에 있는 샘플들의 가중치 합에서 차지하는 최소 비율로, 0과 0.5 사이의 값입니다.

  • max_features: 각 분할에서 고려할 최대 특성(feature) 수로, 너무 많으면 계산 시간이 오래 걸립니다.

  • random_state: 난수 생성기의 시드(seed) 값으로, 재현성(reproducibility)을 위해 설정할 수 있습니다.

  • max_leaf_nodes: 리프 노드의 최대 개수로, None이 아니면 max_depth를 무시합니다.

  • min_impurity_decrease: 노드를 분할하기 전과 후에 비교하여 감소한 불순도(impurity)가 이 값보다 크거나 같아야 합니다.

  • min_impurity_split: 트리 성장을 멈추기 전에 필요한 최소한의 불순도입니다. 이 값을 사용하면 경고(warning) 메시지가 나타납니다. 대신 min_impurity_decrease를 사용하세요.

  • class_weight: 클래스별 가중치로, 균형 잡힌 클래스 가중치(balanced class weight)나 딕셔너리(dictionary) 형태로 지정할 수 있습니다.

  • presort: 데이터를 사전 정렬(pre-sorting)하여 트리 구축 속도를 높일지 여부입니다.

    이 Parameters는 번역하면 매개변수입니다.

RandomForestClassifier의 모든 파라미터

  • n_estimators: 포리스트에 있는 의사 결정 트리의 수입니다.
  • criterion: 분할의 품질을 측정하는 함수입니다. 지원되는 criterion은 지니 불순도에 대한 "gini"와 정보 이득에 대한 "entrpy"입니다.
  • max_depth: 트리의 최대 깊이입니다. None이면 모든 리프에 min_samples_split 샘플보다 작은 샘플이 포함될 때까지 노드가 확장됩니다.
  • MIN_SAMPS_SPLIT: 내부 노드를 분할하는 데 필요한 최소 샘플 수입니다.
  • MIN_SAMPLES_LEAF: 리프 노드에 필요한 최소 샘플 수입니다.
  • MIN_WEIGHT_FRACTION_LEAF: 리프 노드에 있어야 하는 (모든 입력 샘플의) 가중치 총합의 최소 가중치 비율입니다.
  • max_features: 최적의 분할을 찾을 때 고려할 특징의 수입니다. 지원되는 값은 "auto", "sqrt", "log2" 및 None입니다.
  • max_leaf_nodes: 트리의 최대 리프 노드 수입니다. None이면 리프 노드 수가 무제한입니다.
  • bootstrap: 트리를 만들 때 bootstrap 샘플을 사용할지 여부입니다. False이면 전체 데이터 세트가 각 트리를 빌드하는 데 사용됩니다.
  • OOB_Score: 일반화 정확도를 추정하기 위해 아웃오브백 샘플을 사용할지 여부입니다.
    n_jobs: 맞춤과 예측을 위해 병렬로 실행할 작업의 수입니다. 1이면 작업 수가 CPU 코어 수로 설정됩니다.
  • random_state: 각 노드에서 분할할 기능을 선택하는 데 사용되는 난수 생성기의 시드입니다.
  • verbose: 피팅 및 예측 시 상세도를 제어합니다.
  • warm_start: 이전 호출의 솔루션을 다시 사용하여 앙상블에 더 많은 예측자를 추가할지, 아니면 완전히 새로운 예측을 적용할지 여부입니다.

여기서 verbose가 잘 이해되지 않았는데
0: 학습 또는 예측 중에 출력이 인쇄되지 않습니다.
1: 학습 및 예측 과정에서 진행률 표시줄 또는 요약 정보와 같은 일부 출력이 인쇄됩니다.
이런 뜻을 가졌다.

ex) verbose=1을 설정하면 훈련 프로세스 중에 진행률 표시줄이 표시되고, verbose=2를 설정하면 진행률 표시줄과 포리스트의 각 트리에 대한 일부 요약 정보가 표시됩니다.

ExtraTreesRegressor의 모든 파라미터

  • RandomForestClassifier와 동일

3개 model의 차이점은 무엇일까?

  • 일단 3개의 모델은 예측을 위해 입력 특징의 값에 따라 입력 데이터를 재귀적으로 하위 집합으로 분할하는 의사 결정 트리 알고리즘을 기반으로 합니다.
    DecisionTreeClassifier :전체 훈련 집합을 사용하여 구축된 단일 의사 결정 트리입니다. 지니 불순도 또는 엔트로피와 같은 특정 기준에 따라 각 노드에 가장 적합한 분할을 선택합니다. 이 모델은 특히 트리가 깊을 때 과적합이 발생하기 쉬운 경향이 있습니다.

RandomForestClassifier : 의사 결정 트리의 앙상블로, 각 트리는 훈련 집합의 무작위로 선택된 하위 집합과 무작위로 선택된 특징의 하위 집합을 사용하여 구축됩니다. 최종 예측은 포리스트에 있는 모든 트리의 예측을 평균하여 이루어집니다. 이 모델은 과적합을 줄이고 일반화 성능을 향상시킵니다.

ExtraTreesRegressor : ExtraTreesRegressor도 의사 결정 트리의 앙상블이지만, 최적의 분할 대신 무작위 분할을 사용하여 트리를 구축하고 샘플을 부트스트랩하지 않는다는 점에서 RandomForestClassifier와 두 가지 점에서 다릅니다. 이 모델은 RandomForestClassifier보다 훈련 속도가 빠르며 데이터에 노이즈가 많거나 관련 없는 특징이 있는 일부 상황에서 잘 작동할 수 있습니다.

  • 요약하자면, DecisionTreeClassifier는 과적합 경향이 있는 단순한 모델인 반면, RandomForestClassifier와 ExtraTreesRegressor는 일반화 성능을 개선하고 과적합을 줄이기 위해 여러 의사 결정 트리를 사용하는 앙상블 모델입니다. RandomForestClassifier와 ExtraTreesRegressor의 주요 차이점은 앙상블 내에서 의사 결정 트리를 구성하는 방식에 있습니다.
profile
꾸준히 하고싶다

0개의 댓글