한의학의 선혈(選穴) 과정에 XGBoost 적용하기

Sia Lim·2025년 5월 19일

한의학의 선혈 판단, XGBoost와 닮았다?

최근 Kaggle의 Intermediate Machine Learning 코스를 듣다가 XGBoost에 대해 배우게 되었는데,
이게 의외로 한의학의 '선혈(選穴)' 과정과 굉장히 비슷하다는 생각이 들었다.


🌿 선혈(選穴)과 머신러닝?

선혈은 말 그대로 "침을 어디에 놓을 것인가?"를 결정하는 과정이다.
같은 어깨 통증이라도, 어떤 한의사는 견우에 침을 놓고, 어떤 한의사는 견정에 침을 놓는다.
아픈 부위가 어깨인데도 합곡, 후계처럼 손에 침을 놓는 경우도 있고, 심지어는 발끝에 놓기도 한다. 왜일까?

그 이유는 단순하지 않기 때문이다.
증상만 보는 게 아니라, 체질, 맥상, 동반 증상, 병력 등 다양한 조건을 종합적으로 판단하기 때문이다.


🌲 XGBoost는 어떤 모델일까?

XGBoost는 "조건 기반 분기"를 반복적으로 만들어가는 트리 기반의 머신러닝 모델이다.
정형 데이터에서 성능이 좋고, 특히 조건이 복잡하고 상호작용이 많은 문제에서 잘 작동한다.

예를 들어 이런 식이다:

IF 통증 부위 == 어깨:
    IF 방사통 있음:
        IF 통증 강도 > 7:
            선택: 합곡, 견우, 견정
        ELSE:
            선택: 견우, 후계
    ELSE:
        IF 체형 == 허약:
            선택: 비수, 기해
        ELSE:
            선택: 대장경 중심

그림으로 나타내면 이런 식이다.

이 그림과 결정트리는 한의학을 잘 모르는 개발자인 내가 작성한 것이기 때문에, 내용은 정확하지 않고 그냥 참고용임을 알아주길 바란다.

아무튼! 이렇게 마치 한의사가 문진을 통해 진단을 내리는 것처럼,
XGBoost도 여러 조건을 고려하면서 최적의 예측을 한다.


🤔 선형 모델과 뭐가 다를까?

선형 회귀 같은 모델은 다음과 같은 식으로 예측을 한다.

가격 = (10 × 방 수) + (5 × 평수) + 100

이처럼 모든 feature가 단순히 "더하거나 곱해지는" 식으로만 결과에 영향을 준다.
그래서 이런 모델은 예를 들어, "나이가 많을수록 무조건 질병 확률이 높다" 같은
단순하고 직선적인 결론밖에 낼 수 없다.

하지만 XGBoost는 조건에 따라 다른 판단을 한다.

예를 들어,

  • "40대는 질병 확률이 높지만, 60대 이상은 되려 낮다"
  • "통증은 어깨에 있지만, 허리 병력이 있으면 손목에 침을 놓는다"

이런 복잡하고 분기적인 관계를 모델링할 수 있다.

즉, XGBoost는

  • 어떤 feature의 값이 특정 조건을 만족할 때만 영향을 주거나,
  • 다른 feature와 조합될 때 의미 있는 영향을 주는 관계도 포착할 수 있다.

✨ 그래서 왜 한의학과 닮았다고 느꼈을까?

항목한의학 선혈 판단XGBoost
진단 방식조건에 따른 분기조건문 트리 분기
개별화된 판단체질, 동반 증상, 병력 등 고려feature 조합에 따른 분기
선혈 선택 기준다단계 조건 조합트리 기반 의사결정

"같은 증상이라도, 환자마다 다른 처방을 내리는 것"
이건 전통적인 선형적 사고로는 모델링하기 어렵다.
그래서 오히려 XGBoost처럼 조건에 따라 유연하게 판단하는 트리 기반 모델이 더 잘 어울린다고 느꼈다.


📍 적용 예시

증상은 같은데, 조건이 조금씩 다를 경우 다음과 같이 트리 기반 판단이 다르게 작동할 수 있는 것이다.

조건선택된 경혈
어깨통증 + 방사통 + 통증 강도 8합곡, 견우, 견정
어깨통증 + 방사통 없음 + 체형 허약비수, 기해
어깨통증 + 방사통 없음 + 체형 튼튼대장경 위주

🔚 마치며

만약 한의학 진단 데이터를 충분히 수집할 수 있다면,
선혈 판단 과정을 XGBoost 모델로 재현해보는 것도 의미 있는 연구/실험이 될 수 있지 않을까?

한의학은 복잡하지만, 그렇기 때문에 더더욱
조건 기반 판단 구조를 가진 머신러닝 모델과 잘 어울릴지도 모르겠다.

0개의 댓글