Skip to main content
Summary

숫자를 맞히는 문제에서 종류를 고르는 문제로

이전 장에서 살펴본 회귀는 숫자를 예측하는 문제였습니다. 집값이 얼마인지, 내일 기온이 몇 도인지, 다음 달 매출이 얼마나 될지처럼 정답이 숫자 축 위에 놓여 있었습니다. 예측값이 3억 원이고 실제값이 3억 2천만 원이면, 모델은 2천만 원만큼 틀린 셈입니다. 이때 우리는 '얼마나 멀리 빗나갔는가'를 생각할 수 있었습니다.

분류는 조금 다릅니다. 분류는 숫자 축 위의 위치를 맞히는 문제가 아니라, 여러 선택지 중 정답의 종류를 고르는 문제입니다. 이메일을 보고 스팸인지 아닌지 판단하고, 탑승객 정보를 보고 생존했는지 아닌지 예측하고, 고객 정보를 보고 이탈할 고객인지 유지될 고객인지 예측합니다. 여기서 모델이 맞혀야 하는 것은 72.5 같은 숫자가 아니라 '스팸', '정상', '생존', '사망', '이탈', '유지' 같은 범주입니다.

물론 컴퓨터 안에서는 이런 범주도 숫자로 표현됩니다. 예를 들어 스팸을 1, 정상을 0으로 저장할 수 있습니다. 하지만 여기서 1이 0보다 크다는 사실은 중요하지 않습니다. 스팸이 정상보다 두 배 크다거나, 생존이 사망보다 더 큰 값이라는 뜻이 아닙니다. 단지 서로 다른 이름표를 숫자로 바꿔 놓은 것뿐입니다. 이 차이를 놓치면 분류 문제를 회귀 문제처럼 오해하게 됩니다.

분류에서 라벨은 크기가 아니라 종류입니다. 이것이 이번 장의 첫 번째 핵심입니다.

분류: 정답의 종류를 고르는 모델

라벨이 숫자처럼 보여도 크기가 아니다

타이타닉 생존 예측 예제를 떠올려 봅시다. 데이터에는 승객의 성별, 나이, 객실 등급, 동반 가족 수, 운임 같은 정보가 들어 있을 수 있습니다. 그리고 라벨에는 생존 여부가 들어 있습니다. 보통 생존은 1, 사망은 0으로 표현합니다.

겉으로 보면 정답이 숫자처럼 보입니다. 하지만 이 숫자는 회귀의 숫자와 다릅니다. 집값 예측에서 3억과 4억은 실제로 1억만큼 차이가 납니다. 반면 생존 1과 사망 0은 1만큼 차이 나는 값이 아니라 서로 다른 상태입니다. 모델은 0.7명을 생존시킨다거나 0.3만큼 사망한다고 예측하는 것이 아닙니다.

그렇다면 분류 모델이 0.7 같은 값을 내놓을 때는 무엇을 뜻할까요? 보통 그것은 '이 승객이 생존 범주에 속할 가능성이 70% 정도로 보인다'는 의미입니다. 즉 분류 모델의 숫자는 최종 정답 그 자체라기보다, 각 범주에 얼마나 가까운지 나타내는 점수나 가능성에 가깝습니다.

스팸 메일 분류기도 마찬가지입니다. 이메일 제목에 '무료', '당첨', '지금 클릭' 같은 단어가 많고, 발신자 주소가 수상하며, 본문에 링크가 잔뜩 들어 있다면 모델은 스팸 가능성을 높게 볼 수 있습니다. 반대로 회사 동료가 보낸 회의 일정 안내라면 정상 메일 가능성을 높게 볼 것입니다. 모델은 입력을 보고 '이 메일은 스팸이다!'라고 단번에 외치는 것처럼 보이지만, 실제로는 스팸일 가능성과 정상일 가능성을 계산한 뒤 더 그럴듯한 쪽을 선택합니다.

이 관점이 중요합니다. 분류 모델은 답안지를 찍는 기계가 아니라, 각 선택지의 가능성을 비교하는 기계입니다.

이진 분류: 선택지가 두 개인 문제

분류 문제 중 가장 기본적인 형태는 이진 분류입니다. 이진 분류는 정답 후보가 두 개인 문제입니다. 예 또는 아니오, 통과 또는 탈락, 스팸 또는 정상처럼 둘 중 하나를 고릅니다.

대표적인 이진 분류 예시는 다음과 같습니다.

  • 이메일이 스팸인지 정상인지 분류하기

  • 승객이 생존했는지 사망했는지 예측하기

  • 고객이 다음 달에 이탈할지 유지될지 예측하기

  • 거래가 사기인지 정상 거래인지 판단하기

  • 환자에게 특정 질병이 있는지 없는지 예측하기

이진 분류는 단순해 보이지만 실제 서비스에서 매우 자주 등장합니다. 특히 '위험한가, 아닌가', '관심이 있는가, 없는가', '떠날 것인가, 남을 것인가'처럼 의사결정으로 바로 이어지는 문제에 많이 쓰입니다.

고객 이탈 예측을 예로 들어 봅시다. 통신사나 구독 서비스 회사는 고객이 다음 달에도 서비스를 유지할지 알고 싶어 합니다. 모델에는 가입 기간, 최근 접속 횟수, 고객센터 문의 횟수, 요금제, 할인 여부, 결제 실패 기록 같은 정보가 들어갑니다. 라벨은 '이탈' 또는 '유지'입니다.

모델이 어떤 고객에게 이탈 가능성 82%라는 점수를 냈다고 해 봅시다. 회사는 이 고객에게 할인 쿠폰을 보내거나 상담 전화를 걸 수 있습니다. 반대로 이탈 가능성이 5%라면 굳이 비용을 들여 붙잡을 필요가 적을 수 있습니다. 여기서 중요한 것은 모델의 예측이 단순한 맞히기 게임이 아니라 실제 행동을 바꾸는 판단 도구가 된다는 점입니다.

이진 분류에서는 보통 하나의 기준선을 정합니다. 예를 들어 스팸 가능성이 50% 이상이면 스팸으로 분류하고, 50% 미만이면 정상으로 분류할 수 있습니다. 이 기준선을 임계값이라고 부릅니다. 임계값은 가능성을 최종 분류 결과로 바꾸는 경계선입니다.

그런데 이 경계선은 언제나 50%일 필요가 없습니다. 스팸 메일을 조금 더 엄격하게 잡고 싶다면 30%만 넘어도 스팸함으로 보낼 수 있습니다. 반대로 중요한 메일이 스팸함에 들어가는 사고를 줄이고 싶다면 80% 이상일 때만 스팸으로 분류할 수도 있습니다. 분류 모델을 사용할 때는 모델 자체만큼이나 이 기준선을 어떻게 정할지도 중요합니다.

다중 분류: 선택지가 여러 개인 문제

다중 분류는 정답 후보가 세 개 이상인 문제입니다. 손글씨 숫자 이미지를 보고 0부터 9 중 하나를 고르는 문제, 뉴스 기사를 정치·경제·스포츠·문화 중 하나로 분류하는 문제, 고객 문의를 환불·배송·상품·계정 문제 중 하나로 나누는 문제가 여기에 속합니다.

이진 분류가 두 개의 문 중 하나를 여는 문제라면, 다중 분류는 여러 개의 문 앞에서 가장 알맞은 문을 고르는 문제에 가깝습니다. 모델은 각 클래스에 대해 가능성을 계산합니다. 예를 들어 고객 문의 문장을 보고 다음과 같은 가능성을 낼 수 있습니다.

  • 배송 문의: 72%

  • 환불 문의: 15%

  • 상품 문의: 9%

  • 계정 문의: 4%

이 경우 모델은 배송 문의를 최종 답으로 고를 것입니다. 하지만 가능성의 분포를 보면 더 많은 이야기를 읽을 수 있습니다. 배송 문의 가능성이 가장 높긴 하지만 환불 문의도 15% 있습니다. 만약 문장에 '아직 도착하지 않았는데 취소하고 싶어요'라는 표현이 있었다면 배송과 환불이 섞인 문의일 수도 있습니다.

분류 모델을 이해할 때는 최종 선택지만 보지 말고, 모델이 각 선택지에 어느 정도 확신을 가졌는지도 함께 보는 것이 좋습니다. 95% 확신으로 고른 답과 38%, 35%, 27% 사이에서 간신히 고른 답은 느낌이 다릅니다. 둘 다 최종 답은 하나로 표시될 수 있지만, 뒤쪽은 모델도 헷갈리고 있다는 신호일 수 있습니다.

다중 분류에서는 클래스의 의미도 조심해야 합니다. 예를 들어 영화 리뷰를 '부정', '중립', '긍정'으로 나누는 문제는 다중 분류처럼 보이지만, 세 범주 사이에 어느 정도 순서가 있습니다. 반면 동물을 '고양이', '강아지', '토끼'로 분류하는 문제에는 크기나 순서가 없습니다. 이런 차이는 나중에 문제를 설계하고 평가할 때 영향을 줍니다.

모델은 무엇을 보고 종류를 고를까

분류 모델도 결국 입력의 특징을 봅니다. 이메일 분류에서는 단어, 발신자, 링크 수, 첨부파일 여부 같은 특징을 봅니다. 생존 예측에서는 성별, 나이, 객실 등급, 운임 같은 특징을 봅니다. 고객 이탈 예측에서는 사용 빈도, 결제 이력, 고객 불만, 가입 기간 같은 특징을 봅니다.

모델은 이런 특징과 라벨 사이의 관계를 학습합니다. 스팸 메일에 자주 등장하는 표현은 무엇인지, 생존한 승객에게 상대적으로 많았던 조건은 무엇인지, 이탈 고객에게 공통적으로 나타나는 행동은 무엇인지 데이터에서 찾아냅니다.

예를 들어 스팸 메일 분류 모델은 처음에는 아무것도 모릅니다. '무료'라는 단어가 위험한지, 링크가 많으면 수상한지, 발신자 주소가 이상하면 스팸인지 모릅니다. 하지만 수많은 이메일과 정답 라벨을 함께 보면서 조금씩 감을 잡습니다. 스팸 라벨이 붙은 메일에서 특정 단어와 패턴이 반복된다면 그 특징에 높은 가중치를 둘 수 있습니다. 반대로 정상 메일에서 자주 나타나는 표현은 정상 쪽 가능성을 높이는 신호가 될 수 있습니다.

타이타닉 생존 예측도 마찬가지입니다. 모델은 어떤 한 사람의 운명을 '이해'하는 것이 아닙니다. 승객 데이터 안에서 생존 여부와 관련 있어 보이는 패턴을 찾습니다. 특정 객실 등급, 성별, 나이대, 가족 동반 여부가 생존 라벨과 어떤 관계를 보였는지 학습합니다. 그리고 새로운 승객 정보가 들어오면 과거 데이터에서 배운 패턴을 바탕으로 어느 클래스가 더 그럴듯한지 계산합니다.

이 과정은 우리가 낯선 식당을 고르는 방식과 비슷합니다. 간판이 깔끔한지, 손님이 많은지, 메뉴가 선명한지, 리뷰가 어떤지 보고 '괜찮을 가능성'을 판단합니다. 우리는 정답을 미리 알 수 없지만 여러 신호를 종합해 가능성을 계산합니다. 분류 모델도 데이터 속 신호를 종합해 각 클래스의 가능성을 계산합니다.

가능성을 정답으로 바꾸는 순간

분류 모델의 출력은 대개 두 단계로 이해할 수 있습니다. 먼저 모델은 각 클래스에 대한 점수나 가능성을 계산합니다. 그다음 가장 높은 가능성을 가진 클래스를 최종 예측으로 선택합니다.

이진 분류에서는 보통 한쪽 클래스의 가능성을 계산합니다. 예를 들어 '스팸일 가능성 0.87'이라고 하면 스팸 쪽으로 매우 기운 상태입니다. 기준선이 0.5라면 이 메일은 스팸으로 분류됩니다. 반대로 '스팸일 가능성 0.12'라면 정상 메일로 분류됩니다.

다중 분류에서는 여러 클래스의 가능성을 한꺼번에 비교합니다. 예를 들어 이미지를 보고 고양이 0.65, 강아지 0.25, 토끼 0.10이라는 결과가 나오면 모델은 고양이를 선택합니다. 여기서 0.65라는 숫자는 회귀에서 말하는 예측값과 다릅니다. 고양이의 크기가 0.65라는 뜻이 아니라, 고양이 클래스가 가장 그럴듯하다는 뜻입니다.

이 관점은 나중에 로지스틱 회귀, 결정트리, 랜덤포레스트 같은 모델을 배울 때 계속 등장합니다. 모델마다 가능성을 계산하는 방식은 다르지만, 분류의 기본 구조는 비슷합니다. 입력을 보고, 클래스별 가능성을 계산하고, 기준에 따라 하나의 답을 고릅니다.

데이터를 준비한다 → 특징을 만든다 → 모델이 각 클래스의 가능성을 예측한다 → 실제 라벨과 비교한다 → 틀린 정도를 줄인다 → 새로운 데이터의 클래스를 예측한다.

이것이 분류 문제에서 반복해서 보게 될 흐름입니다.

정확도는 편하지만 위험할 수 있다

분류 모델을 평가할 때 가장 먼저 떠오르는 지표는 정확도입니다. 정확도는 전체 예측 중에서 맞힌 비율입니다. 100개의 이메일 중 92개를 맞혔다면 정확도는 92%입니다. 직관적이고 이해하기 쉽습니다. 그래서 분류 모델을 처음 배울 때 가장 먼저 만나는 평가 지표이기도 합니다.

하지만 정확도만 보면 위험한 경우가 있습니다. 특히 한쪽 클래스가 압도적으로 많은 데이터에서는 정확도가 우리를 속일 수 있습니다.

예를 들어 어떤 서비스의 고객 1,000명 중 실제로 이탈한 고객이 50명이고, 유지한 고객이 950명이라고 해 봅시다. 이때 아무 생각 없는 모델이 모든 고객을 '유지'라고 예측하면 어떻게 될까요? 이 모델은 이탈 고객 50명을 전부 놓칩니다. 회사가 가장 찾고 싶어 하는 고객을 한 명도 찾지 못한 것입니다. 그런데 정확도는 950명 out of 1,000명, 즉 95%입니다.

숫자만 보면 훌륭해 보입니다. 하지만 실제로는 쓸모없는 모델입니다. 이탈을 예측하려고 만든 모델이 이탈 고객을 한 명도 잡지 못했기 때문입니다.

사기 거래 탐지도 비슷합니다. 전체 거래 중 사기 거래가 0.1%밖에 없다면, 모든 거래를 정상이라고 예측해도 정확도는 99.9%에 가까울 수 있습니다. 그러나 실제 목적은 드문 사기 거래를 찾아내는 것입니다. 이럴 때 정확도는 모델이 정말 일을 잘하고 있는지 알려주지 못합니다.

그래서 분류 모델을 평가할 때는 '무엇을 맞히는 것이 중요한가'를 먼저 물어야 합니다. 스팸 메일 분류에서는 스팸을 놓치는 것도 문제지만, 중요한 정상 메일을 스팸함에 넣는 것도 큰 문제입니다. 질병 진단에서는 실제 환자를 정상이라고 판단하는 실수가 매우 위험할 수 있습니다. 반대로 어떤 서비스에서는 정상 사용자를 의심 사용자로 잘못 막는 것이 더 큰 손실일 수도 있습니다.

분류 문제에서는 틀림에도 종류가 있습니다. 스팸을 정상이라고 놓치는 실수와 정상 메일을 스팸이라고 막는 실수는 둘 다 틀렸지만, 그 결과는 다릅니다. 생존 예측, 이탈 예측, 사기 탐지, 의료 진단처럼 현실과 연결된 문제에서는 이 차이가 더욱 중요합니다.

정확도는 출발점으로는 좋습니다. 하지만 정확도 하나만 보고 모델을 믿어서는 안 됩니다. 나중에 우리는 정밀도, 재현율, F1 점수 같은 평가 지표를 배울 것입니다. 지금은 이름을 모두 외울 필요가 없습니다. 다만 한 가지는 기억해 둡시다. 분류 모델을 평가할 때는 단순히 '몇 개 맞혔나'보다 '어떤 종류의 실수를 했나'가 더 중요할 때가 많습니다.

분류 모델을 읽는 감각

분류를 처음 배울 때는 모델의 최종 답에만 눈이 갑니다. 스팸인가, 정상인가. 생존인가, 사망인가. 이탈인가, 유지인가. 하지만 조금 더 깊게 보면 분류 모델에는 세 가지 층이 있습니다.

  • 입력 데이터에는 판단에 필요한 특징이 들어 있다.

  • 모델은 특징을 바탕으로 각 클래스의 가능성을 계산한다.

  • 가능성은 기준선이나 비교 과정을 거쳐 최종 라벨이 된다.

이 세 층을 구분할 수 있으면 분류 문제가 훨씬 덜 막연해집니다. 모델이 틀렸을 때도 어디를 살펴봐야 할지 감이 생깁니다. 입력 특징이 부족했는지, 학습 데이터에 편향이 있었는지, 기준선이 너무 낮거나 높았는지, 평가 지표가 문제의 목적과 맞지 않았는지 따져볼 수 있습니다.

예를 들어 스팸 분류기가 정상 메일을 자꾸 스팸으로 보낸다면 단순히 '모델이 나쁘다'고 말하는 대신 더 구체적으로 생각할 수 있습니다. 정상 메일에도 광고성 표현이 많이 들어 있었는지, 스팸 라벨이 잘못 붙은 학습 데이터가 있었는지, 스팸으로 보내는 기준선이 너무 낮은지 확인할 수 있습니다.

고객 이탈 예측 모델도 마찬가지입니다. 모델이 이탈 고객을 잘 찾지 못한다면 이탈 직전의 행동을 보여 주는 특징이 빠졌을 수 있습니다. 최근 접속 감소, 결제 실패, 고객센터 불만, 요금제 변경 같은 신호가 데이터에 없으면 모델은 중요한 단서를 보지 못합니다. 분류 모델은 마법사가 아니라, 제공된 특징 안에서만 판단하는 예측 기계입니다.

분류는 세상을 나누는 기술이 아니다

분류라는 단어에는 약간의 조심스러움이 필요합니다. 모델이 사람, 메일, 거래, 문서, 이미지를 어떤 범주로 나눈다고 해서 그 판단이 언제나 진실이라는 뜻은 아닙니다. 모델은 과거 데이터에서 배운 패턴을 바탕으로 가능성을 계산할 뿐입니다.

그래서 분류 모델을 사용할 때는 항상 질문해야 합니다. 이 라벨은 누가 정했는가? 데이터는 충분히 다양한가? 특정 집단에 불리한 패턴을 그대로 배운 것은 아닌가? 틀렸을 때 피해는 누구에게 가는가? 머신러닝을 잘 이해한다는 것은 모델을 맹신하는 것이 아니라, 모델이 어떤 방식으로 판단하고 어디에서 실수할 수 있는지 아는 것입니다.

이 장에서 우리가 익힌 분류의 기본 감각은 앞으로 계속 쓰입니다. 로지스틱 회귀는 이진 분류의 대표적인 출발점이 될 것이고, 결정트리와 랜덤포레스트는 특징을 기준으로 데이터를 나누며 분류하는 방법을 보여 줄 것입니다. 스팸 메일 분류기, 고객 이탈 예측 모델, 추천 시스템에서도 분류의 사고방식은 계속 등장합니다.

회귀가 숫자 축 위의 값을 맞히는 문제였다면, 분류는 여러 이름표 중 가장 그럴듯한 것을 고르는 문제입니다. 그러나 진짜 핵심은 이름표 하나를 찍는 데 있지 않습니다. 모델은 입력을 보고 각 클래스의 가능성을 계산하고, 실제 라벨과 비교하면서, 다음에는 더 나은 선택을 하도록 자신을 고쳐 갑니다.

이제 우리는 숫자를 예측하는 회귀와 종류를 고르는 분류를 구분할 수 있게 되었습니다. 다음 장부터는 이 두 세계를 실제 모델로 더 구체화해 볼 차례입니다. 먼저 가장 단순하지만 강력한 출발점인 선형회귀를 통해, 모델이 데이터 속 관계를 어떻게 직선으로 배워 가는지 살펴보겠습니다.

책 목록

처음 만나는 머신러닝: 데이터가 스스로 규칙을 배우는 법

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기