한 때 온라인MD로 일하던 시절에는 서비스에서 제공하는 ranking 알고리즘이 간단한 업무인 줄 알았다.
그냥 최근 구매순으로 정렬하거나, 고객이 위시리스트에 담은 순으로 정렬하면 되지 않을까? 하고 생각했었다.
그러나 실제 복잡한 시장 상황에서 단순한 로직으로 정렬이 된다면, 긍정적이지는 않을 것이다.
신규 입점한 매장이나 등록된 상품은 계속 노출안될 것이고, 팔리는 상품만 계속 팔릴 것이다.
물론 서비스에서 정렬 시에 거짓말을 하라는 것은 아니다.
구매 순 정렬은 정말 최근 구매순으로 정렬을 보여주어야 할 것이고, 위시리스트 많은 순은 그대로 보여주어야 할 것이다.
이런 확실한 필터가 있는 경우가 아닌 추천순/인기순/혹은 기본순같이 두루뭉술한 정렬 기준을 바탕으로 상품들이 나열될 때가 중요하다.
처음에는 내 나름대로 여러 로직을 세워보고 바로 진행해보려 했으나, 생각해보니 장기적으로 매우 중요한 기능이며 해당 알고리즘 하나로 노출과 매출이 좌지우지되는 것은 누구보다 잘 알고 있다. 단순히 해당 상품의 매출뿐 아니라, 플랫폼에도 영향을 미치게 되므로 정렬 알고리즘 자체에 대해서 공부하고 그 다음에 회사 내의 데이터를 분석하여 어떻게 연산하면 좋을지 고민해려 한다.
* 물론 회사 내 데이터와 실질적인 알고리즘은 공개할 수 없지만, 어떻게 공부했고, 어떤 자료들이 있는지 정리하고 공유하려 한다.
1. 유저들을 질리게 하지 말자
물론 인기순이고 기본순이긴 하지만, 계속해서 같은 상품이 상단에 노출되면 유저는 질릴 수 밖에 없다. 기준에 맞는 리스트를 보여주되, 피드가 고정되지 않고 어느정도 그 시기에 따라 변하는 지표를 반영해야 할 것이다.
2. 시의 적절한 상품을 노출해주자
가령 겨울에서 봄으로 넘어갈때 커머스에서 인기순 상품을 보여준다 치면, 실질적으로 지표만 따지면 그래도 겨울 옷이 봄옷보다 많이 팔렷을 것이고 상단에 노출될 것이다. 하지만, 유저가 원하는 것은 봄옷 쇼핑이고, 실제로 봄옷들을 많이 사기 시작할 것이다.
즉 시의적절하게 봄옷들 중에 인기 상품을 보여주어야 할 것이다.
2-1. 시간을 쪼개보자
정해진 시기에 해당하는 데이터만 반영하는 것이다. 가령 최근 3주 이렇게
2-2. aging value 도입하기
시간이 흐를수록 과거의 상품에 대한 score 값을 낮추는 것이다.
2-3. 노출되는 시점과 시기를 지정해주기(Reddit의 초기 정렬 알고리즘)
과거의 인기상품이라도 특정 시기가 지나면 노출이 되지 않도록 연산한다. 이런 경우 당연하게도 과거의 인기상품이 특정 시점이 지나면 절대 노출되지 않을 것이다.
2-4. 특정 기준 단위로 aging value 적용(Hacker News Ranking Algorithms)
2-2의 방식에 실제로 기준을 좀 더 추가하여 알고리즘을 짠 것.
이외에도 배달의 민족의 기본순 정렬에 대해서 검색하고 공부했다. 알고리즘 연산 코드자체를 보지는 못해도, 정렬 기준을 통해서 우리 내부적으로도 어떤 데이터를 가지고 scoring을 해야 하는 지를 참고할 수 있었다.
또한 어떠한 기준에 대해서 점수를 부과할 때는 단순히 선형대응을 주는 것은 위험하다.
물론 세부적인 것과 관련해서는 더 많은 공부가 필요한데, 대표적으로 sigmoid 함수를 활용하는 것도 좋다.
증가폭이 감소하는 중간지점을 그때그때 조절하고 찾아가야 하는것이 핵심인데,
예약 수락율은 10% 정도로 하고 예약수량같은 경우에는, 매장들 예약의 평균이나, 전체 예약의 평균이나 중간 지점을 잘 찾는 것이 좋을듯
해당 업무를 하고 다양한 공부를 하면서 데이터 엔지니어 쪽으로 백엔드 개발자 커리어의 방향을 세부적으로 다져보고자 결정했다.
회사 업무에 대한 걸 블로그에 공개할 수는 없으므로, 앞으로는 기존처럼 백엔드 개발자로서, 그리고 특히나 데이터 엔지니어링에 대해서 공부한 바를 정리해서 올리려 함!
Reference
'Data' 카테고리의 다른 글
크롤링/스크래핑 - Python/BeautifulSoup&Selenium (0) | 2021.03.23 |
---|---|
[Practice] 이미지 처리_gray scale & 해상도 향상 (0) | 2020.12.25 |
[Practice] 이미지 해상도 향상시키기 (3) | 2020.12.25 |
[Practice]흑백 사진의 일부만 컬러처리하기 (0) | 2020.12.25 |
[Practice]흑백사진 컬러처리 하기 (0) | 2020.12.25 |