각 잎에 선형 회귀 모델이있는 회귀 트리 알고리즘


14

짧은 버전 : 의사 결정 트리를 작성할 수있는 R 패키지를 찾고 있지만 의사 결정 트리의 각 리프는 완전한 선형 회귀 모델입니다. AFAIK, 라이브러리 rpart는 종속 변수가 각 리프에서 일정한 의사 결정 트리를 만듭니다. rpart그러한 나무를 만들 수 있는 다른 라이브러리 (또는 내가 모르는 설정)가 있습니까?

긴 버전 : 훈련 데이터 세트를 기반으로 의사 결정 트리를 작성하는 알고리즘을 찾고 있습니다. 트리의 각 결정은 독립 변수 중 하나의 조건에 따라 학습 데이터 세트를 두 부분으로 나눕니다. 트리의 루트에는 전체 데이터 세트가 포함되며 데이터 세트의 각 항목은 정확히 하나의 리프 노드에 포함됩니다.

알고리즘은 다음과 같습니다.

  1. 트리의 루트 노드 인 전체 데이터 세트로 시작하십시오. 이 노드를 선택하고 이라고 부릅니다 .N
  2. 의 데이터에 대해 선형 회귀 모델을 만듭니다 .N
  3. 경우 의 의 선형 모델이 어떤 임계 값보다 높은 , 그 다음 우리가 완료 , 그래서 마크 5 단계에 잎과 점프로. N θ R 2 N NR2NθR2NN
  4. 무작위로 결정을 시도 하고 서브 노드에서 최상의 를 산출하는 결정을 선택하십시오 . R 2nR2
    • 임의의 독립 변수 와 임의의 임계 값 .θ iviθi
    • 결정 은 의 데이터 세트 를 두 개의 새 노드 및 로 분할합니다 . N N ~ NviθiNN^N~
    • 및 에 선형 회귀 모델을 작성 하고 계산하십시오 ( 및 ). ~ N R2 R ~ RN^N~R2r^r~
    • 모든 튜플 에서 최대 . 트리에서 새로운 결정을 내리고 에는 두 개의 새로운 하위 노드 및 있습니다.( V , θ , R , ~ R은 ) 해요 I N ( R , ~ R ) N N ~ Nn(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. 처리가 완료되었습니다 . 아직 처리되지 않은 새 노드 을 선택하고 2 단계로 돌아가십시오. 모든 노드가 처리되면 알고리즘이 종료됩니다.NNN

그러면 데이터를 더 작은 부분으로 분할하고 각 부분에 대한 선형 모델을 계산하는 의사 결정 트리가 반복적으로 작성됩니다.

3 단계는 종료 조건으로, 알고리즘이 과적 합되는 것을 방지합니다. 물론 다른 가능한 종료 조건이 있습니다.

  • 트리에서 의 깊이가 이상 이면 종료Nθdepth
  • 의 데이터 세트 가 보다 작은 경우 종료Nθdataset

R 패키지에 그러한 알고리즘이 있습니까?


4
상기 살펴보세요 파티 패키지를이 잘 맞는 경우를 참조하십시오. 트리 IIRC의 노드에서 여러 유형의 모델을 처리 할 수 ​​있습니다.
복원 Monica Monica-G. Simpson

답변:


11

그것들이 알고리즘과 다르게 작동하지만 mob () 및 FTtree가 흥미로울 것이라고 생각합니다. Zeileis의 폭도는 http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf 를 참조하십시오 . FTtree, Gaama의 기능적 트리 인 경우 Weka 및 RWeka에서 구현을 사용할 수 있습니다. 자세한 내용은 http://cran.r-project.org/web/packages/RWeka/index.html 을 참조하십시오.


1
mob의 경우 +1. 거의 모든 모델을 재귀 분할 프레임 워크에 연결할 수 있습니다
etov

8

RWeka 패키지는 많은 회귀 방법을 제공합니다. 그중에서도 잎에 선형 방정식을 가진 트리 기반 회귀 모델 인 M5P (M5 Prime)를 찾을 수 있습니다. M5 방법에 대한 자세한 내용은 발행물을 참조하십시오 .

예제 코드는 다음과 같습니다.

library(RWeka)
M5_model = M5P (Dep_var ~ ., data = train, control = Weka_control(N=F, M=10))
train_predicted = predict(M5_model, train)
test_predicted = predict(M5_model, test)

M5 방법으로 배깅 앙상블을 사용하려면 다음과 같이 시도하십시오.

M5_bag = Bagging(Dep_var ~ ., data = train, control = Weka_control(P=100, I = 100, W = list("weka.classifiers.trees.M5P", M = 4)))

M5P 모델의 제어 옵션을 보려면 다음을 시도하십시오.

WOW(M5P)

M5 방법을 최적화하려면 caret패키지에 솔루션이 있습니다 .

library(caret)
Optimization = train (Dep_var ~ .,data = train, method = 'M5')

7

나는 이것이 당신의 질문의 짧은 버전에 답한다고 생각합니다.

입체파 패키지 맞는 통치 기반 터미널 잎에서 선형 회귀 모델 인스턴스를 기반으로 수정 및 강화와 (나무와 유사) 모델.

에서 크랑 작업 조회수 : 기계 학습


이것이 Quinlan의 M5와 비슷한 지 아십니까?
Momo

Quinlan의 Cubist가 Quinlan의 M5와 비슷한 한 Quinlan의 M5와 유사하다는 것을 알고 있습니다.
잭 라이언
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.