Random Forest Regression은 숫자 값을 예측하기 위한 다목적 기계 학습 기술입니다. 여러 의사결정 트리의 예측을 결합하여 과적합을 줄이고 정확도를 향상시킵니다. 파이썬의 기계 학습 라이브러리를 사용하면 이 접근 방식을 쉽게 구현하고 최적화할 수 있습니다.
앙상블 학습
앙상블 학습은 여러 모델의 예측을 결합하여 보다 정확하고 안정적인 예측을 생성하는 기계 학습 기술입니다. 이는 여러 모델의 집단 지능을 활용하여 학습 시스템의 전반적인 성능을 향상시키는 접근 방식입니다.
알파벳 번호
앙상블 방법의 유형
앙상블 학습 방법에는 다음과 같은 다양한 유형이 있습니다.
- 배깅(부트스트랩 집계): 이 방법에는 훈련 데이터의 무작위 하위 집합에 대한 여러 모델 훈련이 포함됩니다. 그런 다음 개별 모델의 예측은 일반적으로 평균을 통해 결합됩니다.
- 부스팅: 이 방법에는 일련의 모델을 훈련하는 과정이 포함되며, 여기서 각 후속 모델은 이전 모델에서 발생한 오류에 중점을 둡니다. 예측은 가중치 투표 방식을 사용하여 결합됩니다.
- 스태킹: 이 방법에는 한 모델 세트의 예측을 다른 모델의 입력 기능으로 사용하는 작업이 포함됩니다. 최종 예측은 두 번째 수준 모델에 의해 이루어집니다.
랜덤 포레스트
랜덤 포레스트는 여러 의사결정 트리의 예측을 결합하여 보다 정확하고 안정적인 예측을 생성하는 앙상블 학습 방법입니다. 분류 및 회귀 작업 모두에 사용할 수 있는 지도 학습 알고리즘의 한 유형입니다.
모든 결정 트리 분산은 높지만 모든 것을 병렬로 결합하면 각 결정 트리가 특정 샘플 데이터에 대해 완벽하게 훈련되므로 결과 분산이 낮습니다. 따라서 출력은 하나의 결정 트리가 아닌 여러 결정 트리에 의존합니다. 분류 문제의 경우 다수결 분류기를 사용하여 최종 출력을 취합니다. 회귀 문제의 경우 최종 출력은 모든 출력의 평균입니다. 이 부분을 이라고 합니다 집합 .

랜덤 포레스트 회귀 모델 작동
랜덤 포레스트 회귀란 무엇입니까?
머신러닝의 랜덤 포레스트 회귀(Random Forest Regression)는 기술 세트 둘 다 수행할 수 있는 회귀 및 분류 여러 의사결정 트리와 Bootstrap 및 Aggregation이라는 기술을 사용하여 작업을 수행합니다. 배깅 . 이에 대한 기본 아이디어는 개별 결정 트리에 의존하기보다는 최종 출력을 결정할 때 여러 결정 트리를 결합하는 것입니다.
Random Forest에는 기본 학습 모델로 여러 의사결정 트리가 있습니다. 우리는 모든 모델에 대한 샘플 데이터 세트를 형성하는 데이터 세트에서 행 샘플링과 기능 샘플링을 무작위로 수행합니다. 이 부분을 부트스트랩이라고 합니다.
우리는 다른 방법과 마찬가지로 Random Forest 회귀 기술에 접근해야 합니다. 기계 학습 기술.
- 특정 질문이나 데이터를 디자인하고 소스를 확보하여 필요한 데이터를 결정하세요.
- 데이터가 접근 가능한 형식인지 확인하고, 그렇지 않으면 필요한 형식으로 변환하세요.
- 필요한 데이터를 얻는 데 필요할 수 있는 눈에 띄는 모든 이상 현상과 누락된 데이터 포인트를 지정합니다.
- 기계 학습 모델을 만듭니다.
- 달성하려는 기본 모델 설정
- 데이터 머신러닝 모델을 훈련합니다.
- 테스트 데이터를 통해 모델에 대한 통찰력 제공
- 이제 테스트 데이터와 모델의 예측 데이터 모두의 성능 측정항목을 비교합니다.
- 기대치가 충족되지 않으면 그에 따라 모델을 개선하거나 데이터의 연대를 측정하거나 다른 데이터 모델링 기술을 사용해 볼 수 있습니다.
- 이 단계에서는 얻은 데이터를 해석하고 그에 따라 보고합니다.
Python의 랜덤 포레스트 회귀
아래 예에서는 유사한 샘플 기술을 사용합니다. 다음은 여기(https://bit.ly/417n3N5)에서 다운로드할 수 있는 데이터 세트에 대한 Random Forest Regression의 단계별 샘플 구현입니다.
파이썬 라이브러리를 사용하면 단 한 줄의 코드로 데이터를 처리하고 일반적이고 복잡한 작업을 수행하는 것이 매우 쉬워집니다.
- 팬더 – 이 라이브러리는 데이터 프레임을 2D 배열 형식으로 로드하는 데 도움이 되며 분석 작업을 한 번에 수행할 수 있는 여러 기능을 갖추고 있습니다.
- 넘피 – Numpy 배열은 매우 빠르며 매우 짧은 시간에 대규모 계산을 수행할 수 있습니다.
- Matplotlib / 시본 – 이 라이브러리는 시각화를 그리는 데 사용됩니다.
- Sklearn – 이 모듈에는 데이터 전처리부터 모델 개발 및 평가까지 작업을 수행하기 위해 사전 구현된 기능이 있는 여러 라이브러리가 포함되어 있습니다.
- RandomForestRegressor – 이것은 Random Forest 모델 또는 sklearn 라이브러리를 사용하여 이 기사에서 사용할 앙상블 학습을 기반으로 하는 회귀 모델입니다.
- 스켈런: 이 라이브러리는 Python의 핵심 기계 학습 라이브러리입니다. 기계 학습 모델의 전처리, 모델링, 평가 및 배포를 위한 광범위한 도구를 제공합니다.
- 라벨인코더: 이 클래스는 범주형 데이터를 숫자 값으로 인코딩하는 데 사용됩니다.
- KNN임퓨터: 이 클래스는 k-최근접 이웃 접근 방식을 사용하여 데이터 세트의 누락된 값을 대치하는 데 사용됩니다.
- train_test_split: 이 함수는 데이터 세트를 훈련 세트와 테스트 세트로 분할하는 데 사용됩니다.
- 표준스케일러: 이 클래스는 평균을 제거하고 단위 분산에 맞게 조정하여 기능을 표준화하는 데 사용됩니다.
- f1_점수: 이 함수는 F1 점수를 사용하여 분류 모델의 성능을 평가하는 데 사용됩니다.
- RandomForestRegressor: 이 클래스는 랜덤 포레스트 회귀 모델을 훈련하는 데 사용됩니다.
- cross_val_score: 이 함수는 모델의 성능을 평가하기 위해 k-겹 교차 검증을 수행하는 데 사용됩니다.
1단계: 라이브러리 가져오기
여기서는 필요한 모든 라이브러리를 가져옵니다.
파이썬3
import> pandas as pd> import> matplotlib.pyplot as plt> import> seaborn as sns> import> sklearn> import> warnings> from> sklearn.preprocessing> import> LabelEncoder> from> sklearn.impute> import> KNNImputer> from> sklearn.model_selection> import> train_test_split> from> sklearn.preprocessing> import> StandardScaler> from> sklearn.metrics> import> f1_score> from> sklearn.ensemble> import> RandomForestRegressor> from> sklearn.ensemble> import> RandomForestRegressor> from> sklearn.model_selection> import> cross_val_score> warnings.filterwarnings(> 'ignore'> )> |
>
>
2단계: 데이터세트 가져오기
이제 팬더의 데이터 프레임에 데이터 세트를 로드해 보겠습니다. 더 나은 데이터 처리 및 편리한 기능을 활용하여 복잡한 작업을 한 번에 수행합니다.
파이썬3
df> => pd.read_csv(> 'Salaries.csv'> )> print> (df)> |
>
>
산출:
Position Level Salary 0 Business Analyst 1 45000 1 Junior Consultant 2 50000 2 Senior Consultant 3 60000 3 Manager 4 80000 4 Country Manager 5 110000 5 Region Manager 6 150000 6 Partner 7 200000 7 Senior Partner 8 300000 8 C-level 9 500000 9 CEO 10 1000000>
여기서는.info()>
방법은 데이터 세트의 구조, 데이터 유형 및 메모리 사용량에 대한 빠른 개요를 제공합니다.
파이썬3
C의 표준 입력
df.info()> |
>
>
산출:
RangeIndex: 10 entries, 0 to 9 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Position 10 non-null object 1 Level 10 non-null int64 2 Salary 10 non-null int64 dtypes: int64(2), object(1) memory usage: 372.0+ bytes>
3단계: 데이터 준비
여기서 코드는 데이터 세트에서 두 개의 데이터 하위 집합을 추출하여 별도의 변수에 저장합니다.
- 특징 추출: DataFrame에서 기능을 추출하여 이름이 지정된 변수에 저장합니다.
X>
. - 대상 변수 추출: DataFrame에서 대상 변수를 추출하여 이름이 지정된 변수에 저장합니다.
y>
.
파이썬3
# Assuming df is your DataFrame> X> => df.iloc[:,> 1> :> 2> ].values> #features> y> => df.iloc[:,> 2> ].values> # Target variable> |
>
>
4단계: 랜덤 포레스트 회귀 모델
코드는 범주형 데이터를 수치적으로 인코딩하여 처리하고, 처리된 데이터를 수치 데이터와 결합하고, 준비된 데이터를 사용하여 Random Forest Regression 모델을 학습시킵니다.
파이썬3
import> pandas as pd> from> sklearn.ensemble> import> RandomForestRegressor> from> sklearn.preprocessing> import> LabelEncoder> > Check> for> and> handle categorical variables> label_encoder> => LabelEncoder()> x_categorical> => df.select_dtypes(include> => [> 'object'> ]).> apply> (label_encoder.fit_transform)> x_numerical> => df.select_dtypes(exclude> => [> 'object'> ]).values> x> => pd.concat([pd.DataFrame(x_numerical), x_categorical], axis> => 1> ).values> # Fitting Random Forest Regression to the dataset> regressor> => RandomForestRegressor(n_estimators> => 10> , random_state> => 0> , oob_score> => True> )> # Fit the regressor with x and y data> regressor.fit(x, y)> |
>
세상에서 가장 아름다운 미소
>
5단계: 예측 및 평가
이 코드는 훈련된 Random Forest Regression 모델을 평가합니다.
- 모델의 일반화 성능을 추정하는 OOB(Out-of-Bag) 점수입니다.
- 훈련된 모델을 사용하여 예측을 수행하고 이를 '예측' 배열에 저장합니다.
- MSE(평균 제곱 오차) 및 R2(R 제곱) 측정항목을 사용하여 모델 성능을 평가합니다.
RandomForest의 Out of Bag 점수
가방 점수 또는 OOB 점수 배깅 알고리즘을 검증하기 위해 배깅 알고리즘에서 주로 사용되는 검증 기술 유형입니다. 여기서 검증 데이터의 작은 부분은 데이터의 주류에서 가져오고 특정 검증 데이터에 대한 예측이 수행되어 다른 결과와 비교됩니다.
OOB 점수가 제공하는 주요 이점은 여기서 검증 데이터가 배깅 알고리즘에 의해 표시되지 않는다는 점이며, 이것이 바로 OOB 점수의 결과가 배깅 알고리즘의 실제 성능을 나타내는 실제 결과인 이유입니다.
특정 Random Forest 알고리즘의 OOB 점수를 얻으려면 알고리즘의 OOB_Score 매개변수에 대해 True 값을 설정해야 합니다.
파이썬3
# Evaluating the model> from> sklearn.metrics> import> mean_squared_error, r2_score> # Access the OOB Score> oob_score> => regressor.oob_score_> print> (f> 'Out-of-Bag Score: {oob_score}'> )> # Making predictions on the same data or new data> predictions> => regressor.predict(x)> # Evaluating the model> mse> => mean_squared_error(y, predictions)> print> (f> 'Mean Squared Error: {mse}'> )> r2> => r2_score(y, predictions)> print> (f> 'R-squared: {r2}'> )> |
우편 주문 순회 이진 트리
>
>
산출:
Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>
6단계: 시각화
이제 급여 데이터 세트에서 RandomForest 회귀 모델을 사용하여 얻은 결과를 시각화해 보겠습니다.
- 특성 값의 범위를 포괄하는 예측 점 그리드를 만듭니다.
- 실제 데이터 포인트를 파란색 분산점으로 표시합니다.
- 예측 그리드의 예측 값을 녹색 선으로 표시합니다.
- 더 나은 이해를 위해 플롯에 레이블과 제목을 추가합니다.
파이썬3
import> numpy as np> X_grid> => np.arange(> min> (X),> max> (X),> 0.01> )> X_grid> => X_grid.reshape(> len> (X_grid),> 1> )> > plt.scatter(X,y, color> => 'blue'> )> #plotting real points> plt.plot(X_grid, regressor.predict(X_grid),color> => 'green'> )> #plotting for predict points> > plt.title(> 'Random Forest Regression Results'> )> plt.xlabel(> 'Position level'> )> plt.ylabel(> 'Salary'> )> plt.show()> |
>
>
산출:
7단계: 랜덤 포레스트 모델의 단일 의사결정 트리 시각화
코드는 학습된 Random Forest 모델의 의사결정 트리 중 하나를 시각화합니다. 선택한 의사결정 트리를 플롯하여 앙상블 내 단일 트리의 의사결정 프로세스를 표시합니다.
파이썬3
from> sklearn.tree> import> plot_tree> import> matplotlib.pyplot as plt> # Assuming regressor is your trained Random Forest model> # Pick one tree from the forest, e.g., the first tree (index 0)> tree_to_plot> => regressor.estimators_[> 0> ]> # Plot the decision tree> plt.figure(figsize> => (> 20> ,> 10> ))> plot_tree(tree_to_plot, feature_names> => df.columns.tolist(), filled> => True> , rounded> => True> , fontsize> => 10> )> plt.title(> 'Decision Tree from Random Forest'> )> plt.show()> |
>
>
산출:
랜덤 포레스트 회귀의 응용
랜덤 포레스트 회귀에는 다음과 같은 다양한 실제 문제가 있습니다.
공개 vs 비공개 자바
- 연속적인 수치 예측: 주택 가격, 주가 또는 고객 평생 가치를 예측합니다.
- 위험 요소 식별: 질병, 금융 위기 또는 기타 부정적인 사건에 대한 위험 요소를 감지합니다.
- 고차원 데이터 처리: 다수의 입력 특성을 사용하여 데이터세트를 분석합니다.
- 복잡한 관계 캡처: 입력 특성과 대상 변수 간의 복잡한 관계를 모델링합니다.
랜덤 포레스트 회귀의 장점
- 의사결정 트리에 비해 사용하기 쉽고 훈련 데이터에 덜 민감합니다.
- 생각보다 정확하네요 결정 트리 연산.
- 속성이 많은 대규모 데이터 세트를 처리하는 데 효과적입니다.
- 누락된 데이터를 처리할 수 있으며, 특이치 , 시끄러운 기능.
랜덤 포레스트 회귀의 단점
- 모델은 해석하기 어려울 수도 있습니다.
- 이 알고리즘에는 의사결정 트리 수, 각 트리의 최대 깊이, 각 분할에서 고려할 기능 수와 같은 적절한 매개변수를 선택하기 위해 일부 도메인 전문 지식이 필요할 수 있습니다.
- 특히 대규모 데이터 세트의 경우 계산 비용이 많이 듭니다.
- 그것은 고통받을 수 있습니다 과적합 모델이 너무 복잡하거나 의사결정 트리 수가 너무 많은 경우.
결론
Random Forest Regression은 기존 의사결정 트리에 비해 장점이 있어 지속적인 예측 작업을 위한 강력한 도구가 되었습니다. 고차원 데이터를 처리하고, 복잡한 관계를 캡처하고, 과적합을 줄이는 기능으로 인해 다양한 애플리케이션에서 인기 있는 선택이 되었습니다. Python의 scikit-learn 라이브러리를 사용하면 Random Forest Regression 모델의 구현, 최적화 및 평가가 가능하므로 기계 학습 실무자가 접근 가능하고 효과적인 기술이 됩니다.
자주 묻는 질문(FAQ)
1. 랜덤 포레스트 회귀 파이썬이란 무엇입니까?
Random Forest Regression Python은 예측을 위해 여러 의사결정 트리를 사용하는 앙상블 학습 방법입니다. 회귀 작업에 매우 적합한 강력하고 다양한 알고리즘입니다.
2. 랜덤 포레스트 회귀의 용도는 무엇입니까?
Random Forest Regression을 사용하면 가격, 매출, 고객 이탈 등 다양한 대상 변수를 예측할 수 있습니다. 이는 쉽게 과대적합되지 않는 강력한 알고리즘이므로 실제 응용 프로그램에 적합한 선택입니다.
3. 랜덤 포레스트와 회귀의 차이점은 무엇입니까?
Random Forest는 앙상블 학습 방법인 반면, 회귀는 지도 학습 알고리즘의 한 유형입니다. Random Forest는 여러 의사결정 트리를 사용하여 예측을 수행하는 반면 회귀는 단일 모델을 사용하여 예측을 수행합니다.
4. Random Forest Regression의 하이퍼파라미터를 어떻게 조정합니까?
Random Forest Regression의 하이퍼파라미터를 조정하는 방법에는 다음과 같은 여러 가지가 있습니다.
- 그리드 검색: 그리드 검색에는 최상의 조합을 찾기 위해 다양한 하이퍼파라미터 값 조합을 체계적으로 시도하는 작업이 포함됩니다.
- 무작위 검색: 무작위 검색은 다양한 하이퍼파라미터 값 조합을 무작위로 샘플링하여 좋은 조합을 찾습니다.
5. 랜덤 포레스트가 회귀보다 나은 이유는 무엇입니까?
Random Forest는 일반적으로 회귀 분석보다 더 정확하고 강력합니다. 또한 과적합이 발생할 가능성이 적습니다. 즉, 새로운 데이터에 대해 잘 일반화될 가능성이 더 높습니다.