분류

Classification

방법

들어온 항목이 미리 정해 둔 칸 중 어디에 속하는지를 과거 기록으로 학습해 맞히게 하는 과제입니다.

등장 배경

같은 판단을 하루에 수백 번 반복하는 자리가 있습니다. 페이지덱 고객 문의함이 그랬습니다. 하루 삼백여 건을 수아가 읽고 환불, 버그, 사용법, 기타 넷 중 하나로 나눠 담당자에게 넘겼습니다. 한 건에 십오 초면 되는 일이지만 하루 한 시간 넘게 들었고, 사람이 바뀌면 기준도 흔들렸습니다.

그래서 단어로 규칙을 적어 봤습니다. "환불" 이 들어 있으면 환불함, "안 돼요" 가 들어 있으면 버그함으로 보내는 식입니다. 한 달 만에 규칙이 예순 개를 넘겼고 서로 부딪혔습니다. "환불 정책이 어떻게 되나요" 는 사용법 질문인데 환불함으로 갔고, "결제했는데 화면이 안 바뀝니다" 는 규칙마다 답이 달랐습니다.

막힌 지점은 분명했습니다. 수아는 그 문의를 제대로 나눌 줄 알지만 무엇을 보고 나누는지는 규칙으로 적어 내지 못합니다. 단어 하나가 아니라 문장 전체의 인상, 결제 이력, 문의 길이를 한꺼번에 보기 때문입니다.

분류는 그 기준을 사람이 적는 대신 기록에서 찾아내게 합니다. 지난 2년 치 문의 4만 건에는 이미 사람이 붙인 답이 있고, 그 답을 맞히는 쪽으로 기준을 스스로 조정하게 두면 아무도 말로 적지 못한 기준이 숫자의 조합으로 남습니다.

사용 절차

칸을 먼저 정하고 정답이 붙은 기록을 모은 다음, 기준을 학습시키고 성적을 재고 실제 흐름에 붙입니다. 여섯 단계입니다.

  1. 칸을 정합니다. 서로 겹치지 않고, 어떤 항목이 들어와도 갈 곳이 있어야 합니다. 환불과 결제 오류를 따로 두면 "결제가 두 번 됐어요" 가 두 칸에 다 걸려 답이 흔들립니다.
  2. 정답이 붙은 기록을 모읍니다. 이렇게 가르치는 데 쓰는 기록 묶음이 학습 데이터이고, 정답을 보고 배우게 하는 방식이 지도 학습입니다. 칸마다 수백 건은 있어야 하고, 기타함처럼 수가 적은 칸은 성적이 먼저 나빠집니다.
  3. 무엇을 보고 판단하게 할지 정합니다. 기계가 보는 것은 글 자체가 아니라 거기서 뽑아낸 숫자 묶음이고, 이 값 하나하나를 피처라고 부릅니다. 문의 길이, 특정 단어가 들어 있는지, 작성자가 유료 요금제인지, 최근 7일 안에 결제한 적이 있는지 같은 것입니다.
  4. 학습시킵니다. 모은 기록을 전부 쓰지 않고 20퍼센트쯤을 떼어 두었다가 나중에 시험지로 씁니다. 가르칠 때 쓴 문제로 시험을 보면 점수가 부풀기 때문입니다.
  5. 성적을 잽니다. 떼어 둔 시험지로 확인하되 맞힌 비율 하나만 보지 않고 정밀도와 재현율로 나눠 봅니다. 환불함으로 보낸 것 중 진짜 환불 문의가 몇 퍼센트인지가 하나, 실제 환불 문의 중 몇 퍼센트를 환불함으로 보냈는지가 다른 하나입니다.
  6. 실제 흐름에 붙입니다. 모델은 칸 하나를 단정하는 게 아니라 칸마다 확신 정도를 숫자로 내놓으니, 어느 값부터 자동으로 배정할지 선을 그어 둡니다. 페이지덱은 0.85로 잡아 전체의 70퍼센트를 자동으로 보내고 나머지를 수아가 봅니다.

적합한 상황과 한계

칸이 미리 정해져 있고, 사람이 그 판단을 해 온 기록이 쌓여 있고, 같은 판단이 앞으로도 반복될 때 맞습니다. 칸을 뭐라고 부를지부터 모르겠다면 군집화가 먼저이고, 판단이 한 번만 필요하다면 사람이 하는 쪽이 쌉니다.

한계는 넷입니다.

  1. 칸이 바뀌면 다시 해야 합니다. 문의함에 "기능 제안" 칸을 새로 만들면 과거 4만 건에 그 답이 붙어 있지 않으니 다시 붙여야 합니다.
  2. 한쪽으로 쏠린 데이터에 약합니다. 어떤 칸이 전체의 2퍼센트뿐이면 그 칸을 통째로 무시하는 모델이 높은 점수를 받습니다. 쏠린 쪽 수를 맞춰 주거나 판정 기준선을 옮겨야 합니다.
  3. 사람마다 답이 다른 일은 못 맡깁니다. 같은 문의를 수아와 다른 담당자가 다른 칸에 넣어 왔다면 학습 데이터에 모순이 든 것이고, 모델의 성적은 그 모순보다 좋아지지 않습니다.
  4. 시간이 지나면 무뎌집니다. 제품에 새 기능이 붙거나 문의하는 말투가 달라지면 모델은 그대로인데 성적만 내려갑니다. 이 현상이 모델 드리프트이고, 성적을 주기적으로 다시 재고 최근 기록으로 다시 학습시키는 MLOps 작업이 따라붙습니다.

학습 데이터에서 98점인데 실제 문의에서 71점이라면 다른 문제입니다. 가르칠 때 본 기록에만 지나치게 맞춰진 과적합을 먼저 의심합니다.

실무 용례

"이건 분류로 풀 수 있어요. 지난 2년 치 문의에 답이 다 붙어 있거든요."

칸이 정해져 있고 정답이 붙은 기록이 있으니 조건이 갖춰졌다는 말입니다.

"분류 정확도가 96퍼센트인데 기타함은 거의 못 맞혀요."

전체 점수는 높지만 수가 적은 칸에서는 쓸 수 없다는 뜻입니다.

"확신 0.85 아래는 사람한테 넘기는 걸로 하죠."

자동으로 넘길 범위를 정하자는 제안이고, 이 선을 낮출수록 자동 처리가 늘고 오배정도 같이 늘어납니다.

페이지덱에서는 지현이 제안하고 태오가 만들었습니다. 지현이 먼저 한 일은 모델 고르기가 아니라 칸 정리였습니다. 수아와 함께 지난 문의 500건을 네 칸에 다시 나눠 보니 둘의 답이 갈리는 건이 100건 중 14건이었고, 그 유형을 보고 칸 경계를 다시 적은 뒤에야 학습을 시작했습니다. 넉 달 뒤 성적이 내려간 것은 그사이 붙은 새 기능 이름이 학습 데이터에 없었던 탓이었고, 태오가 최근 석 달 치로 다시 학습시켰습니다.

흔한 오해

정확도가 높으면 쓸 만하다고 읽는 경우가 가장 많습니다. 숫자 하나로 요약돼 있어 비교하기 좋아 보이기 때문입니다. 이 값은 칸마다 들어오는 양이 고를 때만 뜻이 있습니다. 백 건 중 두 건만 스팸인 자리에서는 아무것도 하지 않는 모델이 98점을 받고, 그 점수를 믿고 올리면 잡아야 할 두 건을 하나도 못 잡은 채 잘 돌아간다고 보고됩니다. 칸별로 나눠 보면 바로 드러납니다.

모델이 판단을 대신해 준다고 읽는 것도 흔합니다. 나오는 것은 단정이 아니라 칸마다의 확신 정도이고, 어느 선부터 자동으로 처리할지는 사람이 정합니다. 그 선은 기술이 아니라 틀렸을 때 무슨 일이 생기는지가 정합니다. 문의를 잘못 배정하면 담당자가 다시 넘기면 그만이라 낮게 잡아도 되지만, 멀쩡한 계정을 스팸으로 잠그면 해지로 이어지니 훨씬 높게 잡습니다.

자주 헷갈리는 용어

용어무엇을 내놓는가분류와의 차이
회귀 분석숫자 하나답이 연속된 값입니다. 다음 달 매출이 얼마일지는 회귀 분석이고, 다음 달에 해지할지 말지는 분류입니다
군집화이름 없는 묶음칸을 미리 정하지 않고 비슷한 것끼리 묶기만 합니다. 정답이 붙은 기록도 필요하지 않고, 나온 묶음에 이름을 붙이는 일은 사람 몫입니다

같이 보면 좋은 페이지

  • 머신러닝

    분류가 어느 갈래에 속하는지와 나머지 과제에는 무엇이 있는지 봅니다

  • 군집화

    칸이 아직 없을 때 먼저 하는 일이라 분류와 짝으로 익혀 둡니다

마지막 업데이트 2026-09-16