이번 글에서는 빌드하는 방법을 알아보겠습니다. 랜덤 포레스트 분류기 사용하여 Scikit-Learn 라이브러리 ~의 Python 프로그래밍 언어 이를 위해 우리는 IRIS 데이터 세트 이는 매우 일반적이고 유명한 데이터 세트입니다.
랜덤 포레스트
그만큼 랜덤 포레스트 또는 Random Decision Forest는 의사결정 트리를 사용하여 분류, 회귀 및 기타 작업에 사용되는 지도형 기계 학습 알고리즘입니다. Random Forest는 크고 복잡한 데이터 세트를 처리하고, 고차원 기능 공간을 처리하고, 기능 중요성에 대한 통찰력을 제공하는 데 특히 적합합니다. 과적합을 최소화하면서 높은 예측 정확도를 유지하는 이 알고리즘의 기능 덕분에 금융, 의료, 이미지 분석 등 다양한 영역에서 인기 있는 선택이 되었습니다.
랜덤 포레스트 분류기
랜덤 포레스트 분류기는 다음을 생성합니다. 세트 ~의 의사결정 트리 훈련 세트의 무작위로 선택된 하위 집합에서. 이는 훈련 세트의 무작위로 선택된 하위 집합에서 결정 트리(DT) 세트로, 최종 예측을 결정하기 위해 다양한 결정 트리에서 투표를 수집합니다.
랜덤 포레스트 분류기
또한 Random Forest 분류기는 분류 및 회귀 작업을 모두 처리할 수 있으며 기능 중요도 점수를 제공하는 기능을 통해 데이터 세트에서 다양한 변수의 중요성을 이해하는 데 유용한 도구가 됩니다.
랜덤 포레스트 분류 작동 방식
Random Forest Classification은 분류 작업의 정확성과 견고성을 향상시키기 위해 설계된 앙상블 학습 기술입니다. 알고리즘은 훈련 중에 다수의 의사결정 트리를 구축하고 결과를 출력합니다. 수업 이것이 분류 클래스의 모드입니다. 랜덤 포레스트의 각 의사결정 트리는 훈련 데이터의 하위 집합과 트리 사이에 다양성을 도입하는 기능의 무작위 하위 집합을 사용하여 구성되므로 모델이 더욱 강력해지고 과적합 가능성이 줄어듭니다.
랜덤 포레스트 알고리즘은 배깅(Bootstrap Aggregating)이라는 기술을 사용하여 이러한 다양한 하위 집합을 생성합니다.
훈련 단계에서는 각 나무 기능을 기반으로 데이터를 재귀적으로 분할하여 구축됩니다. 각마다 나뉘다, 알고리즘은 무작위 하위 집합에서 최상의 기능을 선택하여 정보 획득 또는 지니 불순물을 최적화합니다. 프로세스는 최대 깊이에 도달하거나 각 리프 노드에 최소 샘플 수를 갖는 등 미리 정의된 중지 기준이 충족될 때까지 계속됩니다.
mysql은 모든 사용자를 나열합니다
랜덤 포레스트가 훈련되면 클래스에 대한 각 트리 투표를 사용하여 예측을 할 수 있으며, 가장 많은 표를 얻은 클래스가 입력 데이터에 대한 예측 클래스가 됩니다.
랜덤 포레스트의 기능 선택
기능 선택 Random Forests에서는 개별 의사결정 트리 구성과 집계 프로세스에 본질적으로 포함되어 있습니다.
훈련 단계에서 각 결정 트리는 임의의 기능 하위 집합을 사용하여 구축되어 트리 간의 다양성에 기여합니다. 기능 배깅이라고 하는 이 프로세스는 단일 기능의 지배력을 방지하고 보다 강력한 모델을 촉진하는 데 도움이 됩니다.
알고리즘은 각 분할 지점에서 기능의 다양한 하위 집합을 평가하여 정보 획득 또는 지니 불순물과 같은 기준에 따라 노드 분할에 가장 적합한 기능을 선택합니다. 결과적으로 Random Forest는 자연스럽게 기능 선택 형식을 통합하여 일반화를 향상하고 과적합을 줄이기 위해 다양한 기능 집합의 앙상블 이점을 보장합니다.
기계 학습의 랜덤 포레스트 분류기
1단계: 데이터 세트 로드
파이썬3
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()> |
>
>
2단계: 데이터 세트 내용과 그 안에 있는 기능 이름을 확인합니다.
파이썬3
print>(iris.target_names)> |
>
>
산출:
[‘setosa’ ‘versicolor’ ‘virginica’]>
파이썬3
print>(iris.feature_names)> |
>
>
산출:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
3단계: 훈련 테스트 분할
파이썬3
# dividing the datasets into two parts i.e. training datasets and test datasets> X, y>=> datasets.load_iris( return_X_y>=> True>)> # Splitting arrays or matrices into random train and test subsets> from> sklearn.model_selection>import> train_test_split> # i.e. 70 % training dataset and 30 % test datasets> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.30>)> |
>
java의 string.replaceall
>
4단계: Random Forest Classifier 모듈을 가져옵니다.
파이썬3
# importing random forest classifier from assemble module> from> sklearn.ensemble>import> RandomForestClassifier> import> pandas as pd> # creating dataframe of IRIS dataset> data>=> pd.DataFrame({>'sepallength'>: iris.data[:,>0>],>'sepalwidth'>: iris.data[:,>1>],> >'petallength'>: iris.data[:,>2>],>'petalwidth'>: iris.data[:,>3>],> >'species'>: iris.target})> |
>
>
데이터세트 개요
파이썬3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
산출:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0>
5단계: 모델 훈련
파이썬3
# creating a RF classifier> clf>=> RandomForestClassifier(n_estimators>=> 100>)> # Training the model on the training dataset> # fit function is used to train the model using the training sets as parameters> clf.fit(X_train, y_train)> # performing predictions on the test dataset> y_pred>=> clf.predict(X_test)> # metrics are used to find accuracy or error> from> sklearn>import> metrics> print>()> # using metrics module for accuracy calculation> print>(>'ACCURACY OF THE MODEL:'>, metrics.accuracy_score(y_test, y_pred))> |
java 정수를 문자열로 변환하는 방법
>
>
산출:
ACCURACY OF THE MODEL: 0.9238095238095239>
6단계: 예측
파이썬3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
산출:
array([0])>
이는 다음과 같은 것을 의미합니다. 부드러운 데이터 세트에서 세 가지 종 또는 클래스를 얻었으므로 꽃 유형은 다음과 같습니다. Setosa, Versicolor 및 버지니아.
주요 기능을 확인하세요
이제 다음 코드 줄을 사용하여 IRIS 데이터세트의 중요한 기능이나 선택 기능도 알아봅니다.
파이썬3
# using the feature importance variable> import> pandas as pd> feature_imp>=> pd.Series(clf.feature_importances_, index>=> iris.feature_names).sort_values(ascending>=> False>)> feature_imp> |
>
>
산출:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Python의 랜덤 포레스트 사이킷런(Scikit-Learn) 도서관에는 세트가 함께 제공됩니다. 초매개변수 이를 통해 모델의 동작을 미세 조정할 수 있습니다. 모델 성능을 최적화하려면 적절한 하이퍼파라미터를 이해하고 선택하는 것이 중요합니다.
랜덤 포레스트 분류기 매개변수
- n_추정자: 숲에 있는 나무의 수.
- 트리가 많을수록 일반적으로 성능이 향상되지만 계산 시간이 단축됩니다.
- 값 100으로 시작하고 필요에 따라 늘립니다.
- 최대 깊이: 각 트리의 최대 깊이입니다.
- 트리가 깊어질수록 더 복잡한 패턴을 포착할 수 있지만 과적합 위험도 있습니다.
- 5에서 15 사이의 값으로 실험하고 데이터세트가 작을수록 더 낮은 값을 고려하세요.
- 최대 기능: 각 노드에서 분할을 위해 고려되는 기능 수입니다.
- 일반적인 값은 'sqrt'(총 기능 수의 제곱근)입니다.
- 데이터세트 크기와 기능 중요도에 따라 조정하세요.
- 표준: 분할 품질('gini' 또는 'entropy')을 측정하는 데 사용되는 기능입니다.
- 지니 불순물이 약간 더 빠른 경우가 많지만 둘 다 일반적으로 성능이 유사합니다.
- 최소_샘플_분할: 노드를 분할하는 데 필요한 최소 샘플입니다.
- 값이 높을수록 과적합을 방지할 수 있지만 너무 높으면 모델 복잡성이 방해될 수 있습니다.
- 2부터 시작하여 필요에 따라 조정하세요.
- 최소_샘플_잎: 리프 노드에 있어야 하는 최소 샘플입니다.
- min_samples_split과 유사하지만 리프 노드에 중점을 둡니다.
- 1부터 시작하여 필요에 따라 조정합니다.
- 부트스트랩: 트리를 구축할 때 부트스트랩 샘플링을 사용할지 여부(True 또는 False).
- 부트스트래핑은 모델 분산과 일반화를 향상시킬 수 있지만 편향을 약간 증가시킬 수 있습니다.
랜덤 포레스트 분류기의 장점
- 여러 트리를 결합하는 랜덤 포레스트의 앙상블 특성으로 인해 개별 의사결정 트리에 비해 과적합이 덜 발생합니다.
- 특성이 많은 데이터 세트에 효과적이며 관련 없는 변수를 잘 처리할 수 있습니다.
- Random Forests는 기능 중요성에 대한 통찰력을 제공하여 기능 선택 및 데이터 세트 이해를 돕습니다.
랜덤 포레스트 분류기의 단점
- 랜덤 포레스트는 계산 비용이 많이 들고 여러 의사결정 트리 구성으로 인해 더 많은 리소스가 필요할 수 있습니다.
- 앙상블 특성으로 인해 단일 의사결정 트리와 비교하여 개별 예측 이면의 추론을 해석하기가 어렵습니다.
- 불균형 데이터 세트에서 Random Forest는 다수 클래스에 편향되어 소수 클래스의 예측 성능에 영향을 줄 수 있습니다.
결론
결론적으로, 의사 결정 트리의 앙상블을 갖춘 Random Forests는 다양한 기계 학습 작업을 위한 강력한 솔루션으로 두각을 나타내며 다양성과 효율성을 보여줍니다.
자주 묻는 질문(FAQ)
Q. 랜덤 포레스트 분류기는 무엇인가요?
Random Forest Classifier는 분류 작업에 대해 다중 결정 트리를 사용하여 정확도를 향상시키는 앙상블 학습 방법입니다. 복잡한 데이터를 처리하고, 과적합을 완화하고, 기능이 중요한 강력한 예측을 제공하는 데 탁월합니다.
Q. 회귀 분석에 랜덤 포레스트를 사용할 수 있나요?
Random Forest는 회귀 및 분류 작업 모두에 사용할 수 있으므로 다목적 기계 학습 알고리즘이 됩니다.
Q. 랜덤 포레스트의 원리는 무엇인가요?
Random Forest는 데이터세트의 무작위 하위 집합을 사용하여 여러 의사결정 트리를 구축하고 그 결과를 결합하여 정확도를 높입니다.
Q. 랜덤 포레스트는 어떤 용도로 활용되나요?
실제 응용 프로그램은 다음과 같습니다.
- 의학적 진단: 환자 데이터를 기반으로 질병을 식별합니다.
- 재원: 대출 위험 평가를 위한 신용 점수.