Skip to main content
Summary

정답표가 사라지면 모델은 무엇을 볼까

지금까지 우리는 주로 "정답이 있는 문제"를 다뤘다. 집의 면적과 위치를 보고 가격을 예측하거나, 메일 내용을 보고 스팸인지 아닌지 고르거나, 고객 정보를 보고 이탈할 가능성을 판단하는 식이었다. 이런 문제에서는 데이터마다 정답표가 붙어 있다. 집값 데이터에는 실제 거래 가격이 있고, 스팸 분류 데이터에는 스팸 또는 정상이라는 라벨이 있으며, 고객 이탈 데이터에는 실제로 떠났는지 남았는지가 기록되어 있다.

그런데 현실의 데이터는 항상 이렇게 친절하지 않다.

쇼핑몰에 고객 행동 기록이 잔뜩 쌓여 있다고 해 보자. 누가 어떤 상품을 봤는지, 장바구니에 무엇을 담았는지, 언제 접속했는지, 할인 쿠폰을 눌렀는지는 알 수 있다. 하지만 고객마다 "이 사람은 충동구매형", "이 사람은 고가 상품 선호형", "이 사람은 할인 행사 반응형"이라는 정답이 붙어 있지는 않다. 문서 데이터도 마찬가지다. 수천 개의 고객 문의 글이 있어도, 처음부터 깔끔하게 주제별로 분류되어 있지 않을 수 있다. 이미지 폴더에는 수만 장의 사진이 있지만, 그 안에 어떤 스타일이나 물체가 숨어 있는지는 사람이 직접 열어 보기 전까지 모른다.

이럴 때 필요한 것이 비지도학습이다.

비지도학습은 정답 라벨 없이 데이터 안의 구조를 찾는 머신러닝 방법이다. 지도학습이 "이 입력의 정답은 무엇인가?"를 묻는다면, 비지도학습은 "이 데이터들은 서로 어떻게 닮고 다른가?"를 묻는다. 정답을 맞히는 시험이라기보다, 어지럽게 쌓인 물건들을 관찰해 자연스러운 묶음과 방향을 찾아내는 일에 가깝다.

정답 없이 패턴 찾기

라벨 대신 유사성을 배운다

비지도학습에서 모델은 라벨을 볼 수 없다. "이 고객은 A그룹이다", "이 문서는 환불 문의다", "이 이미지는 고양이다" 같은 정답표가 없다. 그렇다면 모델은 무엇을 기준으로 배울까?

핵심은 유사성이다.

비슷한 값을 가진 데이터는 가까운 것으로 보고, 많이 다른 값을 가진 데이터는 먼 것으로 본다. 예를 들어 고객 데이터를 생각해 보자. 어떤 고객은 한 달에 여러 번 접속하고, 할인 쿠폰을 자주 쓰며, 소액 상품을 반복 구매한다. 또 다른 고객은 접속 횟수는 적지만 한 번 구매할 때 비싼 상품을 산다. 두 고객은 모두 "좋은 고객"일 수 있지만 행동 패턴은 다르다. 비지도학습은 이런 차이를 보고 고객들이 자연스럽게 나뉘는 지점을 찾는다.

여기서 중요한 점은 모델이 사람처럼 의미를 먼저 아는 것이 아니라는 사실이다. 모델은 "이 사람은 알뜰형 고객이군" 하고 처음부터 이해하지 않는다. 대신 접속 횟수, 구매 금액, 할인 쿠폰 사용률, 관심 카테고리 같은 특징들을 숫자로 보고, 그 숫자들의 패턴이 비슷한 데이터끼리 가까이 놓는다. 우리가 나중에 그 묶음을 살펴보고 "아, 이 그룹은 할인에 민감한 고객이구나"라고 해석하는 것이다.

비지도학습은 정답을 배우는 것이 아니라 구조를 발견한다. 지도학습에서 학습 대상이 입력과 라벨 사이의 관계였다면, 비지도학습에서 학습 대상은 데이터와 데이터 사이의 관계다.

어두운 방에서 가구 배치를 더듬는 일

비지도학습을 처음 접하면 조금 불안하게 느껴질 수 있다. 정답이 없다면 모델이 잘하고 있는지 어떻게 알 수 있을까? 모델이 찾은 패턴이 진짜 의미 있는지, 아니면 우연히 그렇게 보이는 것인지 어떻게 판단할 수 있을까?

이 감각을 이해하기 위해 어두운 방을 떠올려 보자. 불을 켜지 못한 상태에서 방 안을 걸어 다닌다고 하자. 눈으로는 볼 수 없지만 손끝으로 만져 보면 물체의 위치를 조금씩 알 수 있다. 여기에는 의자가 있고, 저기에는 책상이 있으며, 벽 쪽에는 책장이 있을 것 같다. 처음부터 방의 정확한 설계도를 가진 것은 아니지만, 반복해서 더듬다 보면 "이 방은 대충 이런 구조구나"라는 감각이 생긴다.

비지도학습도 비슷하다. 라벨이라는 밝은 조명은 없지만, 데이터의 거리와 밀도, 방향과 분포를 살펴보며 내부 구조를 더듬는다. 데이터가 어디에 많이 몰려 있는지, 어떤 데이터들이 따로 떨어져 있는지, 복잡한 특징들 사이에 중요한 축이 있는지 찾는다.

이때 모델이 찾는 구조는 하나만 존재하지 않을 수 있다. 같은 고객 데이터를 보고도 구매 금액 기준으로 나눌 수 있고, 접속 빈도 기준으로 나눌 수 있으며, 관심 상품군 기준으로 나눌 수도 있다. 어느 쪽이 더 좋은지는 문제의 목적에 따라 달라진다. 마케팅 캠페인을 만들고 싶다면 할인 반응 패턴이 중요할 수 있고, 물류 재고를 예측하고 싶다면 상품 카테고리 선호가 더 중요할 수 있다.

그래서 비지도학습은 "정답을 맞혔는가?"보다 "쓸모 있는 관점을 발견했는가?"가 중요하다.

고객 세분화: 모두에게 같은 메시지를 보내지 않기

비지도학습의 대표적인 활용 사례는 고객 세분화다. 고객 세분화란 전체 고객을 비슷한 행동을 보이는 여러 그룹으로 나누는 작업이다.

예를 들어 온라인 쇼핑몰이 모든 고객에게 똑같은 할인 문자를 보낸다고 해 보자. 어떤 고객은 반응하겠지만, 어떤 고객은 관심이 없을 것이다. 비싼 신상품을 먼저 사는 고객에게 매번 저가 할인 상품만 추천하면 오히려 브랜드 이미지가 낮아 보일 수 있다. 반대로 가격 비교를 꼼꼼히 하는 고객에게 프리미엄 신상품만 추천하면 클릭조차 하지 않을 수 있다.

고객 행동 데이터를 비지도학습으로 분석하면 여러 유형이 드러날 수 있다.

  • 자주 방문하지만 구매 전환은 낮은 탐색형 고객

  • 접속은 드물지만 한 번에 큰 금액을 쓰는 고가 구매형 고객

  • 할인 쿠폰이 있을 때 구매 가능성이 높아지는 프로모션 반응형 고객

  • 특정 카테고리만 반복해서 구매하는 취향 고정형 고객

이 그룹 이름은 모델이 붙여 주는 것이 아니다. 모델은 숫자 패턴이 비슷한 고객들을 묶을 뿐이다. 그 묶음을 사람이 살펴보고 비즈니스 언어로 해석한다. 여기서 비지도학습의 매력이 나온다. 모델은 사람이 미처 보지 못한 경계선을 보여 주고, 사람은 그 경계선에 의미를 붙인다.

이렇게 만들어진 고객 그룹은 이후 여러 작업에 활용된다. 그룹별로 다른 추천 상품을 보여 줄 수도 있고, 다른 할인 전략을 적용할 수도 있으며, 고객 이탈 예측 모델을 만들기 전에 "어떤 고객군에서 이탈이 많이 발생하는지"를 이해하는 데 사용할 수도 있다.

문서 묶기: 글 더미 속에서 주제 찾기

문서 데이터에서도 비지도학습은 강력하다. 회사에 고객 문의 글이 하루에도 수천 개씩 들어온다고 해 보자. 어떤 글은 배송 지연에 관한 것이고, 어떤 글은 환불 요청이며, 어떤 글은 로그인 오류나 결제 실패에 관한 것이다. 문제는 처음부터 모든 글에 주제 라벨이 붙어 있지 않다는 점이다.

사람이 하나씩 읽고 분류할 수도 있지만, 데이터가 많아지면 금세 한계가 온다. 이럴 때 문서들을 숫자 특징으로 바꾸고, 서로 비슷한 문서끼리 묶어 보면 자연스러운 주제 덩어리가 나타날 수 있다.

예를 들어 "환불", "취소", "반품", "입금" 같은 단어가 자주 함께 등장하는 문서들은 한쪽에 모일 수 있다. "비밀번호", "로그인", "인증", "계정" 같은 단어가 많이 등장하는 문서들은 다른 쪽에 모일 수 있다. 모델은 단어의 뜻을 사람처럼 완벽히 이해하지는 못하더라도, 어떤 표현들이 함께 나타나는지 보고 문서 사이의 가까움과 멀어짐을 계산할 수 있다.

이 작업은 고객센터 운영에 큰 도움이 된다. 자주 발생하는 문의 주제를 파악할 수 있고, 새로운 FAQ를 만들 수 있으며, 어떤 문제가 갑자기 늘어났는지도 감지할 수 있다. 나중에 "배송 문의", "환불 문의", "계정 문의" 같은 라벨이 정리되면, 그때부터는 지도학습 분류 모델을 만들 수도 있다. 즉 비지도학습은 라벨이 없는 혼란스러운 데이터에서 출발점을 만들어 준다.

이미지 탐색: 이름표 없는 사진 속 패턴 보기

이미지 데이터에서도 정답이 항상 준비되어 있지는 않다. 사진 앱에 수만 장의 이미지가 저장되어 있다고 해 보자. 어떤 사진에는 강아지가 있고, 어떤 사진에는 음식이 있으며, 어떤 사진에는 영수증이나 풍경이 있다. 하지만 모든 사진에 사람이 일일이 태그를 붙이는 일은 번거롭다.

비지도학습은 이미지의 색감, 형태, 질감, 구도 같은 특징을 바탕으로 비슷한 이미지를 가까이 모을 수 있다. 그러면 사용자는 "비슷한 사진 찾기", "중복 사진 정리", "스타일별 이미지 탐색" 같은 기능을 사용할 수 있다. 온라인 쇼핑몰이라면 비슷한 디자인의 옷을 묶어 보여 줄 수도 있고, 콘텐츠 플랫폼이라면 분위기가 비슷한 썸네일이나 영상을 찾는 데 활용할 수도 있다.

여기서도 핵심은 정답이 없다는 점이다. 모델이 "이 사진은 여행 사진이다"라고 정답을 맞히는 것이 아니라, 사진들 사이의 닮은 정도를 계산한다. 사람이 보기에 비슷한 사진들이 한데 모이면 그 결과는 유용해진다. 반대로 모델이 너무 엉뚱하게 묶는다면 특징을 다시 만들거나 방법을 바꿔야 한다.

비지도학습은 이렇게 데이터 탐색 도구로 자주 쓰인다. 이름표가 붙지 않은 데이터 더미 속에서 "여기 뭔가 비슷한 것들이 모여 있다"는 신호를 발견해 주기 때문이다.

비지도학습의 대표적인 두 가지 감각

비지도학습에는 여러 방법이 있지만, 처음에는 두 가지 감각을 잡으면 충분하다. 하나는 비슷한 것끼리 묶는 것이고, 다른 하나는 복잡한 데이터를 더 이해하기 쉬운 축으로 압축하는 것이다.

비슷한 것끼리 묶는 작업을 군집화라고 한다. 군집화는 데이터 안에서 자연스러운 그룹을 찾는다. 고객을 여러 유형으로 나누거나, 문서를 주제별로 묶거나, 비슷한 이미지를 모으는 작업이 여기에 속한다. 다음 장에서 다룰 K-means는 군집화의 대표적인 방법이다. 이름은 조금 낯설지만 아이디어는 단순하다. 데이터를 몇 개의 중심점 주변으로 모으면서 비슷한 데이터끼리 같은 그룹에 들어가도록 만드는 방식이다.

복잡한 데이터를 이해하기 쉬운 축으로 압축하는 작업은 차원 축소라고 부른다. 차원이란 데이터가 가진 특징의 개수라고 생각하면 된다. 고객 데이터에 나이, 구매 횟수, 평균 구매 금액, 접속 시간, 할인 쿠폰 사용률, 관심 카테고리 등 수십 개의 특징이 있다면, 이 데이터는 수십 개의 축을 가진 셈이다. 사람은 2차원 평면이나 3차원 공간은 어느 정도 상상할 수 있지만, 수십 차원의 공간은 직관적으로 보기 어렵다.

차원 축소는 이 복잡한 특징들을 중요한 방향 중심으로 줄여 준다. 마치 두꺼운 책의 내용을 몇 개의 핵심 주제로 요약하는 것과 비슷하다. 물론 요약하면 일부 정보는 사라진다. 하지만 중요한 구조가 잘 남아 있다면 데이터 전체를 이해하기 훨씬 쉬워진다. 뒤에서 다룰 PCA는 차원 축소의 대표적인 방법이다.

군집화가 "누가 누구와 비슷한가?"를 묻는다면, 차원 축소는 "이 복잡한 데이터를 어떤 방향으로 보면 잘 보이는가?"를 묻는다. 둘 다 라벨 없이 데이터 안의 구조를 찾는다는 점에서 비지도학습의 중요한 도구다.

정답률 대신 무엇을 봐야 할까

지도학습에서는 모델 평가가 비교적 분명하다. 회귀라면 예측값과 실제값의 차이를 계산할 수 있고, 분류라면 맞힌 개수와 틀린 개수를 셀 수 있다. 물론 정확도만으로 충분하지 않은 경우가 많다는 것도 앞에서 살펴봤지만, 적어도 비교할 정답은 있다.

비지도학습에서는 상황이 다르다. 정답 라벨이 없으므로 "정답률 92%" 같은 말을 쉽게 할 수 없다. 그래서 비지도학습 결과를 볼 때는 다른 질문을 던져야 한다.

  • 묶인 데이터들이 실제로 서로 비슷한가?

  • 그룹 사이의 차이가 해석 가능한가?

  • 이 결과를 의사결정이나 다음 모델링 단계에 활용할 수 있는가?

  • 다른 데이터나 다른 시점에서도 비슷한 구조가 유지되는가?

예를 들어 고객을 네 그룹으로 나눴다고 하자. 그런데 각 그룹의 평균 구매 금액, 방문 빈도, 관심 상품군이 거의 비슷하다면 그 구분은 별로 쓸모가 없다. 숫자상으로는 네 그룹이 생겼지만, 마케팅 전략을 다르게 세울 이유가 없기 때문이다. 반대로 그룹마다 행동 특성이 선명하고, 각 그룹에 다른 메시지를 보냈을 때 실제 반응 차이가 나타난다면 좋은 세분화라고 볼 수 있다.

문서 묶기도 마찬가지다. 모델이 문서를 열 개 그룹으로 나눴는데 사람이 읽어 보니 각 그룹의 주제가 뒤섞여 있다면 활용하기 어렵다. 반대로 한 그룹은 결제 오류, 다른 그룹은 배송 지연, 또 다른 그룹은 환불 요청처럼 의미가 분명하다면 좋은 결과다.

비지도학습의 평가는 숫자 하나로 끝나지 않는다. 모델이 만든 구조를 사람이 살펴보고, 업무 목적과 연결해 보고, 실제로 도움이 되는지 확인해야 한다. 그래서 비지도학습은 기술적인 모델링이면서 동시에 탐색과 해석의 과정이다.

라벨을 만들기 전, 데이터를 이해하는 방법

비지도학습은 지도학습과 경쟁하는 방법이 아니다. 오히려 지도학습을 더 잘하기 위한 준비 단계로 자주 쓰인다.

현실 프로젝트에서는 처음부터 깔끔한 라벨이 준비되어 있지 않은 경우가 많다. 고객 이탈 예측 모델을 만들고 싶지만 이탈의 정의가 애매할 수 있다. 30일 동안 접속하지 않으면 이탈일까, 90일 동안 구매하지 않으면 이탈일까? 문의 글 분류 모델을 만들고 싶지만 어떤 문의 유형이 있는지 아직 정리되지 않았을 수도 있다. 상품 추천 모델을 만들고 싶지만 고객 취향을 어떤 기준으로 나눠야 할지 모를 수도 있다.

이럴 때 비지도학습은 데이터를 먼저 읽는 역할을 한다. 고객 행동을 묶어 보면 예상하지 못한 고객군이 드러날 수 있다. 문서들을 묶어 보면 실제 문의 주제가 운영팀의 예상과 다르다는 사실을 알 수 있다. 상품 데이터를 살펴보면 카테고리 이름은 다르지만 실제로 함께 구매되는 상품들이 보일 수 있다.

이렇게 발견한 구조는 이후 지도학습에 여러 방식으로 도움을 준다. 군집 결과를 새로운 특징으로 추가할 수도 있고, 데이터 라벨링 기준을 세우는 데 사용할 수도 있으며, 모델을 그룹별로 나눠 학습할지 판단하는 근거가 될 수도 있다. 예를 들어 전체 고객을 하나의 이탈 예측 모델로 다루는 것보다, 고객 유형별로 다른 이탈 패턴을 고려하는 편이 더 나을 수 있다.

즉 비지도학습은 "정답이 없으니 어쩔 수 없이 쓰는 방법"이 아니다. 정답을 만들기 전에 데이터가 어떤 이야기를 하고 있는지 듣는 방법이다.

모델은 발견하고, 사람은 의미를 붙인다

비지도학습을 사용할 때 꼭 기억해야 할 점이 있다. 모델이 찾아낸 그룹이나 축이 곧바로 진실을 의미하지는 않는다. 모델은 주어진 특징과 방법에 따라 패턴을 찾는다. 어떤 특징을 넣었는지, 값을 어떻게 스케일링했는지, 몇 개의 그룹으로 나누도록 했는지에 따라 결과가 달라질 수 있다.

예를 들어 고객을 나이와 구매 금액만으로 묶으면 소비 규모 중심의 그룹이 나올 수 있다. 여기에 방문 시간대와 관심 카테고리를 추가하면 전혀 다른 그룹이 나올 수 있다. 둘 중 하나가 무조건 맞고 다른 하나가 틀린 것은 아니다. 질문이 달라지면 보이는 구조도 달라진다.

그래서 비지도학습에서는 "모델이 이렇게 말했으니 정답이다"라고 받아들이면 위험하다. 대신 "모델이 이런 관점을 제안했는데, 이 관점이 우리 문제에 도움이 되는가?"라고 물어야 한다. 모델은 낯선 지도 위에 연필로 선을 그어 준다. 그 선이 길인지, 경계인지, 우연한 낙서인지는 사람이 목적에 비추어 확인해야 한다.

이 점 때문에 비지도학습은 때로 더 창의적인 작업이 된다. 지도학습은 정해진 정답에 가까워지는 과정이지만, 비지도학습은 정답이 정해지기 전의 세계를 탐험한다. 데이터 속에서 아직 이름 붙지 않은 패턴을 발견하고, 그 패턴에 의미 있는 이름을 붙이고, 그 이름을 바탕으로 다음 행동을 설계한다.

비지도학습의 기본 흐름

비지도학습도 결국 머신러닝의 큰 흐름 안에 있다. 다만 "예측값과 실제값을 비교해 오차를 줄인다"는 지도학습의 구조가 그대로 적용되지는 않는다. 라벨이 없기 때문이다. 대신 데이터 사이의 거리, 밀도, 방향, 압축된 정보의 손실 같은 기준을 사용해 더 그럴듯한 구조를 찾는다.

처음에는 다음 흐름으로 이해하면 충분하다.

데이터를 준비한다. 고객 행동, 문서, 이미지, 상품 기록처럼 라벨이 없거나 부족한 데이터를 모은다.

특징을 만든다. 고객의 구매 횟수, 평균 금액, 방문 빈도처럼 비교 가능한 숫자 특징을 만들거나, 문서와 이미지를 모델이 다룰 수 있는 벡터 형태로 바꾼다. 벡터란 여러 숫자를 한 줄로 묶어 표현한 것이라고 생각하면 된다.

비슷함의 기준을 정한다. 어떤 데이터가 서로 가깝다고 볼 것인지 정해야 한다. 구매 패턴이 비슷한 고객을 가깝다고 볼 수도 있고, 자주 등장하는 단어가 비슷한 문서를 가깝다고 볼 수도 있다.

구조를 찾는다. 비슷한 것끼리 묶거나, 복잡한 특징을 중요한 축으로 줄이거나, 전체 흐름에서 유난히 튀는 데이터를 찾는다.

결과를 해석하고 활용한다. 그룹에 이름을 붙이고, 시각화해 보고, 실제 업무나 다음 모델링 단계에 도움이 되는지 확인한다.

이 흐름을 보면 비지도학습도 낯선 마법이 아니다. 다만 정답표를 보고 채점하는 대신, 데이터 안의 관계를 보고 구조를 정리하는 쪽에 가깝다.

정답이 없어서 더 넓어지는 문제들

정답이 없다는 것은 불편한 일처럼 보인다. 하지만 동시에 더 넓은 가능성을 연다. 세상에는 정답 라벨이 붙어 있지 않은 데이터가 훨씬 많다. 기업의 로그 데이터, 고객 행동, 검색 기록, 센서 데이터, 문서, 이미지, 음성, 상품 정보는 대부분 처음에는 이름표 없이 쌓인다. 이 데이터들을 모두 사람이 직접 라벨링한 뒤에야 사용할 수 있다면, 머신러닝의 활용 범위는 크게 줄어들 것이다.

비지도학습은 이 넓은 데이터의 세계로 들어가는 문이다. 아직 정답이 정리되지 않은 상태에서도, 우리는 데이터를 탐색하고, 비슷한 것들을 모으고, 중요한 방향을 찾고, 이상한 신호를 발견할 수 있다. 그 과정에서 새로운 질문이 생긴다. "왜 이 고객들은 따로 모였을까?", "왜 이 문서들은 같은 주제로 묶였을까?", "왜 이 상품들은 함께 등장할까?"

좋은 머신러닝 프로젝트는 좋은 질문에서 시작한다. 비지도학습은 그 질문을 만들어 내는 도구이기도 하다.

다음 장에서는 비슷한 것끼리 묶는 대표적인 방법인 군집화, 그중에서도 K-means를 살펴본다. 이제 모델은 정답을 맞히는 학생이 아니라, 흩어진 점들 사이에서 자연스러운 무리를 찾아내는 탐험가가 된다.

책 목록

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

전체 목차 보기

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

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

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

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

참여하기