의사 결정 트리는 각 내부 노드가 속성에 대한 테스트를 나타내고, 각 부서가 테스트 결과를 정의하고, 리프 노드가 클래스 또는 클래스 분포를 설명하는 순서도와 같은 트리 메커니즘입니다. 트리에서 가장 큰 노드는 루트 노드입니다.
의사 결정 트리를 구성하는 문제는 재귀적으로 정의할 수 있습니다. 먼저 루트 노드에 배치할 속성을 선택하고 가능한 각 값에 대해 하나의 분기를 만듭니다. 이렇게 하면 속성의 각 값에 대해 하나씩 예제 집합을 하위 집합으로 나눕니다. 부서에 도달하는 인스턴스만 활용하여 모든 지점에 대해 절차를 재귀적으로 반복할 수 있습니다. 노드의 일부 인스턴스가 유사한 분류를 가지고 있다면 트리의 해당 요소 생성을 중지하십시오.
우리가 사용할 순도 측정은 정보라고 하며 비트라는 단위로 측정됩니다. 트리의 각 노드와 관련하여 인스턴스가 해당 노드에 도달한 경우 새 인스턴스를 예 또는 아니오로 분류해야 하는지 여부를 지정하는 데 필요한 예상 정보 양을 나타냅니다.
가지치기는 의사 결정 트리의 크기를 줄이는 절차입니다. 트리의 크기를 설명하거나 전력을 거의 제공하지 않는 트리 영역을 제거하여 과적합의 위험을 줄이는 데 사용됩니다. 가지치기(Pruning)는 훈련 데이터에서 노이즈나 이상치(outlier)로 인해 이상을 따라가는 부서를 잘라내어 제공하고, 트리의 일반화 효과를 향상시키는 방법으로 초기 트리를 제공한다.
몇 가지 방법은 통계적 측정을 사용하여 가장 신뢰할 수 없는 부서를 제거하는 경우가 많으며, 그 결과 자주 더 빠르게 분류하고 독립적인 테스트 데이터를 정확하게 분류하는 트리 기능이 향상됩니다.
의사결정 트리 학습을 위한 알고리즘
알고리즘 − 주어진 교육 정보에서 의사 결정 트리를 만듭니다.
입력 - 이산 값 속성으로 설명된 훈련 샘플, 샘플; 학생 속성 세트, 속성 목록.
출력 − 의사 결정 트리.
방법
-
노드 생성 N;
-
샘플이 동일한 클래스인 경우 C 따라서
-
클래스 C로 레이블이 지정된 리프 노드로 N을 반환
-
속성 목록이 null이면
-
샘플에서 가장 빈번한 클래스로 레이블이 지정된 리프 노드로 N을 반환합니다. // 다수결
-
속성 목록 중에서 정보 이득이 가장 큰 속성인 test-attribute를 선택합니다.
-
테스트 속성으로 노드 N에 레이블을 지정합니다.
-
알려진 각 값에 대해 ai of test-attribute // 샘플을 분할합니다.
-
test-attribute=ai 조건에 대해 노드 N에서 분기 성장 .
-
하자i test-attribute=ai인 샘플의 샘플 세트입니다. .
-
si인 경우 비어 있으면
-
샘플에서 가장 일반적인 클래스로 레이블이 지정된 리프에 연결할 수 있습니다.
-
그렇지 않으면 의사 결정 트리 생성( si )에서 반환된 노드를 연결합니다. , 속성 목록 - 테스트 속성)