결정 트리는 예/아니오로 답할 수 있는 어떤 질문들이 있고, 그 질문들의 답을 따라가면서 데이터를 분류하는 알고리즘입니다. 간단한 예시를 볼게요.

교통사고가 났을 때, 운전자의 생존 여부를 예측하고 싶다고 할게요. 결정 트리는 질문들과 답으로 이뤄졌다고 했잖아요?

그럼 여기 가장 위에는 “안전벨트를 했나요?” 이 질문이 있을 수 있습니다. 안전벨트를 했으면 여기 왼쪽으로 내려와서 생존, 안 했으면 오른쪽으로 내려가서 사망. 이런 식으로 분류하는 거죠. 질문에 해당하는 내용을 초록색, 그리고 분류에 해당하는 내용을 보라색으로 나타내겠습니다.

지금은 안전벨트를 했는지 안 했는지를 물어보는데요. 데이터가 주행 속도, 즉 특정 숫자 값이라면 주행 속도가 시속 100km를 넘었나요? 이런 질문도 할 수 있습니다. 이때도 똑같이 예측하려는 데이터에 대한 질문의 답에 따라 왼쪽 또는 오른쪽으로 가서 데이터를 분류할 수 있는 거죠.

지금 본 결정 트리는 진짜 엄청 기본적인 거고요. 사실 더 많은 질문들로 이뤄질 수 있습니다. 안전벨트를 했는지, 고속도로인지, 시속이 100km가 넘었는지, 사고자 나이 50을 넘었는지 등을 이용해서 결정 트리를 만들 수 있는 거죠.

질문들에 답을 해가면서 한 단계식 내려갈 수 있는데요. 보라색 박스들은 분류를 갖고 있다고 했잖아요? 위에서부터 질문들에 계속 답을 하다가 내려가면서 이 보라색 박스들에 도착을 하면, 해당 분류 값을 리턴하면 됩니다.

그리고 중요한 게 또 한 가지 있는데요. 한 속성을 딱 한 번만 사용해야 되는 건 아닙니다.

예를 들어서 한 번은 주행 속도가 100을 넘었는지 질문을 할 수 있고요. 밑에 내려가서는 60을 넘었는지 안 넘었는지, 이렇게 하나의 속성으로 여러 개의 질문을 만들 수도 있습니다.

질문들이 있고, 그 질문들에 대한 답들을 따라가면서 데이터를 분류하는 알고리즘. 엄청 직관적이죠?

컴퓨터 과학에서는 이렇게 한 지점에서 시작해서 점점 넓게 퍼져 나가는 걸 트리라고 하는데요. 나무는 뿌리에서 시작해서 여러 개의 가지로 뻗어나가잖아요? 이 알고리즘은

  1. 하나의 시작 지점에서 퍼져나가는 모습이 마치 나무와 비슷하고,
  2. 그리고 한 단계 내려갈 때마다 왼쪽으로 갈지 오른쪽으로 갈지 선택하는

알고리즘이기 때문에 이름이 결정 트리인 거죠.

이 하나하나에 있는 박스를 “노드”라고 합니다. 좀 데 구체적으로는 가장 위에 있는 이 제일 위에 있는 질문 노드를 나무의 뿌리라고 해서 root 노드, 트리의 가장 끝에 있는 이 노드들을 나무의 잎, leaf 노드라고 하는데요. leaf 노드는 항상 사망/생존과 같은 특정 예측값을 갖고 있고, 나머지 노드들은 예/아니오로 답할 수 있는 질문을 갖고 있습니다.

반응형

+ Recent posts