Data Science/: : Bigdata Analyisis

데이터로 좋은 결정 내리는 방법, 의사결정 나무

Jay.P Morgan 2024. 3. 11. 10:43

  0. Intro

 

   ‘특정 질병에 가장 영향을 크게 미치는 유전자가 무엇인지 알 수 있을까?’, ‘카드사에서 고객의 특성에 맞춰 어떤 혜택이 가장 적합할지 어떻게 파악할 수 있을까?’

   이러한 질문들에 대답할 수 있는 기술이 바로 ‘알고리즘’입니다. 알고리즘이란 어떠한 문제를 논리적으로 해결하기 위한 절차를 말하는데요. 이러한 알고리즘을 연구하는 분야를 머신러닝이라고 부릅니다. 머신러닝의 작업 분야는 크게 지도학습과 자율학습으로 나뉘죠. 이 중 지도학습은 다시 분류와 예측으로 나누어지는데, 알고리즘은 분류와 예측 작업을 통해 데이터로부터 의미 있는 결론을 이끌어내는 역할을 합니다. 이러한 알고리즘은 빅데이터의 발달과 함께 매우 빠르게 발전하고 있습니다.

ⓒPixabay

   구글의 데이터 분석 커뮤니티 캐글(Kaggle)은 데이터과학 경진 대회를 운영하고 있습니다. 기업 및 단체들이 과제와 데이터를 제공하면 전 세계의 사람들이 여러 데이터들을 바탕으로 적합한 알고리즘을 만들고 경쟁합니다. 그중 유명한 도전 과제 하나는 다음과 같습니다.

    “타이타닉에서 어떤 승객들이 생존할지 어떻게 예측할 수 있을까?”

   승객들의 성별과 나이, 객실 등급 등에 따라 생존 여부가 달라질 수 있다는 것인데요. 이를 어떻게 예측할 수 있을까요? 오늘은 이러한 문제를 예측하는 가장 기본적인 알고리즘인, ‘의사결정나무’에 대하여 알아보도록 하겠습니다.

 

 

  1. 의사결정나무란 무엇일까?

 

분류 나무라고도 부르는 의사결정나무란, 결론에 도달할 때까지 연속적인 ‘예/아니오’ 질문들을 반복해 최종 의사결정을 하는 방법입니다. 각 변수에 따라 어떤 확률을 가지는지 확인할 수 있죠.

ⓒVectorStock

 

   예를 들어 타이타닉 데이터로 의사결정나무를 만든다고 가정해 봅시다, 의사결정나무 모델은 데이터를 둘로 나누는 최적의 조건을 찾는 것부터 시작합니다. 타이타닉의 사례에선 남녀간 성별이 50% 이상의 차이를 만들어내죠. 이처럼 가장 큰 변수 순서로 의사결정나무를 따라가다 보면 최종적으로 가족 수가 적은 3등석 여성과 아이들, 1, 2등석의 여성과 아이들 중 드문 호칭을 가지지 않은 사람들이 생존 가능성이 높다는 결과를 얻어낼 수 있습니다.

   의사결정나무를 활용할 때는 가지를 많이 만들어 많은 변수를 반영해야 보다 정확한 결과를 얻을 수 있습니다. 하지만, 무조건 정확하다고 다 좋은 걸까요? 그건 아닙니다. 바로 ‘과적합’ 문제 때문인데요.

   너무 복잡한 알고리즘을 만든다면, 중요한 정보뿐 아니라 잡음까지 반영하게 됩니다. 알고 있는 모든 정보들을 고려하려다 보면 각 그룹의 데이터 수가 감소해 불확실성과 변동성이 커지는 것입니다. 따라서 올바른 알고리즘을 만들기 위해서는 알고리즘의 적당한 복잡도를 결정하는 과정이 필요합니다.

 

  2. 잘 만든 알고리즘일까?

 

위에서 의사결정나무가 무엇인지 알아보았는데요. 이러한 알고리즘이 과연 잘 만든 알고리즘인지, 데이터를 기반으로 올바른 예측을 하고 있는지 어떻게 판단하면 좋을까요?

 

가장 기본적인 방법은, 혼동 행렬(confusion matrix)에서 정확도를 구하는 것입니다. 정확도는 전체 데이터 중에 의사결정나무를 통해 올바르게 분류된 데이터의 비율을 말합니다.

위의 표를 예로 들자면 정확도는 (올바르게 분류된 데이터)/(전체 데이터)=(TP+TN)/(TP+FP+TN+FN)으로 나타낼 수 있습니다. 여기에 더해 민감도와 특이도라는 개념도 확인할 필요가 있습니다. 민감도는 양성환자 중 양성으로 진단된 비율, 특이도는 음성환자 중 음성으로 진단된 비율을 말합니다. 식으로 나타내면 민감도=TP/(TP+FN), 특이도=TN/(TN+FP)로 나타낼 수 있습니다. 타이타닉 문제에서는 생존을 양성으로, 사망을 음성으로 생각해서 구해주면 되겠죠?

하지만 이러한 정확도만으로 의사결정나무의 성능을 판단하기엔 어려움이 있습니다. 이럴 때는 ‘ROC 곡선’이라는 개념으로 성능을 판단할 수도 있는데요. ROC 곡선이란 수신자 조작 특성 곡선(Receiver Operating Characteristic curve)을 의미합니다. 분류기준값에 따른 특이도와 민감도를 제시하는 지표죠.

©flickr

이 그림에서 y축은 민감도를, x축은 특이도를 나타냅니다. 단 여기서 x축은 왼쪽이 1, 오른쪽이 0의 값을 가지고 있습니다. 일반적으로 분류기준점을 높이면 특이도는 증가, 민감도는 감소하는 특징이 있습니다. 또한 대각선은 수를 무작위로 지정하는 알고리즘의 ROC 곡선을 나타냅니다. 좋은 알고리즘의 ROC 곡선은 왼쪽 위로 볼록한 모양인데요.

서로 다른 두 개의 알고리즘에 대한 ROC 곡선을 비교하기 위해 AUC를 이용하기도 합니다. AUC는 ROC 곡선의 아래 면적을 말하는데, 동전던지기와 같이 쓸모없는 알고리즘의 경우 AUC 값은 0.5, 이론적으로 완벽한 알고리즘이 있다면 AUC=1을 가지게 됩니다.

지금까지 의사결정나무에 대해서 살펴보았는데요. 의사결정나무는 가장 기본적인 알고리즘에 속하는 만큼, 이를 보완하기 위한 더 복잡한 방법들도 많습니다. 많은 나무들이 각각 분류 결과를 내면 최종 결과는 다수결로 결정하는 ‘랜덤 포레스트’, 서로 다른 결과를 잘 분할하는 특징들의 선형 결합을 찾는 방법인 ‘서포트 벡터 머신(SVM)’ 외에도 신경망, K-최근접 이웃 알고리즘(K-nearest-neighbor algorithm) 등이 있습니다.

이처럼 상황에 따라 적합한 알고리즘을 이용하면 많은 양의 데이터로부터 우리가 원하는 결론을 얻을 수 있겠죠?

하지만 알고리즘의 성능이 발전하면서 제기된 문제점들도 있는데요. 데이터의 변화에 따라 알고리즘이 크게 바뀌는 문제도 있고, 데이터 자체의 변동성을 고려할 수 없다는 점, 알고리즘의 구조가 불투명한 경우도 존재한다는 점 등이 문제점으로 꼽히고 있습니다. 동시에 앞으로 알고리즘이 해결해 나가야 하는 숙제이기도 하고요.

알고리즘은 분명한 한계가 있지만, 여전히 의료 등 넓은 분야에서 인류에게 도움이 되는 도구입니다. 단지 좋은 결과를 얻어내기 위한 방법론적인 발전을 넘어서 올바르고 책임감 있는 결론을 얻을 수 있도록 다양한 논의가 필요한 시점입니다.

 

출처 데이터로 좋은 결정 내리는 방법, 의사결정 나무 by 과학기술정보통신부

 

'Data Science > : : Bigdata Analyisis' 카테고리의 다른 글

귀무가설, 대립가설  (0) 2024.04.02
로지스틱 회귀분석(Logistic Regression)  (0) 2024.03.27
KNN (K-Nearest Neighbor)  (0) 2024.03.11
인공 신경망의 구조  (0) 2024.03.11