랜덤 포레스트 (RF)

랜덤 포레스트

랜덤 포레스트는 실제로 배깅의 모델로 의사 결정 트리를 사용하는 특별한 배깅 방법입니다.

랜덤 포레스트는 의사 결정 트리의 통합이지만 두 가지 차이점이 있습니다.

(1) 샘플링의 차이 : m 개의 샘플을 포함하는 데이터 세트에서 대체 샘플링이 있고, m 개의 샘플을 포함하는 샘플링 세트가 훈련을 위해 획득됩니다. 이렇게하면 각 의사 결정 트리의 훈련 샘플이 정확히 동일하지 않습니다.

먼저 원본 데이터 세트에서 대체샘플을 취하여 하위 데이터 세트를 구성합니다. 하위 데이터 세트 의 데이터 볼륨은 원래 데이터 세트와 동일합니다 . 다른 하위 데이터 세트의 요소는 반복 될 수 있으며 동일한 하위 데이터 세트의 요소도 반복 될 수 있습니다. 둘째, 하위 데이터 세트를 사용하여 하위 결정 트리를 만들고이 데이터를 각 하위 결정 트리에 배치하면 각 하위 결정 트리가 결과를 출력합니다. 마지막으로 새로운 데이터가 있고 랜덤 포레스트를 통해 분류 결과를 얻어야 할 경우 하위 결정 트리의 판단 결과에 투표하여 랜덤 포레스트의 출력 결과를 얻을 수 있습니다.

(2) 특성 선택의 차이 : 각 의사 결정 트리의 n 개의 분류 특성은 모든 특성에서 무작위로 선택됩니다 (n은 스스로 조정해야하는 매개 변수 임).

랜덤 포레스트에서 하위 트리의 각 분할 프로세스는 모든 후보 기능을 사용하지 않고 모든 후보 기능에서 특정 기능을 무작위로 선택한 다음 무작위로 선택한 기능에서 최적의 기능을 선택합니다. 이러한 방식으로 랜덤 포레스트의 의사 결정 트리가 서로 다를 수 있으며 시스템의 다양성이 향상되어 분류 성능이 향상됩니다.
여기에 사진 설명 삽입

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)
 
rfc = RandomForestClassifier(n_estimators=20,max_depth=None,random_state=0)
# n_estimator树的个数,
rfc = rfc.fit(Xtrain,Ytrain)
score_r = rfc.score(Xtest,Ytest)
rfc.predict(Xtest)  # 预测类别
rfc.predict_proba(Xtest)  # 各类预测概率 
 
print("Random Forest:{}".format(score_r))

각 표본이 특정 부분 집합으로 그려 질 확률은 (1-n 번 그려지지 않을 확률) :
1 − (1 − 1 n) n 1- (1- \ frac {1} {n}) ^ n1( 1(1))n
lim ⁡ n → ∞ (1 − (1 − 1 n) n) = (1 − 1 e) = 0.632 \ displaystyle \ lim_ {n \ to \ infty} (1- (1- \ frac {1} {n }) ^ n) = (1- \ frac {1} {e}) = 0.632n ( 1( 1(1))n )=( 1이자형(1))=0 .. 6. 3 2
세트는 원래 데이터의 평균 약 63 %를 자체 포함합니다. 학습 데이터의 약 37 %가 모델링에 참여하지 않고 낭비되며 이러한 데이터를 out of bag 데이터 (oob)라고합니다. 처음부터 분리 한 테스트 세트 외에도 이러한 데이터는 통합 알고리즘의 테스트 세트로도 사용할 수 있습니다. 즉, 랜덤 포레스트를 사용할 때 테스트 세트와 학습 세트를 나눌 수 없으며 모델을 테스트하기 위해 out-of-bag 데이터 만 사용하면됩니다.

rfc = RandomForestClassifier(n_estimators=25,oob_score=True) #默认为False
rfc = rfc.fit(wine.data,wine.target)
#重要属性 oob_score_ 使用袋外数据的模型评分
rfc.oob_score_
# 当n和n_estimators都不够大的时候,很可能就没有数据掉落在袋外,自然也就无法使用oob数据来测试模型了

이점:

  1. 많은 데이터 세트가 잘 수행되고 두 개의 임의성이 도입되면 임의 포리스트가 과적 합되기 쉽지 않습니다.

  2. 기능 선택없이 고차원 데이터를 처리 할 수 ​​있습니다.

  3. 데이터 세트에 대한 강력한 적응성 : 이산 데이터와 연속 데이터를 모두 처리 할 수 ​​있으며 데이터 세트를 표준화 할 필요가 없습니다.

  4. 훈련 후에는 이러한 기능을 제공 할 수있는 것이 더 중요합니다.

  5. 훈련 속도가 빠르며 계산을 병렬화하기 쉽습니다.

  6. 두 가지 임의성 도입으로 임의의 숲이 우수한 소음 방지 기능을 갖습니다.

  7. 암시 적으로 여러 조인트 피쳐를 생성하고 비선형 문제를 해결할 수 있습니다.

  8. out-of-bag (oob) 오류 평가 기능 제공

단점;

  1. 과도한 적합은 잡음이있는 분류 또는 회귀 문제에서 발생합니다.

  2. 속성 수준이 다른 데이터의 경우 수준이 더 높은 속성은 랜덤 포레스트에 더 큰 영향을 미치므로 이러한 유형의 데이터에 대해 RF가 생성하는 값은 신뢰할 수 없습니다.

  3. 작은 샘플에는 적합하지 않고 큰 샘플에만 적합

  4. 낮은 정확도

  5. 의사 결정에 적합한 경계는 직사각형이며 대각선에는 적합하지 않습니다.

질환

  1. 랜덤 포레스트의 기본 분류기는 독립적이며 서로 다릅니다.

RF와 GBDT의 비교

같은 점 :

  1. 여러 트리로 구성됩니다.
  2. 최종 결과는 여러 트리에 의해 결정됩니다.

차:

  1. 배깅 아이디어에 따라 gbdt는 부스팅 아이디어입니다. 즉, 샘플링 방법이 다릅니다.

  2. RF는 병렬로 생성 할 수 있지만 GBDT는 직렬로만 생성 할 수 있습니다.

  3. 출력 결과, RF는 과반수 투표를 채택하고 GBDT는 모든 결과를 축적합니다.

  4. RF는 이상 값에 민감하지 않고 GBDT는 민감합니다.

  5. 과적 합하기 쉬운 GBDT 또는 RF는 무엇입니까? 답변 : RF, 랜덤 포레스트의 의사 결정 트리는 데이터 세트를 맞추려고하기 때문에 과적 합의 잠재적 위험이있는 반면 GBDT를 높이는 의사 결정 트리는 데이터 세트의 잔차를 맞추고 잔차를 업데이트하는 것입니다. 새로운 결정을 내립니다 트리는 새로운 잔차에 적합하며 느리지 만 과적 합하기 어렵습니다.

  6. RF를 구성하는 트리는 분류 트리 또는 회귀 트리 일 수 있으며 GBDT는 회귀 트리로만 구성됩니다.

  7. RF는 훈련 세트를 동등하게 취급하고 GBDT는 가중치를 기반으로하는 약한 분류기의 앙상블입니다.

  8. RF는 모델 분산을 줄여 성능을 향상시키고 GBDT는 모델 바이어스 (바이어스)를 줄여 성능을 향상시키는 것입니다.

ET 또는 Extra-Trees (매우 무작위 트리)

ET 알고리즘은 랜덤 포레스트 알고리즘과 매우 유사하며 둘 다 많은 의사 결정 트리로 구성됩니다.
한계 트리와 랜덤 포레스트의 주요 차이점 :

  1. RandomForest는 Bagging 모델을 사용합니다. 엑스트라 트리에서 사용하는 모든 샘플을 사용하지만 기능은 무작위로 선택됩니다. 분할은 무작위이기 때문에 어느 정도는 무작위 포레스트보다 좋습니다.

  2. 랜덤 포레스트는 랜덤 서브 세트에서 최상의 분기 속성을 얻는 반면, ET는 결정 트리의 분기를 달성하기 위해 분기 값을 완전히 무작위로 획득합니다.

두 번째 차이점
은 이진 트리를 예로 들어 보겠습니다. 특성 속성이 범주 형태 인 경우 특정 범주의 샘플을 왼쪽 분기로 무작위로 선택하고 다른 범주의 샘플을 오른쪽 분기로 가져옵니다. feature 속성은 숫자 값으로 형태로 특성 속성의 최대 값과 최소값 사이에서 임의의 숫자를 무작위로 선택하고 샘플의 특성 속성 값이이 값보다 크면 왼쪽 가지로 간주하고 값이 값보다 작 으면 오른쪽 분기로 간주됩니다.
이러한 방식으로,이 특성 속성 하에서 두 개의 분기에 무작위로 샘플을 할당하는 목적이 달성됩니다. 이때 분기 값을 계산한다 (특성 속성이 카테고리 형태이면 지니 인덱스를 적용 할 수 있고, 특성 속성이 값 형태이면 평균 제곱 오차를 적용 할 수있다). 위의 방법에 따라 노드의 모든 피처 속성을 트래버스하고 모든 피처 속성의 분기 값을 얻습니다. 노드의 분기를 구현하기 위해 분기 값이 가장 큰 양식을 선택합니다. 위의 소개에서 알 수 있듯이이 방법은 랜덤 포레스트보다 더 랜덤합니다.

특정 의사 결정 트리의 경우 최상의 분기 속성이 무작위로 선택되기 때문에 예측 결과가 종종 정확하지 않지만 여러 의사 결정 트리를 조합하면 좋은 예측 효과를 얻을 수 있습니다.

ET가 구축 된 후 모든 훈련 샘플을 적용하여 ET의 예측 오류를 얻을 수도 있습니다. 이는 의사 결정 트리가 구성되고 예측 애플리케이션이 동일한 학습 샘플 세트이지만 최상의 분기 속성이 무작위로 선택되기 때문에 여전히 완전히 다른 예측 결과를 얻을 수 있고 예측 결과를 샘플의 The real과 비교할 수 있기 때문입니다. 응답 값을 비교하여 예측 오류를 얻습니다. 랜덤 포레스트와 유사하다면 ET에서 모든 훈련 샘플은 OOB 샘플이므로 ET의 예측 오류를 계산합니다. 즉,이 OOB 오류를 계산합니다.

추천

출처blog.csdn.net/weixin_42764932/article/details/111405355