의사 결정 트리가 계산 비용이 많이 드는 이유는 무엇입니까?


38

에서 R의 응용 프로그램과 통계 학습에 대한 소개 , 저자는 피팅 것을 쓰기 의사 결정 트리 것은 매우 빠르고, 그러나 이것은 나에게 이해가되지 않습니다. 알고리즘은 최적의 분할을 찾기 위해 모든 기능을 수행하고 가능한 모든 방식으로 분할해야합니다. 관측치 가 숫자 피처의 경우 각 피처에 대해 분할 이 발생할 수 있습니다 .nn

이진 분할이 어떻게 작동하는지 오해하고 있습니까? 아니면이 알고리즘이 오래 걸리지 않을 이유가 있습니까?


1
질문에 +1 이 강의 노트 를 확인 하기 시작할 수 있습니다 15 페이지 알고리즘 대신 사용하십시오. O(N)O(N2)
Haitao Du

답변:


40

의사 결정 트리 알고리즘은 트리에 맞을 때 가능한 모든 트리를 계산하지 않습니다. 그들이 그렇게했다면 NP-hard를 풀고있을 것입니다문제. 의사 결정 트리 피팅 알고리즘은 일반적으로 피팅 프로세스에서 욕심 많은 결정을 내립니다. 각 단계에서 주어진 노드의 데이터와 최적의 분할을 찾고 피팅 프로세스에서 계속 진행하기 위해 하위 문제를 최적화합니다. 또한 의사 결정 트리로 더 깊이 이동하면 더 작은 데이터 세트가 주어 지므로 주어진 노드에 더 작은 데이터 세트가 있으므로 더 작은 데이터 서브 세트에 대한 분할 규칙을 최적화 할 수 있습니다. 이러한 모든 선택은 주어진 노드에서 데이터의 선형 스캔입니다. 이 작업은 복잡하지는 않지만 분할 할 관측치가 많거나 공변량이 많으면 계산이 다소 비쌀 수 있습니다. 그러나 많은 작업을 분할하여 다른 기계로 보내 작업을 수행 할 수 있으므로 계산 아키텍처를 구축하여 확장 할 수있는 방법이 있습니다.


10
다시 말해, 이진 검색과 다소 비슷합니다.
Robert Harvey

1
@Robert Harvey, 피팅 프로세스에서 불순물 기능을 최적화함으로써 균형 잡힌 분리를 보장하거나 장려한다고 생각하지 않습니다. 이진 검색과 동등한 검색 복잡성 을 얻으려면 균형 잡힌 분할을 시행하거나 적어도 권장해야합니다. log2(N)
Lucas Roberts

2
동의하지만 원칙은 여전히 ​​유효합니다. (그래서 제가 "더 많거나 적다"라는 단어를 사용했습니다)
Robert Harvey

2

의사 결정 트리를 구축하기위한 CART 알고리즘과 C4.5 알고리즘에는 약간의 차이가 있습니다. 예를 들어 CART는 Gini Impurity를 ​​사용하여 기능을 선택하고 C.4.5는 Shannon Entropy를 사용합니다. 차이점이 답과 관련이 있다고 생각하지 않으므로 그 차이점을 구별하지 않겠습니다.

의사 결정 트리를 생각보다 빠르게 만드는 것은 다음과 같습니다.

  1. 다른 사람들이 말했듯이 이러한 알고리즘은 1-lookahead 알고리즘입니다. 로컬 최적화를 수행합니다. 모든 지점에서 사용하는 모든 메트릭 (Gini 또는 Entropy)을 최대화 / 최소화하는 규칙을 선택합니다. 즉, 논리 연산자를 사용 and하면 더 나은 트리가 생성되는 규칙을 놓칠 수 있습니다 . 이는 피처 엔지니어링을 수행 할 때 매우주의해야합니다. 예를 들어, 사람들이 얼마나 많이 마시는 지 예측하려고한다면 엔지니어 같은 기능을 원할 수 있습니다 new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). 의사 결정 트리는 이러한 규칙을 놓치거나 필요한 수준보다 덜 중요 할 수 있습니다.
  2. 더 중요한 것은 의사 결정 트리에서 사용하는 메트릭을 증분 계산할 수 있습니다 . 기능이 있다고 가정하십시오 . 의사 결정 트리는에 대한 메트릭을 계산 한 다음에 대해 다시 계산 한 다음 다시에 대한 메트릭을 계산할 필요가 없습니다 . Gini 및 Entropy는 점진적으로 계산 될 수 있으므로 선택되었습니다. 우선, 각 기능이 정렬되어 있으므로 됩니다. 둘째, 계산할 때 결과를 사용하여 쉽게 계산할 수 있습니다. 평균을하는 것과 같습니다. 평균 샘플 가 있고 다른 값 를 주면 평균값을 저렴하게 업데이트 할 수 있습니다.X1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1 . 지니 계수 는 샘플에 대해 쉽게 증분 계산할 수있는 합계의 일부로 계산됩니다.
  3. 의사 결정 트리를 병렬화 할 수 있습니다. 각 노드는 독립적 인 두 개의 분기로 구성됩니다. 따라서 각 분기에서 트리 생성을 병렬화 할 수 있습니다. 또한 기능 선택 자체를 병렬화 할 수도 있습니다. 이것이 패키지를 xgboost너무 빨리 만드는 것 입니다. 그라디언트 부스팅은 순차적이며 병렬화 할 수 없지만 트리 자체는 가능합니다.

1

답을 풍부하게하기 위해

계층 구조 축 병렬 의사 결정 트리는 빠르지 만 (CART, C4.5) 비 계층 적 의사 결정 트리 또는 더 정확하지는 않지만 비스듬한 파티션을 수행하는 의사 결정 트리와 같은 다른 대안이 있습니다. 관심이 있으시면 다음 참고 문헌을 확인하십시오 (독점적 인 선택은 아닙니다).

비계 열적 :

Grubinger, T., Zeileis, A. 및 Pfeiffer, K.-., 2014. Evtree : RJStat.Software 61 (1), 1-29에서 세계적으로 최적의 분류 및 회귀 트리에 대한 혁신적인 학습.

오블 리크 스플릿 :

Murthy, SK, Kasif, S. 및 Salzberg, S., 1994. 사선 의사 결정 트리 유도 시스템. 아티 프 Intell. 입술 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. 및 Kamath, C., 2003. 진화 알고리즘으로 경사 결정 트리 유도. IEEE Trans. 진화. 계산. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. 및 Salzberg, S., 1993. 사선 결정 트리의 유도. 아티 프 Intell. 입술 2 (2), 1002-1007.

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.