카테고리 잘 활용해보기: 중고거래 검색 랭킹 개선

Jukyoung LEE
당근 테크 블로그
7 min readJan 24, 2022

다양한 서비스에서 보유하고 있는 상품과 정보를 분류하고 사용자에게 좋은 탐색 기능을 제공하기 위해 카테고리를 사용하고 있어요. 이런 카테고리는 검색 랭킹을 고도화하는데도 많이 활용하고 있어요. 서비스 별로 카테고리 설계와 쓰임이 다르기 때문에 검색에 활용하는 방법도 다양해요. 오늘은 당근마켓에서 중고거래에 검색을 개선하기 위해서 카테고리를 어떻게 활용했는지 이야기해 볼게요.

시스템 개발은 든든한 당근마켓 개발자 hy(이상운)가 많은 도움을 주었어요. 개발 과정에 대한 자세한 내용은 조만간 블로그로 공유해 줄 예정이에요.

옷장을 찾고 싶어요!

옷장으로 검색하면 결과에 옷을 판매하는 글들이 많이 나와 불편하다는 문의가 들어온 적이 있어요. 당시 검색 결과를 보면 이사 준비를 하거나 옷장을 정리할 때 더 이상 입지 않는 옷을 이웃과 거래하기 위해 작성한 글이 많았어요.

당시에는 검색어가 판매글에 포함되는 빈도를 랭킹에 반영 했기 때문에 옷장정리가 포함된 의류와 실제 옷장을 판매하는 글을 구분하기 어려웠어요. 게다가 부피가 크고 가격 나가는 옷장 보다는 의류를 거래하고 싶은 글들이 비교적 많아 검색 결과에도 더 많이 보이는 상황이었어요.

카테고리를 활용하기

사람은 옷과 옷장 판매하는 글을 구분할 수 있지만 키워드의 포함 여부로는 이 둘을 구분하기 어려워요. 키워드 이외 새로운 정보가 필요했고 당근마켓 검색팀은 해당 문제를 해결하기 위해 카테고리를 활용했어요.

대부분 의류 판매글들은 여성의류와 남성패션/잡화 카테고리로 등록이 되어 있고 옷장은 가구/인테리어로 등록이 되어 있어요. 만약 옷장이라는 검색어가 가구/인테리어 카테고리와 연관성이 높다는 정보가 있다면 해당 카테고리 판매글은 검색 결과 상위에 노출시켜줄 수 있어요.

키워드와 카테고리별 중요도

그렇다면 어떻게 검색어별로 연관있는 카테고리를 알 수 있을까요? 간단한 방법으로는 서비스에 많이 검색되는 검색어들을 사람이 직접 검토하고 카테고리를 지정해주는 방법이 있어요. 실제로 처음으로 검색 서비스를 개발하는 단계에는 이렇게 진행할 수 있어요. 하지만 당근마켓에는 이미 많은 사용자로 부터 얻은 데이터가 있기 때문에 이를 활용하기로 했어요.

데이터를 분석해보면 옷장을 검색한 이후에 클릭한 판매글의 81.1%가 가구/인테리어 카테고리였어요. 이런 식으로 검색 이후에 클릭한 카테고리의 비율을 활용하면 검색어별 연관된 카테고리를 예측할 수 있다고 생각했어요.

검색어의 형태를 일치시켜 주기 위해 간단한 정규화와 신뢰성 있는 결과만을 사용하기 위해 몇가지 규칙을 적용하고 클릭률 기반으로 키워드별로 카테고리 연관성을 계산했어요. 옷장 이외 다양한 검색어들에도 사람이 이해하기에 무리가 되지 않는 결과가 나왔어요.

카테고리 클릭률을 랭킹 결과에 노출되는 판매글 점수 계산에 반영했어요. 많은 검색어에 검색 품질이 좋아졌고 이전 모델 대비 검색후 클릭률도 상승했어요. 특히 옷장을 찾는 검색은 이전 대비 클릭률이 2배 이상 증가했어요.

남자 가방이 보이지 않아요!

카테고리 클릭률을 반영하여 검색품질이 많이 좋아졌지만 운영 도중 한 가지 문제점을 발견했어요. 사례로 가방을 검색하면 여성 가방만 보인다는 문의가 들어왔어요. 랭킹 모델의 카테고리 가중치 비중이 높았기 때문에 연관도가 가장 높은 여성잡화 판매글들이 상위에 노출이 되고 다음으로 연관성이 높은 남성패션/잡화 순서로 노출이 되었어요. 이런 식으로 일부 검색어에서 특정 카테고리 판매글이 검색 결과를 독점하는 현상을 발견했어요.

여성 사용자가 비교적 가방 거래를 활발하게 하고 있어 여성 잡화 카테고리의 비율이 높았던 거 같아요. 하지만 여성용, 남성용 가방의 기준은 모호하고 여성 취향에 가방만 노출이 된다면 서비스를 이용하는데 불편함을 느낄 거예요. 이런 문제를 해결하기 클릭 비율이 가장 높은 카테고리와 이외 관련된 카테고리를 분류하는 모델을 만들어 부스팅할 카테고리를 추가했어요. 저희는 이 모델을 카테고리 확장 모델이라고 불러요.

카테고리 확장 모델은 다양한 특성 활용해 학습을 하는데요. 그중에 두 카테고리가 얼마나 빈번하게 확장이 되었는지를 모델에 반영한 결과가 가장 큰 효과를 보였어요. 쉬운 예시로 여성잡화와 남성패션/잡화 카테고리는 가방, 지갑, 모자 같은 검색어에서 빈번하게 확장이 되는 카테고리 쌍이에요.

모델이 학습한 카테고리 간의 연관도를 히트맵으로 표현해 봤어요. 칸이 파란색일 수 록 두 카테고리는 서로 연관성이 높다는 의미를 가져요. 히트맵을 보면 몇몇 연관이 높은 카테고리 쌍이 존재한다는 것을 알 수 있어요. 카테고리 확장 모델을 반영한 결과 검색 클릭률 지표에 상승이 있었고 관련된 사용자 CS 문의가 눈에 띄게 줄어 들었어요.

수동 대응 프로세스와 학습 자동화

성능이 좋은 모델을 만들 수 있지만 완벽한 모델을 만들기는 어렵다고 생각해요. 때문에 모델이 의도대로 작동하지 못한다는 걸 인지하고 이를 대응할 수 있는 프로세스가 준비되어 있어야 해요. 이런 면에서 카테고리를 검색 랭킹에 활용하는 건 문제가 되는 검색어 정보만 변경하면 되기 때문에 즉시 대응하기 편하다는 장점이 있어요. 당근마켓 검색팀은 아래와 같은 운영 페이지를 통해 모델로 인한 저품질 검색어에 대해 대응하고 있어요

운영 페이지를 통해 수집한 데이터는 학습 데이터로 활용할 수가 있는데요. 주기적으로 학습 데이터로 모델을 학습시키고 서비스에 반영하는 과정을 자동화하여 운영하고 있어요. 어느 순간 학습이 잘못될 때를 대비해 검색어 수, 테스트 점수와 같은 수치를 체크하여 이상이 생기면 배포를 중지하고 알림을 보내고 있어요.

카테고리 모델 학습 프로세스
카테고리 모델 학습 알림

아직 도전해야 하는 일들이 많이 남아 있어요

카테고리를 랭킹에 활용해 검색품질을 좋아졌지만 아직 개선해야 하는 부분들이 많이 남아 있어요. 현재 당근마켓 중고거래에서 아이폰을 검색하면 실제 아이폰 이외에 카드지갑, 케이스 같은 액세서리도 결과에 함께 나오고 있어요. 디지털 기기, 가구/인테리어같이 비교적 카테고리가 크게 설계가 되어 카테고리 만으로는 분류하기 어려운 상황이에요.

카테고리 이외에도 보다 검색 랭킹에 활용할 수 있는 다양한 특성을 찾으려 노력하고 있어요. 당근마켓 검색팀과 함께 다양한 문제에 도전하고 싶으신 분은 언제든 아래 이메일로 연락을 주시거나 당근마켓 채용 사이트를 찾아주세요.

감사합니다

aiden@daangn.com
https://team.daangn.com/jobs/

--

--