요약
이 게시물에서는 Python에서 의사결정 트리를 실행하는 것과 JMP를 비교하고, 각 분기가 어떤 매개변수로 분할되어야 하는지 결정하기 위해 수학적 기준을 적용하여 JMP에서 사용자 지정 의사결정 트리를 만드는 방법을 보여줍니다. 이 수준의 사용자 지정은 Python에서 사용할 수 없으므로 JMP는 매개변수 분할이 우연에 맡겨지지 않는 견고한 모델을 구축하는 데 필수적입니다. 게다가 이 사용자 지정을 통해 주제 전문 지식을 활용하여 각 분기에서 분할 매개변수를 선택하는 것을 정당화할 수 있으며, 특히 여러 후보가 데이터를 효과적으로 분할하는 유사한 능력을 보이는 경우에 그렇습니다.
이 예에서는 Scikit-learn 라이브러리에서 일반적으로 제공되는 분류 예인 와인 데이터 세트를 사용합니다. 여기에는 이탈리아의 같은 지역에서 재배되지만 세 가지 다른 품종(포도 유형)에서 파생된 와인의 화학 분석 결과가 포함되어 있습니다. 0, 1, 2로 레이블이 지정되었습니다. 데이터 세트에서 플라보노이드(페놀의 한 유형)의 양, 와인의 색상 강도, 회분 함량, 색조, 알코올 함량 등을 포함하여 각 샘플에 13가지 화학적 특성화 기술이 실행되었습니다.
목표는? 가능한 한 가장 적고 저렴한 특성화 테스트를 통해 와인의 출처를 식별하기 위한 의사결정 트리 분류 모델을 만드는 것입니다.
파이썬을 사용하여
먼저, 파이썬에서 의사결정 트리 모델을 만들 때 어떤 결과가 나오는지 살펴보겠습니다. (스크립트는 이 게시물에 첨부되어 있습니다.) 결과 모델은 아래와 같이 matplot 라이브러리로 그래프로 나타낼 수 있습니다. 첫 번째 모델은 색 강도, 프로린, 회분 함량, 플라보노이드, 알코올 함량에 따라 분류합니다.

랜덤 시드를 특정 값으로 설정하지 않으면 아래에서 볼 수 있듯이 트리는 매번 새로운 실행마다 다르게 보입니다. 이는 예상할 수 있지만 실행 속도가 빠르고/또는 저렴한 최상의 특성화 테스트 세트를 선택하고 싶을 수 있으므로 실용적이지 않습니다. 이 예에서는 분할이 발생하는 위치나 값을 제어할 방법이 없습니다.
|
랜덤 상태 = 2
|
랜덤 상태 = 14
|
랜덤 상태 = 24
|
|
|
|
|
필요한 테스트: 색상 강도, 프로린, 알코올 함량, 플라보노이드
|
필요한 테스트: 색상 강도, 프로린, 재, 재의 알칼리성, 사과산, 알코올 함량, 플라보노이드
|
필요한 테스트: 색상 강도, 프로린, od280/od315, 플라보노이드, 재의 알칼리성
|
JMP 사용하기
JMP가 특성화 테스트를 선택할 때 더 나은 성과를 낼 수 있는지 살펴보겠습니다.
JMP에서 Decision Tree 플랫폼을 실행할 때 Analyze > Predictive Modeling > Partition으로 이동합니다. Validation Portion을 0.3으로 설정하고 Informative Missing 및 Ordinal Restricts Order를 체크합니다.

보고서는 이와 비슷하게 보일 것입니다. Go를 클릭하세요.

Go를 클릭하면 다음과 같은 의사결정 트리가 생성됩니다.

파이썬에서와 마찬가지로, 분석을 다시 하면 의사결정 트리에 또 다른 구조가 생성됩니다.
그렇다면 사용된 특성화 방법에 대한 몇 가지 선호도에 기반한 덜 무작위적인 모델을 만들기 위해 무엇을 할 수 있을까요? 우리는 분할을 재정의하고 매개변수를 직접 선택할 것입니다.
먼저 Prune 버튼을 클릭하겠습니다. Prune을 클릭하면 한 단계 뒤로 가서 한 번에 한 가지 브랜치를 제거할 수 있습니다. 다음으로 Candidates 목록을 클릭하고 G^2 또는 Logworth Splitting Criterion 에 따라 피처를 정렬하여 목록 맨 위에 있는 매개변수를 분석할 수 있습니다.
아래에서 분리 후보군을 확인할 수 있는데, 플라보노이드가 목록 맨 위에 있고, 그 다음으로 od280/od315, 총 페놀, 프로린이 뒤따릅니다.

G^2 값은 모델이 플라보노이드를 분할 기준으로 선택할 것임을 알려줍니다. 분할을 클릭하면 플라보노이드 값 1.41을 사용하여 분기 분할이 발생합니다.
다음으로, 플라보노이드 < 1.41에서 후보 목록을 확장합니다. 이제 색상 강도가 목록의 맨 위에 있습니다. 그러나 색상 강도보다 색조를 측정하는 것이 더 쉬울 수 있습니다. 그렇다면 빨간색 삼각형을 클릭하고 Split Specific을 클릭합니다. 그런 다음 분할에 대한 매개변수(이 경우 색조)를 선택하고 OK를 클릭합니다.

아래에 있는 새로운 트리는 플라보노이드 수치가 1.41 미만이고 색조가 0.906 미만이면 와인이 품종 #2에서 만들어질 확률이 0.98임을 나타냅니다. 반면 색조가 0.906보다 높으면 1형 포도에서 나올 가능성이 가장 큽니다. 플라보노이드 수치가 1.41보다 높으면 품종이 0 또는 1일 확률이 거의 50-50입니다. 그러니 거기서 분할을 계속해 보겠습니다.

플라보노이드 >=1.41에서 후보와 그들의 G^2 수치를 살펴보세요. 알코올과 프로린은 비슷한 G^2 값을 갖습니다. 알코올을 테스트하는 것이 더 쉽기 때문에 알코올에서 분할합니다. 알코올 함량이 13.5보다 높으면 와인이 0형 포도에서 나왔을 확률이 91%라는 것을 보여줍니다.

생성된 최종 결정 트리 모델은 아래와 같습니다. 이제 포도 유형을 식별하기 위한 특성화 테스트가 덜 필요하고 선택한 테스트는 이러한 매개변수를 선택하는 데 블랙박스 방식을 취하지 않고도 수행하기가 더 쉽습니다. 그런 다음 결정 규칙을 쉽게 저장하고 다른 사람과 공유할 수 있습니다.
