아자르에서 AI 기반 추천 모델의 타겟 지표를 설정하는 방법 (feat. 아하 모멘트)
들어가며: 아자르와 추천 시스템
아자르의 사용자들은 스와이프를 통해 다른 사용자를 만나고 대화하는 비디오 챗에 많은 시간을 할애합니다. 그러다보니 얼마나 대화가 잘 통하는 사람을 많이 만나서 교류하는 것이 아자르의 사용자 경험을 개선하는데 중요한 역할을 하는데요, 하이퍼커넥트의 AI 조직도 이런 문제의식을 바탕으로 AI 기반의 대화 상대방 추천 시스템을 구축하고 제공하는 것을 중요한 목표로 삼고 있습니다. 아자르에서 대화 상대방을 추천하는 문제는 일반적인 추천 상황과 다르게 매치가 성사되어 풀에서 제외될 경우 다른 사용자의 추천 대상에서 제외된다는 특징이 있기 때문에 기술적으로도 많은 도전 요소가 있는 문제이기도 합니다.
AI 기반 추천 시스템은 주로 사용자의 행동을 예측하여 클릭률이나 시청 시간과 같은 1차 지표를 개선하는 데 초점을 맞춥니다. 동영상과 같은 콘텐츠를 추천하는 시스템에서는 클릭률 예측 모델을 개발하여 클릭률이 높은 콘텐츠나 오래 시청할 것으로 예상되는 콘텐츠를 추천하여 사용자들의 전체 시청 시간을 늘리는 것이 목표가 될 것이고, 아자르와 같이 상대방과 대화가 이루어지는 소셜 디스커버리 서비스의 경우 대화 시간이 길 것으로 예상되는 사용자 쌍을 우선적으로 연결해 전체적인 대화 시간을 늘리는 것이 목표가 될 것입니다.
위와 같이 1차 지표를 개선하는 것도 중요하지만, 서비스를 직접적으로 성장시키는 관점에서 궁극적으로 필요한 것은 유저 경험을 직접적으로 대표하는 리텐션(서비스를 사용한지 N일 뒤에 다시 서비스를 사용하기 위해 돌아오는 유저의 비율)이나 매출과 같은 최종 지표가 개선되는 것입니다. 1차 지표가 개선됨으로써 최종 지표가 곧바로 개선되면 좋겠지만, 서비스에 AI 추천 모델을 적용할 때 1차 지표만 개선되고 최종 지표가 개선되지 않는 안타까운 상황이 자주 일어나곤 합니다. 클릭률, 시청 시간, 대화 시간 등의 1차 지표가 개선되더라도 이것이 리텐션 또는 매출 증가로 이어지지 않는다면 AI 기술이 비즈니스의 성과에 유의미한 영향을 미쳤다고 볼 수 없습니다. 따라서, AI 추천 시스템을 설계할 때는 1차 지표의 개선을 넘어서 추천 시스템이 최종 지표에 어떻게 기여할 수 있는지 고려하는 것이 중요합니다.
여러 지표가 개선의 후보가 될 수 있지만, 아자르에서 AI를 통해 개선할 가장 중요한 최종 지표로는 리텐션을 선택했습니다. 리텐션이 증가한다는 건 사용자들이 서비스를 지속적으로 사용한다는 것을 의미하고 사용자들이 서비스에 오래 머물게 되면서 전체 활동 사용자의 수가 늘어나는 효과를 가져오게 됩니다. 아자르가 속해 있는 소셜 디스커버리 도메인의 특성상 더 많은 사용자들이 서비스를 이용하게 되면 사용자들 간의 상호작용이 증가하고 이는 서비스의 매력도를 높여 더 많은 신규 사용자이 서비스에 유입되는 긍정적인 사이클이 구축됩니다. 이러한 긍정적인 사이클은 서비스의 경쟁력을 강화하고 장기적으로는 매출 상승까지 이끌어낼 수 있습니다.
AI로 리텐션을 어떻게 올릴 수 있을까?
AI 기반 추천을 통해서 리텐션이 개선하는 정도를 직접 학습할 수 있다면 학습된 모델을 서비스에 직접 적용해 사용자의 리텐션을 증가시키는 전략을 생각해볼 수 있습니다. 하지만 추천 모델이 리텐션을 직접 학습하는 것은 생각보다 어려운 작업입니다.
첫 번째 이유는 리텐션이 특정 행동의 직접적인 결과로 결정되는 1차 지표가 아니기 때문입니다. 서비스에서 발생하는 행동이나 그런 행동의 직접적인 결과물인 1차 지표는 직접적인 목표로 설정하기 상대적으로 용이한 편입니다. 시청 시간을 최적화하기 위해서는 더 많이 볼 것 같은 방송을 예측해서 추천해줄 수 있고 클릭률을 최적화하기 위해서는 더 많이 클릭할 것 같은 방송을 예측해서 추천해주는 방향의 행동을 수행할 수 있고 그 결과를 평가하는 방식으로 접근할 수 있기 때문이죠. 하지만 리텐션은 행동의 직접적인 결과가 아닌 사용자가 행동을 통해 서비스에 대해 가지는 생각이나 만족도가 간접적으로 나타나는 개념이고 행동에서 리텐션으로 이어지는 기작을 명시적으로 나타내기 어렵기 때문에 데이터에서 직접적으로 추출해낼 수 없고 최적화의 목표로 정하기에도 어려움이 따릅니다.
두 번째 이유는 모델링의 어려움인데, 업리프트 모델링과 같은 인과추론 방법론을 적용한다 하더라도 학습 데이터 셋이 충분히 탐색되어있지 않으면 추천에 따른 리텐션 향상 효과를 정확하게 모델링하는 것이 까다롭다는 것입니다.
따라서 리텐션을 최적화하기 위해서는 사용자의 잔류 여부에 영향을 미칠 수 있으면서 최적화가 용이한 1차 지표들을 식별하고, 이런 지표들을 최적화하면서 간접적으로 리텐션을 개선하는 전략을 취해야 합니다. 예를 들면 사용자의 클릭 수가 늘어난다거나 대화 시간이 길어지면 사용자의 서비스에 대한 만족도가 개선된다는 점을 나타낸다는 사실을 기반으로 클릭 수 혹은 대화 시간을 최적화 대상 1차 지표로 채택할 수 있습니다. 이 전략이 유효하기 위해서는 데이터 분석을 통해 이러한 다양한 1차 지표들 중에서 어떤 지표가 리텐션 증가에 가장 효과적으로 영향을 미치는지를 정확히 파악하는 것이 무엇보다 중요합니다.
리텐션에 기여하는 1차 지표를 어떻게 찾을까?
분석을 수월하게 하기 위해 리텐션에 기여하는 1차 지표를 찾는 과정에서 전체 사용자를 신규 가입자와 기존 사용자로 구분하고 이 중 신규 가입자에게 적용될 수 있는 1차 지표를 먼저 찾기로 했습니다. 서비스를 이미 사용해본 경험이 있는 기존 사용자는 서비스에 대해 개인적인 맥락이나 생각을 가지고 있을 가능성이 높고 따라서 지금 특정한 행동이나 경험을 통해서 기존 사용자에 대한 정보를 파악하기 어렵기 때문입니다. 이미 서비스에 익숙하고 높은 충성도를 가지고 있는 경우 일시적으로 좋지 않은 경험을 하더라도 서비스를 계속 이용할 가능성이 높다는 것을 하나의 예시로 들 수 있겠습니다. 이러한 개인화된 다양성과 맥락이 기존 사용자의 리텐션을 분석하는 과정을 까다롭게 만들기 때문에 일차적으로 사전 지식의 영향이 적은 신규 가입자로 대상을 한정해 분석을 수행하기로 했습니다.
신규 사용자의 리텐션에 가장 직접적으로 기여하는 1차 지표를 찾는 과정은 “아하 모멘트”를 찾는 것으로 생각할 수 있습니다. 아하 모멘트는 “신규 사용자가 처음으로 서비스의 가치를 느끼게 하는 핵심 경험”으로 정의할 수 있는데, 신규 사용자가 아하 모멘트를 경험하면 서비스의 가치와 유용성을 인지하게 되어 서비스를 계속 사용할 가능성이 높아집니다. 반대로, 이런 아하 모멘트를 경험하지 못한 사용자는 서비스를 더 이상 사용하지 않고 이탈할 가능성이 높습니다. 따라서, 사용자가 서비스를 통해 이러한 결정적인 순간을 경험하도록 하는 것이 중요하며, 이는 사용자의 리텐션과 직접적인 인과관계가 있어야 합니다.
이 아하 모멘트는 보통 “가입 후 X일 이내에 Y 행동을 Z회 수행하는 것”과 같은 구체적인 문장의 형태로 표현됩니다. 예를 들면 널리 알려진 사례중 하나인 페이스북의 아하 모멘트는 “가입 후 7일 이내에 10명의 친구를 만드는 것”입니다. 많은 사람들이 당연히 친구가 많으면 서비스를 계속 이용할 것이라고 생각할 수 있지만 위와 같은 아하 모멘트는 이는 - 페이스북 내에 게시물 수, 좋아요 수, 메시지의 전송 및 수신 횟수와 같은 다른 중요한 1차 지표들이 있음에도 불구하고 - 친구 관계를 구축하는 활동이 앱의 핵심적인 경험과 연관이 깊고 신규 사용자 리텐션 증가에도 가장 결정적인 영향을 영향을 미치는 핵심 요소임을 강조합니다. 아자르에서도 이와 같은 방식으로 여러 1차 지표들 중 신규 사용자 리텐션 증가에 가장 결정적인 영향을 미치는 위 형태의 경험을 찾으려고 했습니다.
그럼 어떻게 아하 모멘트를 찾을 수 있을까?
우리는 위 문장에서 X=1일, 즉 가입후 첫 24시간 이내에 발생하는 사용자 행동에 초점을 맞췄습니다. 이 결정은 데이터 분석을 통해 D1 리텐션(가입 후 첫날 리텐션)이 개선되면 이후의 Dn 리텐션(가입 후 특정 일수의 리텐션)도 함께 향상될 수 있을 것이라는 가정에 기반을 두고 이루어졌습니다. 과거 데이터에서도 D1 리텐션과 Dn 리텐션 간에 일관된 패턴이 확인되었기 때문에 가입 첫날 사용자에게 긍정적인 경험을 제공하는 것이 앱에 대한 장기적인 사용으로 이어질 것이라고 판단했습니다.
아하 모멘트를 발견하기 위해서는 우선 서비스에서 사용자가 가치를 느낄 수 있는 모든 행동, 즉 리텐션에 긍정적 영향을 줄 수 있는 1차 지표들을 식별해야 합니다. 이 과정에서, 사용자의 다양한 행동(Y)과 이를 수행하는 빈도(Z)를 조정해 가며 여러 아하 모멘트 후보들을 생성합니다. 이렇게 생성된 아하 모멘트 후보군 중에서 리텐션을 가장 잘 설명하는 특정 Y와 Z 조합을 찾는 것이 본 작업의 핵심 목표입니다. 각 아하 모멘트 후보군을 정량적으로 평가하기 위해 이진 분류기의 성능을 평가할 때 자주 사용되는 PR(Precision-Recall) 커브를 도출하는 과정의 아이디어를 차용했습니다. PR 커브는 이진 분류기(binary classifier)의 임계치를 바꿔가며 대응되는 정밀도와 재현율의 변화를 나타낸 곡선으로 본래 하나의 분류기의 성능 변화를 비교하기 위한 용도로 사용되지만 여러 분류기의 성능을 비교하는 목적으로도 거의 동일한 방식으로 사용할 수 있습니다.
아하 모멘트에 대해서도 비슷한 접근을 취할 수 있습니다. 아하 모멘트를 신규 사용자의 행동으로부터 잔류 여부를 예측하는 분류기로 간주하면, 주어진 아하 모멘트의 수치적인 조건을 바꿔가며 성능을 비교하는 것과 서로 다른 아하 모멘트들 사이의 성능을 상대적으로 비교하는 것 역시 PR 커브의 분석과 같은 방식으로 수행할 수 있습니다. 분류 모델의 성능을 나타내기 위해 (1) 모델이 예측한 값이 얼마나 정확한지 나타내는 정밀도와 (2) 얼마나 많은 사용자를 올바르게 분류했는지 나타내는 재현율의 두 가지 지표를 사용하고 둘 사이의 트레이드 오프를 검토하는 것과 유사하게, 아하 모멘트의 관점에서는 (1) 아하 모멘트를 경험한 사용자 중 얼마나 많은 비율이 잔류했는지 (2) 잔류한 사용자 중 얼마나 많은 비율이 아하 모멘트를 경험했는지, 이 두 가지 지표를 계산하고 이들을 비교할 수 있습니다.
아자르 데이터에 기반한 각 아하모멘트 후보군들의 PR 커브는 다음과 같은 형태로 나타났습니다. 행동의 유형(Y)이 같으면 같은 색상과 모양으로 표시했는데, 예를 들면 빨간색 점은 로그인이라는 활동에, 파란색 점은 1:1 비디오 챗이라는 활동, 초록색은 친구 관계 수립에 대응되는 것으로 간주할 수 있습니다.
위 PR 커브에서 오른쪽 상단에 있는 행동일 수록 리텐션을 잘 설명하는 좋은 아하 모멘트입니다. 왼쪽 하단의 행동들은 정밀도와 재현율이 낮기 때문에 좋은 아하 모멘트가 될 수 없습니다. 왼쪽 상단에 위치한 행동들은 재현율은 높지만 정밀도가 너무 낮기 때문에 좋은 아하 모멘트가 되기는 어렵습니다. 마찬가지로 오른쪽 하단의 행동들은 정밀도는 높지만 재현율이 낮기 때문에 아하 모멘트로서 좋은 후보군이 아닙니다. 이와 같은 트레이드 오프를 고려해 위 그림에서 나타내는 파레토 프론티어 상에서 하나의 점을 선택하고 이 점을 아하 모멘트로 간주하면 원하는 질문에 대한 답을 얻을 수 있을까요?
아쉽게도 그렇지는 않습니다. 우리의 목표는 단순히 리텐션을 잘 설명하는(상관관계가 강한) 1차 지표를 찾는 것을 넘어 특정 행동을 강화했을 때 리텐션이 개선되는(인과관계를 가지는) 1차 지표를 알아보는 것입니다. 정밀도와 재현율 분석은 발견된 1차 지표(행동 Y의 Z빈도 수행)와 리텐션 간의 상관관계를 확인하는 데 도움을 주었지만 이는 상관관계에 대한 증거는 될 수 있어도 인과관계에 대한 증거가 되지는 못합니다.
설령 나쁜 경험이라고 하더라도 서비스에서 사용자가 수행하는 대부분의 행동은 리텐션과 양의 상관관계를 가집니다. 계속적으로 좋은 추천을 받지 못해 추천 요청을 많이 하게 되는 사용자나 많은 악성 사용자를 만난 사용자라고 하더라도 리텐션이 높게 관측되는 상황이 종종 발생하는데, 이는 악성 사용자를 만나는 것이 리텐션에 좋은 영향을 주기 때문이 아니라 “서비스 내에서 활발하게 활동하는 정도”와 “리텐션”의 두 요인에 모두 영향을 주는 교란 변수(Confounder) 가 존재하기 때문입니다.
어떤 행동 A와 그 행동에 의한 결과로 추측되는 현상 B가 있을 때, 겉으로는 A가 원인이고 B가 그 결과인 것처럼 보이지만 사실은 A, B 모두에 영향을 미치는 다른 요인 C가 있어서 C가 양쪽에 미치는 영향이 마치 A와 B 사이의 관계가 있는 것처럼 보일 경우 여기에 영향을 주는 요인 C를 교란 변수라고 말합니다. 여름이 되어 날씨가 무더워지면 아이스크림 판매량도 늘어나고 물놀이하는 사람들이 많아지니 수영장에서 일어나는 사고의 빈도도 늘어날텐데 날씨라는 요인을 배제하고 아이스크림 판매량이 늘어나는 것과 수영장의 사고 비율 사이의 관계만을 관찰하는 것을 하나의 예시로 들 수 있겠는데요, 이 예시에서 볼 수 있듯이 관찰하고 있는 관계에 교란 변수들이 존재할 경우 이 변수의 존재를 인지하지 못한 채 관찰한 변수로만 추론을 시도한다면 “아이스크림 판매량이 늘어나니까 수영장에서 사고가 더 많이 발생하더라”와 같이 뜬금없는 결론이 도출되게 됩니다. 위 예시는 상대적으로 직관적이고 명확한 교란 변수가 있어서 결론이 이상하다는 점을 쉽게 알아챌 수 있었지만 더 복잡한 현실적인 문제에서는 교란 요인을 고려하지 못해 엉뚱한 결론이 나오는 경우를 생각보다 쉽게 볼 수 있으니 (그리고 사람은 주어진 결론에 대한 내러티브를 만드는 데 익숙하니) 주의해야 합니다.
우리의 분석 상황에서도 교란 변수의 영향을 배제할 수 없습니다. 하나의 변수로 콕 찝어서 설명할 수 없지만 서비스를 사용하는 사용자마다 서비스에 대한 관심 정도, 서비스에 대해 익숙한 정도 혹은 서비스를 활발하게 사용하고자 하는 의도와 같은 요인들이 있을 것이고 이런 요인들이 교란 변수로 작용해 서비스에서 활동하는 정도와 리텐션 양쪽에 영향을 끼칠 수 있습니다. 앞서 언급한 것과 같이 이런 교란 변수를 잘 고려하지 않으면 활동의 정도를 통해서 리텐션을 설명하려고 하는 시도가 인과적으로 잘못된 해석을 도출할 수 있으므로 주의해야 합니다.
이 문제를 해결하기 위한 한가지 방법은 교란 변수를 최대한 통제한 후에 데이터 분석을 수행하는 것입니다. 구체적으로는 국가, 성별, 앱 유입 경로 등 교란 변수가 될 수 있는 여러 기준들을 바탕으로 사용자들을 여러 세그먼트로 나눠 각 세그먼트 안에서는 교란 변수의 영향이 최대한 없도록 통제한 뒤 해당 세그먼트 내에서 정밀도-재현율 분석을 진행하는 방식입니다. 세그먼트별로 사용자를 분할해 분석하는 이 과정을 거쳐서 교란 변수가 통제된 것으로 간주할 수 있는 상황을 분석한 결과로도 앞선 분석과 비슷한 형태의 PR 커브의 형태를 구할 수 있었습니다. 하지만 이 결과도 인과관계에 가까운 그럴싸한 관계를 만들어줄 뿐 실제 인과관계를 증명하는 것은 아닙니다.
어떻게 인과관계를 가진 1차 지표를 찾을까?
인과관계를 명확하게 밝히기 위한 가장 효과적인 도구는 A/B 테스트와 같은 무작위 대조 실험(Randomized Controlled Test)입니다. SHAP 라이브러리와 같이 인과관계를 설명할 수 있는 도구들이 많이 있지만 이러한 도구들도 인과관계를 정확하게 밝혀내는 데는 한계가 있습니다. 우리의 상황에서 가장 확실하게 아하 모멘트의 인과관계를 규명하는 방법은 여러 아하 모멘트 후보군 중에서 하나를 선정한 뒤 실험군과 대조군을 설정하고 실험군을 대상으로 아하 모멘트를 경험하게 하도록 하는 조치를 취해 두 집단 사이의 리텐션 차이를 분석하는 것입니다.
그러나 모든 아하 모멘트 후보군에 대한 무작위 대조 실험을 실행하는 것은 시간과 비용 관계상 어렵기 때문에 실험 대상이 될 후보군을 보다 효과적으로 좁히는 방법이 필요합니다. 효과적인 방법을 고민한 끝에, 하나의 시계열이 다른 시계열을 예측할 수 있는지 여부로 실제 인과관계를 짐작한다는 Granger causality의 아이디어를 차용해 시간의 흐름에 따라 사용자 비율과 리텐션 추세를 시계열로 나타내어 비교하는 방법을 활용하기로 했습니다. 만약 두 추세가 서로 다르다면 해당 경험이 인과관계를 가질 가능성이 낮다고 판단해 후보군에서 제외할 수 있을 것입니다. 반대로 두 시계열의 추세가 비슷하다고 해서 인과관계를 가지는 것이 보장되는 것은 아니지만 적어도 실험 대상이 될 아하 모멘트 후보군을 좁히는 목적으로는 이 정도의 비교로 충분하다고 판단했습니다.
앞서 언급한 국가, 성별, 앱 유입 경로 등 여러 가지 기준에 따라 사용자를 세그먼트로 나누고, 각 세그먼트에 대해서 위 분석을 수행해 세그먼트 내에서 아하 모멘트를 경험한 사용자 비율이 신규 사용자 리텐션과 같은 추이로 가는지를 확인했습니다. 이 접근 방식을 통해 아자르에서 가능한 아하 모멘트 후보군을 성공적으로 좁혀나갈 수 있었고 가장 유의미해보이는 아하 모멘트의 후보 하나를 선정할 수 있었습니다. 다음으로는 선정된 아하 모멘트의 후보를 실험을 위한 초기 가설로 세우고 여기에 맞는 AI 기반 추천 모델의 목적 함수를 정의하고 구축해 A/B 테스트를 실시했습니다. 실험 결과 해당 AI 모델을 활용해 신규 사용자들에게 이 1차 지표 - 가입 첫날 행동 Y를 Z회 이상 수행 혹은 경험 - 를 부스팅하였을 때 리텐션이 꽤 큰 폭으로 상승하는 현상을 관찰할 수 있었습니다.
기존 사용자 리텐션은 어떻게 올릴까?
활성 사용자 수를 증가시키기 위해서는 신규 사용자의 리텐션 개선만으로는 충분하지 않습니다. AI기반 추천 모델로 기존 사용자의 리텐션도 함께 향상시켜야 활성 사용자 수를 증가시킬 수 있는데요. 앞서 언급했듯 기존 사용자의 리텐션을 높이기 위한 1차 지표를 분석하는 작업은 복잡하고 어려운 과제입니다. 여러 도구를 사용하여 인과관계를 파악하고 기존 사용자의 리텐션에 영향을 미치는 1차 지표 후보군을 식별할 수는 있지만, 이러한 접근 방식은 시간이 많이 소요될 수 있습니다.
그래서 우리는 신규 사용자의 리텐션에 효과적인 것으로 밝혀진 1차 지표가 기존 사용자에게도 리텐션을 향상시킬 수 있다는 가설을 세웠습니다. 이를 검증하기 위해 신규 사용자의 리텐션을 경험할 때 썼던 추천 모델과 같은 목적함수로 AI 기반 추천 모델을 만들고 A/B 테스트를 진행했습니다. A/B 테스트 결과 신규 사용자의 리텐션을 개선하는 데 기여한 1차 지표가 기존 사용자의 리텐션 향상에도 긍정적인 영향을 미칠 수 있음을 확인할 수 있었습니다. 아래 그래프는 기존 사용자군에 대해 A/B 테스트를 진행하면서 아하 모멘트를 강화하는 실험군을 확장함에 따라 어떻게 기존 사용자의 리텐션이 변화하는지 보여줍니다. 이러한 접근을 통해 우리는 리텐션을 지속적으로 향상시킬 수 있었습니다.
마치며…
지금까지 아자르에서 AI기반 추천 모델의 목적함수를 선택한 방법과 실제로 리텐션까지 올린 여정을 소개해드렸습니다. 아하모멘트 프레임워크를 사용해 신규 유저의 리텐션을 올리기 위한 1차 지표 후보군을 찾고 추세 분석과 A/B 테스트를 통해 실제 인과관계가 있는지 검증하는 작업을 수행했습니다. 기존 유저에 대해서도 신규 유저와 동일한 1차 지표가 리텐션에 영향을 줄 것이라는 가설을 세웠고 A/B 테스트를 통해 기존 유저에 대해서도 신규 유저와 같은 1차 지표가 리텐션과 인과관계를 갖는다는 것을 확인했습니다. 다음 포스트에서는 하이퍼커넥트가 구체적으로 어떤 모델을 어떤 시스템으로 배포해서 1차 지표를 올릴 수 있었는지에 대해서 공유드려보고자 합니다.
Read more
-
아자르에서는 어떤 추천 모델을 사용하고 있을까?
아자르의 1:1 비디오 채팅에 사용되는 추천 모델 CUPID를 소개합니다. -
협업 필터링을 넘어서: 하이퍼커넥트 AI의 추천 모델링
하이퍼커넥트 AI 조직이 추천 시스템에 협업 필터링(collaborative filtering)을 넘어 어떤 모델링을 적용하고 있는지 소개합니다. -
Behind the Paper: 하이퍼커넥트 AI 조직이 제품에 기여하면서 연구하는 법
하이퍼커넥트 AI 조직이 어떻게 연구를 통해 제품에 기여하고 논문까지 출판하는지 소개합니다. -
비용 효율적인 Click-Through Rate Prediction 모델로 하쿠나 라이브 추천시스템 구축하기
하쿠나 라이브에 들어가는 추천시스템을 소개합니다.