GBM에서 상호 작용 깊이는 무엇을 의미합니까?


30

R에서 gbm의 상호 작용 깊이 매개 변수에 대한 질문이 있습니다. 이것은 멍청한 질문 일 수 있지만 사과 할 수는 있지만 트리의 터미널 노드 수를 나타내는 매개 변수는 기본적으로 X-way를 나타냅니다. 예측 자들 사이의 상호 작용? 그것이 어떻게 작동하는지 이해하려고 노력합니다. 또한 두 요인 변수가 단일 요인으로 결합 된 경우를 제외하고 동일한 데이터 집합에 대해 두 개의 다른 요인 변수가있는 데이터 집합이있는 경우 (예 : 요인 1의 X 수준, 요인 2의 Y 수준, 결합 변수의 경우) X * Y 요인). 후자는 전자보다 훨씬 더 예측 적입니다. 상호 작용 깊이를 높이면 이러한 관계가 생길 것이라고 생각했습니다.

답변:


22

이전 답변 모두 잘못되었습니다. 패키지 GBM은 interaction.depth매개 변수를 단일 노드에서 시작하여 트리에서 수행해야하는 여러 분할로 사용합니다. 각 분할은 총 노드 수를 3 씩 늘리고 터미널 노드 수를 2 씩 늘리면 (노드 {왼쪽 노드, 오른쪽 노드, NA 노드}) 트리의 총 노드 수는 되고 터미널 노드 수 . 이것은 기능 의 출력을 살펴보면 확인할 수 있습니다 .+12+1pretty.gbm.tree

사용자가 실제로 깊이가 결과 트리의 깊이가 될 것으로 예상하기 때문에 동작은 다소 오해의 소지가 있습니다. 그렇지 않습니다.


여기 N은 무엇입니까 : 수많은 노드, interaction.depth 또는 다른 것?
Julian

단일 노드 (상호 작용 깊이)에서 시작하여 여러 분할이 수행됩니다.
랜덤

1
각 분할은 터미널 노드의 총 수를 1 씩 증가 시킨다고 생각합니다. 따라서 트리에 하나의 분할 만 있고 2 개의 터미널 노드가 있다고 가정하면 이전 터미널 노드 중 하나에서 분할을 수행 한 다음 3 개의 터미널이 있습니다 지금 노드. 증분은 단지 1입니다. 나는 이것을 올바르게 얻거나 무언가를 잘못 이해하고 있습니까?
Lily Long

1
@LilyLong 즉시 명확하지는 않지만 gbm은 실제로 세 번째 하위 그룹화 NA 값 (예 : 주어진 값과 직접 비교할 수없는)으로 노드를 분할합니다. 즉, 각 분할은 노드 수를 2 씩 증가시킵니다. 이 세 번째 자식을 만들지 않기 위해 마지막으로 사용한 이후 패키지가 진화했을 수 있으므로 pretty.gbm.tree 함수를 실행하여 다시 확인하십시오.
랜덤

2

R에서 gbm의 상호 작용 깊이 매개 변수에 대한 질문이 있습니다. 이것은 멍청한 질문 일 수 있지만 사과 할 수는 있지만 트리의 터미널 노드 수를 나타내는 매개 변수는 기본적으로 X-way를 나타냅니다. 예측 자들 사이의 상호 작용?

interaction.depth와 터미널 노드 수 사이의 링크

하나 interaction.depth는 분할 노드의 수로 볼 수 있습니다. interaction.depthK 고정은 K + 1 개 노드 초래할 것이다 단말 노드 우리가 가지고 있으므로 (개구 노드 생략)

나는이자형아르 자형에이기음나는영형.이자형h=#{이자형아르 자형나는에이영형이자형에스}+1

interaction.depth와 상호 작용 순서 사이의 연결

interaction.depth상호 작용 순서와 의 연결 은 더 지루합니다.

interaction.depth를 추론하는 대신 터미널 노드의 수를 추론하고 J 라고 부릅니다 .

예 : J = 4 터미널 노드 (interaction.depth = 3)가 있다고 가정 해 봅시다.

  1. 루트에서 첫 번째 분할을 수행 한 다음 루트의 왼쪽 노드에서 두 번째 분할을 수행하고 루트의 오른쪽 노드에서 세 번째 분할을 수행하십시오. 이 트리의 상호 작용 순서는 2입니다.
  2. 루트에서 첫 번째 분할을 수행 한 다음 루트의 왼쪽 (각각 오른쪽) 노드에서 두 번째 분할을 수행하고이 가장 왼쪽 (각각 오른쪽) 노드에서 세 번째 분할을 수행하십시오. 이 트리의 상호 작용 순서는 3입니다.

나는(J1,)

1

이전 답변이 올바르지 않습니다.

그루터기에는 상호 작용이 있으며 깊이는 1이며 두 개의 잎이 있습니다. 그러나 interaction.depth = 2는 세 개의 잎을 제공합니다.

따라서 : NumberOfLeaves = interaction.depth + 1


0

실제로 이전 답변이 잘못되었습니다.

=2(케이+1)1=2케이

2케이

=케이=0케이2케이)

이는 다음과 같습니다.

=2(케이+1)1

0

당신은 시도 할 수 있습니다

table (predict (gbm (y ~., data = TrainingData, distribution = "gaussian", verbose = FALSE, n.trees = 1, 수축 = 0.01, bag.fraction = 1, interaction.depth = 1), n.trees = 1))

두 개의 고유 한 예측 값만 있음을 확인하십시오. interaction.depth = 2는 3 가지의 예측 된 값을 얻을 수 있습니다. 그리고 스스로를 설득하십시오.


이것이 어떻게 질문에 대답하는지 명확하지 않습니다.
Michael R. Chernick 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.