적은 모수에 NPS를 사용하려면 어떻게 해야 할까?
➡️ 최근에 회사에서 NPS 지표를 사용하자는 얘기가 나와서 예전에 경험했던 비슷한 사례가 생각났고 잘 정리해서 공유하기 위해 글을 쓰기로 결심
* 1년 전에 했던 프로젝트라서 다시 보니까 부족한 부분이 많이 있읍니다. 가벼운 참고정도로만 봐주세요~
➡️ 빠르게 다음 피쳐들의 pmf를 검증하기 위해, 성공지표로 NPS를 사용해야 했지만, 대상자 모수가 매우 적은 상황.
➡️ NPS의 결과가 통계적으로 유의하려면 최소 250명이 필요함
➡️ 새로 추가할 피쳐의 유효성을 검증하고 싶지만, 지표를 수집할 수 있는 모수가 너무 적어서 수집한 지표의 결과를 신뢰하기 어려움
생각의 흐름:
1️⃣ "10명의 대상자 중 6명이 열광하면, 이 피쳐는 PMF를 찾은 건가?"
2️⃣ "반대로 6명이 싫어하면 유효하지 않은 피쳐로 판단하면 되는 건가?"
3️⃣ "근데, 애초에 10명의 결과를 100명, 1,000명, 100,000명에게 확대해도 되는 건가?"
➡️ 적은 모수의 결과의 신뢰도를 높이기 위해서는 어떻게 해야 할까..?
결과의 신뢰도를 높일 수 있는 가중치 요소가 있다면, 적은 모수의 결과도 신뢰할 수 있을 것이다.
쉽게 말해, 만족도 조사에서 생길 수 있는 어뷰징(abusing)을 사전에 방지하는 것이 목표입니다. 이 상황에서 크리티컬 한 어뷰징은 다음과 같은데요,
대상자가 실제로 만족하지 않지만, 인터뷰라는 콘텍스트 때문에 사실을 말하지 못하고, 좋다고 거짓으로 응답하는 케이스
이를 위해 두 가지 방법을 고안했습니다.
1️⃣ 가중치를 계산할 수 있는 요소로 raw value인 nps를 한 번 더 정제하기
2️⃣ 교차 검증을 통해 신뢰도 낮은 응답을 정제하기
항상 말은 복잡하지만, 컨셉은 매우 매우 단순합니다..!
핵심은 거짓으로 높은 점수로 응답했을 때 점수에 가중치를 곱해서 전체 점수들을 nomalize 하는 것인데요,
자세한 예시는 밑에서 더욱 상세히 얘기해 보겠습니다.
앞에서 말한 것처럼 이 정제 작업을 위해선, 거짓 응답을 구별해야 해요.
하지만 현실적으로 무당도 아니고, 명확하게 알 수 있는 방법은 거의 없죠. 그래서 저는 다음과 같은 가설을 생각했습니다.
*️⃣ NPS상 9-10점을 줄 정도로 피쳐에 만족했다면, 이 피쳐에 평균 이상의 관심도를 가지고 있을 것이다.
*️⃣ 그렇기 때문에, 피쳐에 관심이 없는데 9-10점을 줬다면, 거짓으로 응답했을 확률이 높을 것이다.
*️⃣ 9-10점을 줄 정도로 정말 이 피쳐에 만족했다면, N일 뒤에 다시 물어봐도 비슷한 만족도를 대답할 것이다.
꽤 그럴듯하죠?
여기까지 생각해 놓고, 자연스럽게 “그럼 피쳐에 대한 관심도를 어떻게 측정하지? “라는 생각이 들었고,
“의식하지 않고 순수하게 서비스를 사용하면서 마주하는 point를을 분석하면
정량적인 경향을 파악할 수 있지 않을까? “라는 생각과 함께 아래와 같은 가설을 세웠습니다.
*️⃣ 이 피쳐에 관심이 많은 유저는, 더 많이 눌러보고 자주 확인할 것이다.
*️⃣ 그렇지 않더라도 최소한, 다른 대상자와 비교했을 때, 유의미한 정량적 차이를 확인할 수 있을 것이다.
사실 지금 돌이켜보면, 가설보단 논리 없는 가정에 가깝게 느껴지지만, 뭐 옛날 얘기니깐 있는 그대로 적어보겠습니다.
아무튼, NPS를 정제하기 위해 위 가설을 고려해서 다음과 같은 과정들로 진행했습니다.
1️⃣ 프로토타입을 제작하고, 히트맵 툴을 심어 대상자에게 발송
2️⃣ 대상자가 서비스를 자유롭게 사용하도록 요청
3️⃣ 3일 뒤, NPS 응답 요청
4️⃣ 영상 분석(히트맵)을 통한, 가중치 계산
5️⃣ 7일 뒤, NPS 다시 응답 요청 (교차 검증)
컨셉을 간단히 정리하면 아래와 같고, 오늘은 4번에 대해서만 간단히 소개해볼게요.
이제 이 정제 작업의 핵심인 가중치 계산인데요, 사실 초등학교 때 수학과 이별한 저에게는 딱 여기까지만 머리로 생각할 수 있고, 이를 숫자로 구체화하는 모듈이 없기 때문에, chatGPT에게 부탁했습니다.
수학시간은 아니니까 자세한 과정은 생략하고, 몇 시간 동안 끈질긴 대화 끝에 다음과 같은 식을 정리했습니다.
NormalizedValue:
((Key Action Value - Value의 최솟값) / (모든 Value의 최댓값 - Value의 최솟값)) * (1 - 0.9) + 0.9
간단히 말하자면, 영상분석을 통해 유저의 행동들을 수치화하고, 수치화된 Key Action Value(이하 KAV로 생략)를 NPS 응답값에 곱해서 기존 NPS값을 정제하는 컨셉입니다.
참고로, 저희가 고려하는 유일한 어뷰징 케이스는 “안 좋은데 좋다고 응답할 때”이기 때문에, 이 값을 곱했을 때는 응답값이 낮아질 수밖에 없는 방식이죠.
사실 지금 생각해 보면 진짜 별 거 아닌데, 당시에는 제가 실무 경험이 거의 전무하던 상태여서, “무언가를 만들었구나!”라는 바보 같은 생각에 저렇게 이름까지 명명했던 모습이 재밌어서 그냥 가지고 왔습니다.
“아는 만큼 보인다.”
아무튼 당시에 이러한 방식으로 NPS값을 정제했고 이후에는, 일주일 뒤에 다시 NPS응답을 요청해서 일주일 전과 비슷한 점수가 나오는지에 대해서도 교차검증하며 거짓 응답 어뷰징을 줄여보려고 했던 시도를 했었네요.
지금 생각해 보면 회의적인 제 성격이 이럴 때 빛을 발하는 것 같네요 ㅎㅎ
그래서 “이 방법이 유효했나요?”라고 물어보신다면..
“유효하다고 믿고 있다”라고 대답하고 싶어요. 사실 잘 모르겠어요.
아시는 분들은 아시겠지만, 이 방법에서 nomalized 된 value는 사실 입맛에 따라 설정할 수 있다는 한계가 있기 때문이에요.
하지만, 그럼에도 불구하고 저는 해당 프로젝트에서 유효함을 확인할 수 있었고, 짧은 시간 안에 의사결정을 해야 하는 입장에서 결과론적으로 유효하지 않더라도 믿음이 필요한 순간에 도움이 될 수 있다고 생각합니다.
명심해야 할 것은 NPS는 분명 한계를 갖고 있는 방법론이라고 생각해요. 산정 방식으로 인한 고질적인 문제점도 있고, 개인적으로 의사결정의 1순위가 될 정도로 뾰족한 지표라고 생각하지는 않습니다.
오히려 N주기로 전반적인 경향을 파악하는 관점에서 더 유효하지 않을까?라는.. 사견을.. 남기면서 조용히 퇴장합니다.
어휴 간단히 쓰려고 했는데 또 주절주절 해버렸네요, 추가적으로 NPS를 도입할 의사가 있거나 도입 예정이신 분들에게 작게나마 도움이 되었으면 좋겠네요.
그럼 안녕~!