의사 결정 트리 알고리즘 – 완벽한 가이드

소스 노드 : 1062812

이 기사는 데이터 과학 Blogathon

의사결정 트리 알고리즘

지금까지 선형 회귀, 로지스틱 회귀에 대해 배웠는데 이해하기가 꽤 어려웠습니다. 이제 의사 결정 트리부터 시작해 보겠습니다. 이것이 아마도 기계 학습에서 가장 쉬운 알고리즘일 것입니다. 여기에 관련된 수학은 많지 않습니다. 사용 및 해석이 매우 쉽기 때문에 기계 학습에서 가장 널리 사용되는 실용적인 방법 중 하나입니다.

내용

1. 의사결정 트리란 무엇입니까?

2. 의사결정 트리의 예

3. 엔트로피

4. 정보 획득

5. 분할을 언제 중지해야 합니까?

6. 과적합을 중지하는 방법은 무엇입니까?

  • 최대 _ 깊이
  • min_samples_split
  • min_samples_leaf
  • 최대 기능

7. 가지치기

  • 가지치기 후
  • 전정

8. 미주

의사결정나무란?

여러 다른 영역에 걸쳐 응용 프로그램이 있는 도구입니다. 결정 트리는 분류 및 회귀 문제에 사용할 수 있습니다. 이름 자체는 일련의 기능 기반 분할로 인한 예측을 표시하기 위해 트리 구조와 같은 순서도를 사용함을 나타냅니다. 루트 노드에서 시작하여 잎에 의한 결정으로 끝납니다.

의사결정나무란 무엇인가

이미지 1

의사 결정 트리에 대해 더 배우기 전에 몇 가지 용어에 대해 알아보겠습니다.

루트 노드 – 이 노드에서 의사결정 트리의 시작 부분에 존재하는 노드는 다양한 기능에 따라 모집단이 나누기 시작합니다.

결정 노드 – 루트 노드를 분할한 후 얻은 노드를 결정 노드라고 합니다.

리프 노드 - 더 이상의 분할이 불가능한 노드를 리프 노드 또는 터미널 노드라고 합니다.

하위 트리 – 그래프의 작은 부분을 하위 그래프라고 하는 것처럼 이 결정 트리의 하위 섹션을 하위 트리라고 합니다.

전정 – 과적합을 방지하기 위해 일부 노드를 줄이는 것뿐입니다.

분기 결정 트리 알고리즘

이미지 2

의사결정 트리의 예

예제를 통해 의사결정나무를 이해해 봅시다.

예제 데이터

이미지 3

의사 결정 트리는 거꾸로 되어 있어 루트가 맨 위에 있고 이 루트가 여러 노드로 분할됩니다. 의사 결정 트리는 평신도 용어로 if-else 문 묶음에 불과합니다. 조건이 참인지 확인하고 참이면 해당 결정에 연결된 다음 노드로 이동합니다.

아래 다이어그램에서 나무는 먼저 날씨가 무엇인지 물을 것입니다. 날씨가 맑거나 흐리거나 비가 오나요? 그렇다면 습도와 바람인 다음 기능으로 이동합니다. 강한 바람이 있는지 약한지 다시 확인하고 약한 바람과 비가 오면 사람이 가서 놀 수 있습니다.

의사 결정 트리 예

이미지 4

위의 순서도에서 눈치채셨나요? 우리는 만약 날씨가 흐리다 그럼 놀러가야지. 왜 더 나누지 않았습니까? 왜 거기서 멈췄습니까?

이 질문에 답하려면 엔트로피, 정보 이득, 지니 지수와 같은 몇 가지 개념을 더 알아야 합니다. 그러나 간단히 말해서 훈련 데이터 세트의 출력은 흐린 날씨에 대해 항상 예라고 말할 수 있습니다. 여기에는 무질서가 없기 때문에 노드를 더 분할할 필요가 없기 때문입니다.

머신 러닝의 목표는 데이터 세트의 불확실성이나 장애를 줄이는 것이며 이를 위해 의사 결정 트리를 사용합니다.

이제 루트 노드가 무엇인지 어떻게 알 수 있습니까? 결정 노드는 무엇이어야 합니까? 언제 분할을 중단해야 합니까? 이를 결정하기 위해 데이터 세트의 불확실성 양인 "엔트로피"라는 메트릭이 있습니다.

엔트로피

엔트로피는 데이터 세트의 불확실성 또는 무질서의 척도일 뿐입니다. 예를 들어 이것을 설명하려고 합니다.

일요일에 함께 볼 수 있는 영화를 결정하는 친구 그룹이 있다고 가정합니다. 영화에는 2가지 선택이 있습니다. 하나는 "루시" 두 번째는 "타이타닉" 이제 모두가 자신의 선택을 말해야 합니다. 모두가 대답을 하고 나면 '루시' 4표 획득'타이타닉' 5표 획득. 우리는 지금 어떤 영화를 봅니까? 두 영화에 대한 투표가 다소 평등하기 때문에 지금 한 영화를 선택하기 어렵지 않습니까?

이것이 바로 우리가 무질서라고 부르는 것입니다. 두 영화에 대해 같은 수의 투표가 있으며 어떤 영화를 봐야할지 결정할 수 없습니다. "Lucy"에 대한 투표가 8이고 "Titanic"에 대한 투표가 2였다면 훨씬 쉬웠을 것입니다. 여기서 우리는 대다수의 투표가 "Lucy"에 대한 투표이므로 모두가 이 영화를 볼 것이라고 쉽게 말할 수 있습니다.

의사 결정 트리에서 출력은 대부분 "예" 또는 "아니오"입니다.

엔트로피 공식은 다음과 같습니다.

엔트로피 의사 결정 트리 알고리즘

여기 피+ 는 양성 클래스의 확률입니다.

p- 네거티브 클래스의 확률

S는 훈련 예제의 하위 집합입니다.

의사 결정 트리는 엔트로피를 어떻게 사용합니까?

이제 우리는 엔트로피가 무엇이고 공식이 무엇인지 알고 있습니다. 다음으로 이 알고리즘에서 엔트로피가 정확히 어떻게 작동하는지 알아야 합니다.

엔트로피는 기본적으로 노드의 불순물을 측정합니다. 불순물은 임의성의 정도입니다. 데이터가 얼마나 무작위인지 알려줍니다. NS 순수한 하위 분할 "예"가 되어야 하거나 "아니오"가 되어야 함을 의미합니다.

가정해보자 기능 처음에는 8개의 "예"와 4개의 "아니오"가 있습니다. 첫 번째 분할 후 왼쪽 노드가 5개의 '예'와 2개의 '아니요'를 얻습니다. 반면 오른쪽 노드 3개의 '예'와 2개의 '아니요'를 얻습니다.

여기서 분할이 순수하지 않다는 것을 알 수 있습니다. 이유는 무엇입니까? 두 노드 모두에서 여전히 일부 부정적인 클래스를 볼 수 있기 때문입니다. 의사결정 트리를 만들기 위해서는 각 분할의 불순도를 계산해야 하며, 순도가 100%일 때 리프 노드로 만듭니다.

특징 2와 특징 3의 불순물을 확인하기 위해 엔트로피 공식에 대한 도움을 받을 것입니다.

2 기능

이미지 출처 : Author

엔트로피 계산

기능 3의 경우

특징 3 의사결정나무 알고리즘

왼쪽 노드의 "예" 수가 더 많고 여기에서 결정하기 쉽기 때문에 왼쪽 노드가 오른쪽 노드보다 엔트로피가 낮거나 순도가 더 높다는 것을 트리 자체에서 명확하게 볼 수 있습니다.

엔트로피가 높을수록 순도가 낮고 불순물이 높을수록 항상 기억하십시오.

앞서 언급했듯이 기계 학습의 목표는 데이터 세트의 불확실성이나 불순물을 줄이는 것입니다. 여기서 엔트로피를 사용하여 특정 노드의 불순물을 얻으며 상위 엔트로피인지 특정 노드의 엔트로피인지 알 수 없습니다. 감소했는지 여부.

이를 위해 일부 기능으로 분할한 후 상위 엔트로피가 얼마나 감소했는지 알려주는 "정보 이득"이라는 새로운 측정항목을 가져왔습니다.

정보 획득

정보 이득은 어떤 특성이 주어졌을 때 불확실성의 감소를 측정하고 어떤 속성을 결정 노드로 선택해야 하는지 또는 루트 노드로 선택해야 하는지를 결정하는 요소이기도 합니다.

정보 획득 의사 결정 트리 알고리즘

전체 데이터 세트의 엔트로피 - 일부 기능이 제공된 데이터 세트의 엔트로피입니다.

이것을 더 잘 이해하기 위해 다음 예를 살펴보겠습니다.
전체 인구에 총 30개의 인스턴스가 있다고 가정합니다. 데이터 세트는 그 사람이 체육관에 갈지 여부를 예측하는 것입니다. 16명이 체육관에 가고 14명이 안 간다고 가정해 봅시다.

이제 체육관에 갈지 여부를 예측하는 두 가지 기능이 있습니다.

기능 1은 "에너지" 두 값을 취하는 "높고 낮은"

기능 2은 "동기 부여" 3개의 값을 취합니다 "의욕 없음", "중립" 및 "높은 동기 부여".

이 두 가지 기능을 사용하여 의사 결정 트리가 어떻게 만들어지는지 봅시다. 정보 획득을 사용하여 루트 노드가 되어야 하는 기능과 분할 후에 배치해야 하는 기능을 결정합니다.

기능1 에너지

이미지 출처 : Author

엔트로피를 계산해 봅시다.

엔트로피를 계산 | 의사결정 트리 알고리즘

각 노드의 엔트로피 가중 평균을 보려면 다음을 수행합니다.

엔트로피 가중 평균

이제 E(Parent) 및 E(Parent|Energy) 값이 있으므로 정보 이득은 다음과 같습니다.

정보 획득 예

우리의 부모 엔트로피는 0.99에 가까웠고 이 정보 이득 값을 본 후 "에너지"를 루트 노드로 하면 데이터 세트의 엔트로피가 0.37 감소한다고 말할 수 있습니다.

마찬가지로 다른 기능인 "동기부여"로 이를 수행하고 정보 이득을 계산합니다.

기능2 | 의사결정 트리 알고리즘

이미지 출처 : Author

여기서 엔트로피를 계산해 보겠습니다.

기능 2 엔트로피

각 노드의 엔트로피 가중 평균을 보려면 다음을 수행합니다.

가중 엔트로피

이제 E(Parent) 및 E(Parent|Motivation) 값이 있으므로 정보 이득은 다음과 같습니다.

feature2 정보 이득

이제 "에너지" 기능이 "동기부여" 기능보다 0.37 더 많은 감소를 제공한다는 것을 알 수 있습니다. 따라서 정보 이득이 가장 높은 기능을 선택한 다음 해당 기능을 기반으로 노드를 분할합니다.

최종 분할 | 의사결정 트리 알고리즘
이미지 출처 : Author

이 예에서 "에너지"는 루트 노드가 될 것이며 하위 노드에 대해서도 동일한 작업을 수행합니다. 여기서 우리는 에너지가 "높음"일 때 엔트로피가 낮기 때문에 에너지가 높으면 분명히 체육관에 갈 것이라고 말할 수 있지만 에너지가 낮으면 어떻게 될까요? "동기 부여"라는 새로운 기능을 기반으로 노드를 다시 분할합니다.

언제 분할을 중지해야 합니까?

당신은 우리가 나무 성장을 언제 멈출 것인가에 대해 스스로에게 이 질문을 해야 합니다. 일반적으로 실제 데이터 세트에는 많은 수의 기능이 있으므로 많은 수의 분할이 발생하여 결과적으로 거대한 트리가 생성됩니다. 이러한 트리는 구축하는 데 시간이 걸리고 과적합으로 이어질 수 있습니다. 즉, 트리는 훈련 데이터 세트에서 매우 좋은 정확도를 제공하지만 테스트 데이터에서는 나쁜 정확도를 제공합니다.

하이퍼파라미터 조정을 통해 이 문제를 해결하는 방법에는 여러 가지가 있습니다. 다음을 사용하여 의사 결정 트리의 최대 깊이를 설정할 수 있습니다. 최대 _ 깊이 매개변수. 가치가 높을수록 최대 _ 깊이, 트리가 더 복잡해집니다. 증가하면 훈련 오류가 코스를 벗어나 감소합니다. 최대 _ 깊이 값이지만 테스트 데이터가 그림에 들어오면 정확도가 매우 떨어집니다. 따라서 데이터에 과대적합되지 않고 과소적합되지 않는 값이 필요하며 이를 위해 GridSearchCV를 사용할 수 있습니다.

또 다른 방법은 각 spilt에 대한 최소 샘플 수를 설정하는 것입니다. 로 표시됩니다. min_samples_split. 여기에서 유출을 수행하는 데 필요한 최소 샘플 수를 지정합니다. 예를 들어 최소 10개의 샘플을 사용하여 결정을 내릴 수 있습니다. 즉, 노드에 10개 미만의 샘플이 있는 경우 이 매개변수를 사용하면 이 노드의 추가 분할을 중지하고 리프 노드로 만들 수 있습니다.

다음과 같은 하이퍼파라미터가 더 있습니다.

min_samples_leaf – 리프 노드에 있어야 하는 최소 샘플 수를 나타냅니다. 숫자를 늘릴수록 과적합의 가능성이 높아집니다.

최대 기능 – 최상의 분할을 찾을 때 고려해야 할 기능의 수를 결정하는 데 도움이 됩니다.

이 하이퍼파라미터에 대한 자세한 내용은 다음을 참조하세요. 여기에서 지금 확인해 보세요..

전정

과적합을 피하는 데 도움이 되는 또 다른 방법입니다. 중요하지 않은 노드 또는 하위 노드를 잘라내어 트리의 성능을 향상시키는 데 도움이 됩니다. 중요도가 매우 낮은 가지를 제거합니다.

가지 치기에는 주로 2 가지 방법이 있습니다.

은 (i) 전정 – 트리 성장을 더 일찍 멈출 수 있습니다. 즉, 중요도가 낮은 노드를 가지치기/제거/자를 수 있습니다. 성장하는 동안 나무.

(II) 가지치기 후 – 일단 우리 나무는 그 깊이까지 만들어졌다, 중요도에 따라 노드 가지치기를 시작할 수 있습니다.

미주

요약하자면, 이 기사에서 우리는 의사 결정 트리에 대해 배웠습니다. 트리가 노드를 분할하는 기준과 과적합을 중지하는 방법. 분류 문제의 경우 선형 회귀가 작동하지 않는 이유.

다음 글에서는 과적합을 피하기 위한 새로운 기법인 랜덤 포레스트에 대해 설명하겠습니다.
의사 결정 트리의 전체 구현을 확인하려면 내 깃허브 저장소.

아래 의견에 질문이 있으면 알려주십시오.

저자에 관하여

저는 현재 통계학(통계학 학사)을 전공하는 마지막 해에 재학 중인 학부생이며 데이터 과학, 기계 학습 및 인공 지능 분야에 큰 관심을 가지고 있습니다. 나는 데이터에 대한 추세와 기타 귀중한 통찰력을 발견하기 위해 데이터를 탐구하는 것을 즐깁니다. 나는 끊임없이 배우고 새로운 것을 시도하도록 동기를 부여합니다.

나는 협업과 작업에 열려 있습니다.

어떠한 것도 의심과 의문, 저에게 연락 주시기 바랍니다 이메일

나와 함께 연결 링크드인트위터

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

이미지 소스

  1. 이미지 1 – https://wiki.pathmind.com/decision-tree
  2. 이미지 2 – https://wiki.pathmind.com/decision-tree
  3. 이미지 3 - www.hackerearth.com
  4. 이미지 4 - www.hackerearth.com

출처: https://www.analyticsvidhya.com/blog/2021/08/decision-tree-algorithm/

타임 스탬프 :

더보기 분석 Vidhya