랜덤 포레스트 분류기: 개요, 작동 원리, 장단점

게시 됨: 2021-06-18

Netflix에서 추천할 영화를 어떻게 선택하는지 궁금하신가요? 또는 Amazon이 피드에 표시할 상품을 어떻게 선택합니까?

그들은 모두 랜덤 포레스트 분류기를 활용하는 기술인 추천 시스템을 사용합니다.

랜덤 포레스트 분류기는 가장 널리 사용되는 분류 알고리즘 중 하나입니다. 오늘 우리는 이 강력한 기계 학습 알고리즘에 대해 배우고 어떻게 작동하는지 알아볼 것입니다. 실생활 문제에서 랜덤 포레스트 분류기를 사용하는 방법에 대한 단계별 자습서를 공유할 것이므로 구현에 대해서도 배우게 됩니다.

랜덤 포레스트 sklearn의 장점과 단점에 대해 다음 항목에서 다룰 것입니다.

목차

랜덤 포레스트 분류기: 소개

랜덤 포레스트 분류기는 회귀 및 분류 문제에 사용할 수 있는 지도 학습 알고리즘입니다. 높은 유연성과 구현 용이성으로 인해 가장 인기 있는 기계 학습 알고리즘 중 하나입니다.

랜덤 포레스트 분류기를 랜덤 포레스트라고 부르는 이유는 무엇입니까?

숲에 많은 나무가 있는 것처럼 여러 의사 결정 나무로 구성되어 있기 때문입니다. 또한 무작위성을 사용하여 정확도를 높이고 과적합을 방지합니다. 이는 이러한 정교한 알고리즘의 경우 큰 문제가 될 수 있습니다. 이러한 알고리즘은 데이터 샘플의 무작위 선택을 기반으로 결정 트리를 만들고 모든 트리에서 예측을 얻습니다. 그 후 투표를 통해 가장 실행 가능한 솔루션을 선택합니다.

특징 선택기, 추천 시스템, 이미지 분류기 등 일상 생활에서 수많은 응용 프로그램이 있습니다. 실제 응용 프로그램에는 사기 탐지, 대출 응용 프로그램 분류 및 질병 예측이 포함됩니다. 이는 데이터 세트에서 중요한 기능을 선택하는 보루타 알고리즘의 기초를 형성합니다.

어떻게 작동합니까?

데이터 세트에 "m" 기능이 있다고 가정하면 랜덤 포레스트는 k < m인 "k" 기능을 무작위로 선택합니다. 이제 알고리즘은 정보 이득이 가장 높은 노드를 선택하여 k개의 기능 중에서 루트 노드를 계산합니다.

그 후 알고리즘은 노드를 자식 노드로 분할하고 이 과정을 "n"번 반복합니다. 이제 n개의 나무가 있는 숲이 있습니다. 마지막으로 부트스트래핑을 수행합니다. 즉, 포리스트에 있는 모든 의사결정 트리의 결과를 결합합니다.

결정 트리의 기능을 기반으로 하기 때문에 확실히 가장 정교한 알고리즘 중 하나입니다.

기술적으로는 앙상블 알고리즘입니다. 알고리즘은 속성 선택 표시를 통해 개별 의사 결정 트리를 생성합니다. 모든 트리는 독립적인 무작위 샘플에 의존합니다. 분류 문제에서 모든 트리가 투표하고 가장 인기 있는 클래스가 최종 결과입니다. 반면에 회귀 문제에서는 모든 트리 출력의 평균을 계산하고 이것이 최종 결과가 됩니다.

랜덤 포레스트 Python 구현은 분류 문제에 사용되는 다른 비선형 알고리즘보다 훨씬 간단하고 강력합니다.

다음 예는 일상 생활에서 랜덤 포레스트 분류기를 사용하는 방법을 이해하는 데 도움이 됩니다.

예시

새 차를 사고 싶어 가장 친한 친구인 Supratik에게 추천을 요청했다고 가정해 보겠습니다. 그는 귀하의 선호도, 예산 및 요구 사항에 대해 질문하고 자신의 자동차에 대한 과거 경험을 공유하여 권장 사항을 제공할 것입니다.

여기에서 Supratik은 의사 결정 트리 방법을 사용하여 귀하의 응답을 기반으로 피드백을 제공합니다. 그의 제안 후에, 당신은 그의 조언에 대해 의아해하기 때문에 Aditya에게 그의 권장 사항에 대해 물어보고 그는 또한 귀하의 선호 사항 및 기타 요구 사항에 대해서도 묻습니다.

이 과정을 반복하고 'n' 친구에게 이 질문을 했다고 가정합니다. 이제 몇 대의 자동차를 선택할 수 있습니다. 당신은 친구들로부터 모든 표를 모아 가장 많은 표를 얻은 차를 사기로 결정합니다. 이제 임의의 숲 방법을 사용하여 구매할 자동차를 선택했습니다.

그러나 이 프로세스를 반복하면 할수록 과적합이 발생하기 쉽습니다. 의사 결정 트리의 데이터 세트가 계속 더 구체적이 되기 때문입니다. 랜덤 포레스트는 랜덤성을 사용하여 이 문제를 해결합니다.

랜덤 포레스트 분류기의 장단점

모든 기계 학습 알고리즘에는 장점과 단점이 있습니다. 랜덤 포레스트 분류 알고리즘의 장점과 단점은 다음과 같습니다.

장점

  • 랜덤 포레스트 알고리즘은 대부분의 비선형 분류기보다 훨씬 정확합니다.
  • 이 알고리즘은 결과에 도달하기 위해 여러 결정 트리를 사용하기 때문에 매우 강력합니다.
  • 랜덤 포레스트 분류기는 모든 예측의 평균을 취하여 편향을 제거하고 과적합 문제를 수정하기 때문에 과적합 문제에 직면하지 않습니다.
  • 회귀 및 분류 문제 모두에 이 알고리즘을 사용할 수 있으므로 매우 다재다능한 알고리즘입니다.
  • 임의의 포리스트는 누락된 값이 문제를 일으키지 않도록 합니다. 중앙값을 사용하여 연속 변수를 대체하거나 누락된 값의 근접 가중 평균을 계산하여 이 문제를 해결할 수 있습니다.
  • 이 알고리즘은 분류기에 가장 기여하는 기능을 쉽게 선택할 수 있도록 하는 상대적 기능 중요도를 제공합니다.

단점

  • 이 알고리즘은 여러 결정 트리를 사용하여 예측하기 때문에 다른 분류 알고리즘보다 훨씬 느립니다. 랜덤 포레스트 분류기가 예측을 할 때 포리스트의 모든 트리는 동일한 입력에 대해 예측을 하고 동일한 것에 투표해야 합니다. 이 프로세스는 시간이 많이 소요될 수 있습니다.
  • 느린 속도 때문에 랜덤 포레스트 분류기는 실시간 예측에 적합하지 않을 수 있습니다.
  • 이 모델은 트리의 경로를 따라 선택할 수 있으므로 의사결정 트리와 비교하여 해석하기가 상당히 어려울 수 있습니다. 그러나 무작위 포리스트에는 여러 의사 결정 트리가 있으므로 불가능합니다.

랜덤 포레스트와 의사 결정 트리의 차이점

의사 결정 트리는 이름에서 알 수 있듯이 분기와 노드가 있는 트리 모양의 순서도입니다. 알고리즘은 모든 노드의 입력 기능을 기반으로 데이터를 분할하고 출력으로 여러 분기를 생성합니다. 이는 반복적인 프로세스이며 생성된 분기(출력)의 수와 데이터의 차별화를 증가시킵니다. 이 프로세스는 거의 모든 데이터가 동일한 클래스에 속하고 더 많은 분기 또는 분할이 가능하지 않은 노드가 생성될 때까지 반복됩니다.

반면에 랜덤 포레스트는 여러 결정 트리를 사용하므로 '포레스트'라는 이름이 사용됩니다. 필요한 예측을 수행하는 데 사용된 다양한 의사 결정 트리에서 투표를 수집합니다.

따라서 랜덤 포레스트 분류기와 의사 결정 트리의 주요 차이점은 전자가 후자의 컬렉션을 사용한다는 것입니다. 다음은 둘 사이의 몇 가지 추가 차이점입니다.

  • 의사 결정 트리는 과적합 문제에 직면하지만 랜덤 포레스트는 그렇지 않습니다. 랜덤 포레스트 분류기는 이 문제에 대응하기 위해 임의의 하위 집합을 사용하기 때문입니다.
  • 의사 결정 트리는 랜덤 포레스트보다 빠릅니다. 랜덤 포레스트는 여러 결정 트리를 사용하므로 많은 계산 능력이 필요하므로 더 많은 시간이 소요됩니다.
  • 의사 결정 트리는 임의의 포리스트보다 해석하기 쉽고 규칙에 따라 전자를 쉽게 변환할 수 있지만 후자의 경우에는 동일하게 수행하기가 다소 어렵습니다.

알고리즘 구축(Random Forest Sklearn)

다음 예제에서는 scikit-learn 라이브러리를 사용하여 임의 포리스트 Python 구현을 수행했습니다. 이 튜토리얼의 단계를 따라 자신만의 랜덤 포레스트 분류기를 만들 수 있습니다.

모든 데이터 과학 작업의 80%는 데이터 정리, 정리, 결측값 수정 등을 포함하여 데이터를 최적화해야 합니다. 그러나 이 예에서는 알고리즘 구현에만 중점을 둘 것입니다.

첫 번째 단계: 라이브러리 가져오기 및 데이터세트 로드

먼저 필요한 라이브러리를 가져오고 데이터 세트를 데이터 프레임에 로드해야 합니다.

입력:

#필수 라이브러리 가져오기

pandas를 pd로 가져오기

numpy를 np로 가져오기

matplotlib.pyplot을 plt로 가져오기

#데이터세트 가져오기

sklearn.datasets에서 load_iris 가져오기
데이터 세트 = load_iris()

두 번째 단계: 데이터 세트를 훈련 세트와 테스트 세트로 분할

필요한 라이브러리를 가져오고 데이터를 로드한 후 데이터 세트를 훈련 세트와 테스트 세트로 분할해야 합니다. 훈련 세트는 모델을 훈련하는 데 도움이 되고 테스트 세트는 모델이 실제로 얼마나 정확한지 결정하는 데 도움이 됩니다.

입력:

# 분류기를 훈련 세트에 맞춥니다.

sklearn.tree에서 DecisionTreeClassifier 가져오기

모델 = DecisionTreeClassifier(기준 = '엔트로피', 스플리터 = '최상', random_state = 0)

model.fit(X_train, y_train)

산출:

DecisionTreeClassifier(class_weight=없음, 기준='엔트로피', max_depth=없음,
max_features=없음, max_leaf_nodes=없음,
min_impurity_decrease=0.0, min_impurity_split=없음,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, 사전 정렬=거짓, random_state=0,

스플리터 = '최상')

세 번째 단계: 랜덤 포레스트 분류기 생성

이제 Python과 scikit-learn을 사용하여 랜덤 포레스트 분류기를 생성합니다.

입력:

# 분류기를 훈련 세트에 맞추기

sklearn.ensemble에서 RandomForestClassifier 가져오기

모델 = RandomForestClassifier(n_estimators=100, 기준-'엔트로피', random_state = 0)

model.fit(X_train, y_train)

산출:

RandomForestClassifier(bootstrap=True, class_weight=없음, 기준='엔트로피',

max_depth=없음, max_features='자동', max_leaf_nodes=없음,

min_impurity_decrease=0.0, min_impurity_split=없음,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=없음,

oob_score=거짓, random_state=0, 자세한 정보=0, warm_start=거짓)

네 번째 단계: 결과를 예측하여 혼동 행렬을 만듭니다.

분류기를 생성하면 테스트 세트에서 이를 사용하여 결과를 예측하고 혼동 행렬을 만들고 모델에 대한 정확도 점수를 얻을 수 있습니다. 점수가 높을수록 모델이 더 정확합니다.

입력:

#테스트 세트 결과 예측

y_pred = mode.predict(X_test)

#정오분류표 만들기

sklearn.metrics에서 혼동_매트릭스 가져오기

cm = 혼동_매트릭스(y_test, y_pred)

센티미터

출력 :

배열([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

입력 :

#모델에 대한 점수 얻기

model.score(X_test, y_test)

출력 :

0.977777777777777

결론

랜덤 포레스트 분류기에는 많은 응용 프로그램이 있습니다. 가장 강력한 머신 러닝 알고리즘 중 하나이며 모든 AI 및 ML 전문가에게 필수 요소입니다.

인공 지능에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI 경영자 PG 프로그램을 확인하세요. 이 프로그램은 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT를 제공합니다. -B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

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

Random Forest는 대부분의 다른 기계 학습 알고리즘보다 더 정확한 예측을 제공할 수 있는 앙상블 학습 방법입니다. 의사 결정 트리 학습에서 일반적으로 사용됩니다. 포리스트는 결정 트리를 사용하여 생성되며 각 결정 트리는 자체적으로 강력한 분류자입니다. 이러한 결정 트리는 강력한 분류기의 포리스트를 만드는 데 사용됩니다. 이 강력한 분류기의 숲은 결정 트리나 다른 기계 학습 알고리즘보다 더 나은 예측을 제공합니다.

랜덤 포레스트와 의사 결정 트리의 차이점은 무엇입니까?

의사 결정 트리는 주어진 문제에 대한 분석 프로세스를 설명하는 순서도입니다. 분류 문제에 가장 자주 사용하는 경향이 있습니다. 결정 트리는 분류를 만드는 데 필요한 제거 프로세스를 설명합니다. 의사 결정 트리와 달리 랜덤 포레스트는 트리 앙상블을 기반으로 하며 많은 연구에서 일반적으로 의사 결정 트리보다 더 강력하다는 것을 보여줍니다. 또한 랜덤 포레스트는 과적합에 더 강하고 결측 데이터가 있을 때 더 안정적입니다.

랜덤 포레스트의 단점은 무엇입니까?

Random Forest는 약간 복잡한 모델입니다. 블랙박스 모델이 아니며 결과를 해석하기가 쉽지 않습니다. 다른 기계 학습 모델보다 느립니다. 좋은 정확도를 얻으려면 많은 기능이 필요합니다. 랜덤 포레스트는 배깅, 부스팅 또는 스태킹과 같은 다른 앙상블 방법과 같은 앙상블 학습 방법의 한 유형입니다. 이러한 방법은 불안정한 경향이 있습니다. 즉, 훈련 데이터가 약간 변경되면 최종 모델이 크게 변경될 수 있습니다.