랜덤 포레스트 초매개변수 조정: 코딩으로 설명되는 프로세스

게시 됨: 2020-12-23

랜덤 포레스트는 결정 트리를 기반으로 하는 머신 러닝 알고리즘입니다. Random Forest는 사용하기 쉽고 유연한 ML 알고리즘입니다. 단순성과 다양성으로 인해 매우 널리 사용됩니다. 많은 하이퍼파라미터 조정 없이도 많은 분류 작업에서 좋은 결과를 제공합니다.

이 기사에서는 Random Forest의 작업과 최적의 결과를 위해 제어할 수 있는 다양한 하이퍼 매개변수에 중점을 둘 것입니다. 모든 데이터에는 특성이 있기 때문에 하이퍼파라미터 튜닝이 필요합니다.

이러한 특성은 변수의 유형, 데이터의 크기, 이진/다중 클래스 대상 변수, 범주형 변수의 범주 수, 수치 데이터의 표준 편차, 데이터의 정규성 등이 될 수 있습니다. 따라서 데이터에 따라 모델을 튜닝하는 것은 필수적입니다. 모델의 성능을 극대화합니다.

목차

구성 및 작업

랜덤 포레스트 알고리즘은 상관관계가 없는 결정 트리의 대규모 컬렉션으로 작동합니다. 배깅 기술이라고도 합니다. 배깅은 앙상블 학습 범주에 속하며 잡음이 있는 모델과 편향되지 않은 모델의 조합을 평균화하여 분산이 낮은 모델을 만들 수 있다는 이론을 기반으로 합니다. 랜덤 포레스트가 어떻게 구성되는지 이해합시다.

S는 랜덤 포레스트 분류를 수행하기 위해 존재하는 데이터의 행렬입니다. N개의 인스턴스가 있으며 A,B,C는 데이터의 기능입니다. 이 데이터에서 데이터의 임의 하위 집합이 생성됩니다. 어떤 의사 결정 트리가 생성됩니다. 아래 그림에서 알 수 있듯이 데이터의 하위 집합당 하나의 의사결정 트리가 생성되며 데이터의 크기에 따라 의사결정 트리도 증가합니다.

모든 훈련된 결정 트리의 출력이 투표되고 다수 투표를 받은 클래스가 Random Forest 알고리즘의 효과적인 출력입니다. 의사 결정 트리 모델은 데이터에 과적합되므로 랜덤 포레스트가 필요합니다. 의사 결정 트리 모델은 낮은 편향일 수 있지만 대부분 높은 분산입니다. 따라서 테스트 세트에서 이러한 분산 오류를 줄이기 위해 Random Forest가 사용됩니다.

초매개변수

랜덤 포레스트에서 제어할 수 있는 다양한 하이퍼파라미터가 있습니다.

  1. N_estimators: 포리스트에 구축 중인 의사결정 트리의 수입니다. sklearn의 기본값은 100입니다. N_estimators는 대부분 데이터 크기와 상관 관계가 있으므로 데이터의 추세를 캡슐화하려면 더 많은 수의 DT가 필요합니다.
  2. 기준: 결정 트리에서 분할 품질을 측정하는 데 사용되는 기능(분류 문제). 지원되는 기준은 지니: 지니 불순물 또는 엔트로피: 정보 이득입니다. 회귀의 경우 평균 절대 오차(MAE) 또는 평균 제곱 오차(MSE)를 사용할 수 있습니다. 기본값은 gini 및 mse입니다.
  3. Max_depth: 의사결정 트리에서 허용되는 최대 레벨. 아무것도 설정하지 않으면 의사 결정 트리는 순도에 도달할 때까지 계속 분할됩니다.
  4. Max_features: 노드 분할 프로세스에 사용되는 최대 기능 수입니다. 유형: sqrt, log2. 전체 기능이 n_features이면 노드 분할을 위한 최대 기능으로 sqrt(n_features) 또는 log2(n_features)를 선택할 수 있습니다.
  5. 부트스트랩: 부트스트랩 샘플은 부트스트랩에서 True가 선택되면 의사결정 트리를 작성할 때 사용되며, 그렇지 않으면 모든 의사결정 트리에 전체 데이터가 사용됩니다.
  6. Min_samples_split: 이 매개변수는 내부 노드를 분할하는 데 필요한 최소 샘플 수를 결정합니다. 기본값 = 2. 이러한 작은 값의 문제는 조건이 터미널 노드에서 확인된다는 것입니다. 노드의 데이터 포인트가 값 2를 초과하면 추가 분할이 발생합니다. 반면에 6과 같은 보다 관대한 값이 설정되면 분할이 일찍 중지되고 의사결정 트리가 데이터에 과적합되지 않습니다.
  7. Min_sample_leaf: 이 매개변수는 의사결정 트리의 노드에서 데이터 포인트 요구사항의 최소 수를 설정합니다. 터미널 노드에 영향을 미치며 기본적으로 트리의 깊이를 제어하는 ​​데 도움이 됩니다. 분할 후 노드의 데이터 포인트가 min_sample_leaf 번호 아래로 내려가면 분할이 진행되지 않고 상위 노드에서 중지됩니다.

초매개변수 조정 프로세스 중에 고려할 수 있는 덜 중요한 다른 매개변수도 있습니다.

n_jobs: 훈련에 사용할 수 있는 프로세서의 수입니다. (-1 제한 없음)

max_samples: 각 의사 결정 트리에서 사용할 수 있는 최대 데이터

random_state: 특정 random_state가 있는 모델은 유사한 정확도/출력을 생성합니다.

Class_weight: 불균형 데이터 세트를 처리할 수 있는 사전 입력.

반드시 읽어야 할 것: AI 알고리즘의 유형

초매개변수 조정 프로세스

하이퍼파라미터 튜닝 프로세스를 수행하는 다양한 방법이 있습니다. 기본 모델을 만들고 평가한 후 하이퍼파라미터를 조정하여 모델의 정확도나 f1 점수와 같은 특정 메트릭을 높일 수 있습니다.

조정 전후에 과적합 및 편향 분산 오류를 확인해야 합니다. 모델은 실시간 요구 사항에 따라 조정되어야 합니다. 때때로 과적합 모델은 검증의 데이터 변동에 매우 민감할 수 있으므로 교차 검증 편차가 있는 교차 검증 점수는 모델 조정 전후에 가능한 과적합에 대해 확인해야 합니다.

파이썬에서 Random Forest 튜닝 방법은 다음에 다룹니다.

무작위 검색 이력서

그리드를 정의할 수 있는 scikit learn 및 RandomisedSearchCV를 사용할 수 있습니다. 그리드에서 무작위로 매개변수를 선택하여 랜덤 포레스트 모델을 계속해서 맞출 것입니다. 최상의 매개변수를 얻지는 못하지만 장착 및 테스트 중인 다양한 모델에서 최상의 모델을 얻을 수 있습니다.

소스 코드:

sklearn.model_selection에서 GridSearchCV 가져오기

# 섞일 매개변수의 검색 그리드를 만듭니다.

param_grid = {

'부트스트랩': [참],

'최대 깊이': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 없음],

'max_features': ['자동', '제곱미터'],

'최소_샘플_잎': [1, 2, 4],

'최소_샘플_분할': [2, 5, 10],

'n_estimators': [200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000]

}

# 랜덤 그리드를 사용하여 최상의 하이퍼파라미터 찾기

rf = RandomForestRegressor() #기본 모델 생성

rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 5, verbose=2, random_state=42, n_jobs = -1)

rf_random.fit(train_features, train_labels) #fit은 훈련 과정을 시작하는 것입니다.

무작위 검색 기능은 5겹 교차 검증과 100번의 반복을 통해 매개변수를 검색하여 최상의 매개변수로 끝납니다.

그리드 검색 이력서

그리드 검색은 완벽한 하이퍼파라미터를 검색하기 위해 범위를 좁히기 위해 무작위 검색 후에 사용됩니다. 이제 집중할 수 있는 위치를 알았으므로 그리드 검색을 통해 해당 매개변수를 명시적으로 실행하고 다른 모델을 평가하여 모든 하이퍼파라미터에 대한 최종 값을 얻을 수 있습니다.

소스 코드:

sklearn.model_selection에서 GridSearchCV 가져오기

# 랜덤 검색 결과를 기반으로 파라미터 그리드 생성

param_grid = {

'부트스트랩': [참],

'최대_깊이': [80, 90, 100, 110],

'최대 기능': [2, 3],

'최소_샘플_잎': [3, 4, 5],

'최소 샘플_분할': [8, 10, 12],

'n_estimators': [100, 200, 300, 1000]

}

# 기반 모델 생성

rf = RandomForestRegressor()

# 그리드 검색 모델 인스턴스화

grid_search = GridSearchCV(추정기 = rf, param_grid = param_grid,

이력서 = 3, n_jobs = -1, 자세한 정보 = 2)

실행 후 결과:

# 그리드 검색을 데이터에 맞추기

grid_search.fit(train_features, train_labels)

grid_search.best_params_

{'부트스트랩': 사실,

'최대_깊이': 80,

'최대 기능': 3,

'min_samples_leaf': 5,

'min_samples_split': 12,

'n_estimators': 100}

best_grid = grid_search.best_estimator_

더 읽어보기: 기계 학습 프로젝트 아이디어

결론

우리는 랜덤 포레스트 모델의 작업과 각 하이퍼파라미터가 의사 결정 트리를 변경하고 랜덤 포레스트 모델 전체를 변경하는 방법을 살펴보았습니다. 우리는 또한 우리 모델에 가장 적합한 매개변수를 얻기 위해 무작위 및 그리드 검색 사용을 결합하는 효율적인 기술을 살펴보았습니다. 초매개변수 조정은 모델의 편향 및 분산 성능을 제어하는 ​​데 도움이 되므로 매우 중요합니다.

의사 결정 트리, 기계 학습에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT-B 동문 자격, 5개 이상의 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

랜덤 포레스트에서 어떤 하이퍼파라미터를 조정할 수 있습니까?

랜덤 포레스트에서 하이퍼파라미터는 트리 수, 기능 수 및 트리 유형(예: GBM 또는 M5)입니다. 기능의 수는 중요하며 조정해야 합니다. 이 경우 랜덤 포레스트는 기능의 수를 자동으로 조정하므로 유용합니다. 나무의 수와 나무의 종류는 그다지 중요하지 않지만 500그루 이상의 나무를 사용하는 것은 시간 낭비이기 때문에 절대 사용해서는 안 됩니다. 일반적으로 나무의 종류와 나무의 수는 데이터에 따라 조정됩니다.

Random Forest 모델을 어떻게 최적화합니까?

성공하려면 Random Forest 알고리즘(및 기타 의사 결정 트리 변형)의 두 가지 주요 구성 요소는 기능 선택과 트리 구조입니다. 트리 구조와 관련하여 각 트리에서 사용되는 트리 및 기능의 수를 실험해야 합니다. 가장 중요한 것은 모델이 충분히 정확하고 과적합되지 않는 최적의 지점을 찾아야 한다는 것입니다.

머신 러닝에서 랜덤 포레스트란 무엇입니까?

랜덤 포레스트는 의사 결정 트리의 앙상블입니다. 다양한 방법으로 사용할 수 있는 강력하고 유연한 모델입니다. 사실, 랜덤 포레스트는 지난 10년 동안 매우 인기를 얻었습니다. 이 모델은 다양한 분야(생물학, 마케팅, 금융, 텍스트 마이닝 등)에서 사용됩니다. 주요 대회에서 사용되어 왔으며 최첨단 결과를 만들어 냈습니다. 랜덤 포레스트의 가장 일반적인 용도는 데이터를 분류(또는 레이블 지정)하는 것입니다. 그러나 연속 값을 회귀(값 추정)하고 유사한 데이터 포인트를 클러스터링하는 데 사용할 수도 있습니다.