RFM 분석

RFM Analysis

방법

고객을 마지막 구매 시점과 구매 빈도와 쓴 금액 세 축으로 점수 내어 집단으로 나누는 분석입니다.

등장 배경

고객 명단이 만 명인데 그 만 명을 한 덩어리로 다루던 시절이 있었습니다. 메일을 보낼 때도 만 명에게 같은 문구를 보내고, 매출을 볼 때도 만 명을 합쳐 평균을 냅니다. 그러면 평균 구매 금액 4만 원이라는 숫자가 나오는데, 그 안에는 지난주에 50만 원을 쓴 사람과 2년 전에 한 번 3만 원을 쓰고 사라진 사람이 같은 무게로 들어 있습니다.

나누려고 해도 기준이 마땅치 않았습니다. 나이나 지역으로 나누는 것은 데이터가 있어도 구매 행동과 잘 이어지지 않고, 설문으로 물어 나누려면 답한 사람만 대상이 됩니다. 어느 기준으로 나눠야 지금 무엇을 할지가 정해지는지가 문제였습니다.

RFM 분석은 이 기준을 구매 기록 안에서 찾습니다. 주문 데이터만 있으면 세 값이 이미 들어 있습니다. 마지막으로 산 날짜, 산 횟수, 쓴 금액입니다. 세 값을 각각 점수로 바꿔 조합하면 같은 만 명이 성격이 다른 몇 개 집단으로 갈리고, 집단마다 할 일이 달라집니다. 추가로 물어볼 것도 없고 새로 쌓을 데이터도 없다는 점이 이 방법을 오래 쓰이게 만들었습니다.

사용 절차

세 값을 점수로 바꿔 조합하는 것이 전부입니다. 다섯 단계로 진행합니다.

  1. 기간을 정합니다. 최근 12개월이 흔하고, 구매 주기가 긴 제품은 24개월로 잡습니다. 기간이 짧으면 빈도 값이 다 1이 되어 축 하나가 무의미해집니다.
  2. 고객마다 세 값을 뽑습니다. 마지막 구매일로부터 지난 날수, 기간 안의 구매 횟수, 기간 안의 총 결제 금액입니다. 금액은 합계로 쓰고 평균으로 바꾸지 않습니다. 평균으로 바꾸면 빈도 축과 겹칩니다.
  3. 각 값을 5점 척도로 바꿉니다. 절대 기준을 세우지 않고 전체를 5등분해 상위 20퍼센트에 5점, 다음 20퍼센트에 4점을 주는 방식이 보통입니다. 절대 기준으로 하면 업종과 시기에 따라 점수 분포가 한쪽으로 쏠립니다. 마지막 구매일은 짧을수록 높은 점수라는 점만 방향이 반대입니다.
  4. 세 점수를 붙여 집단을 만듭니다. 555 부터 111 까지 125가지가 나오는데 이대로 쓰면 다룰 수 없으니, 대개 여섯에서 여덟 개로 묶습니다. 세 값이 다 높은 우수 고객, 금액과 빈도는 높은데 최근성이 낮은 이탈 위험 고객, 최근에 왔지만 아직 한 번만 산 신규 고객이 실무에서 가장 많이 쓰는 묶음입니다.
  5. 집단마다 할 일을 붙입니다. 여기까지 하지 않으면 분석이 표로만 남습니다. 이탈 위험 집단에는 돌아올 이유를 보내고, 우수 고객에게는 할인 대신 먼저 보여 주는 혜택을 붙이고, 신규에게는 두 번째 구매로 넘어가게 만드는 것을 붙입니다. 집단마다 무엇을 보낼지 적어 두면 다음 달에 같은 표를 다시 계산할 이유가 생깁니다.

적합한 상황과 한계

맞는 조건은 분명합니다. 한 고객이 여러 번 사는 제품이어야 합니다. 쇼핑몰, 구독 제품의 추가 구매, 반복 주문이 있는 사업에 맞습니다. 평생 한 번 사는 제품에서는 빈도 축이 전부 1이고 최근성이 곧 가입일이라 세 축이 하나로 무너집니다.

주문 건수가 충분해야 합니다. 고객이 300명이면 5등분한 칸에 60명씩 들어가고, 여섯 집단으로 묶으면 한 집단에 50명입니다. 이 규모에서는 집단 사이의 차이가 우연과 구별되지 않습니다. 고객 수천 명 이상에서 쓰는 방법입니다. 규모가 작으면 세 축 대신 상위 고객 목록을 손으로 훑는 편이 빠릅니다.

행동만 보고 이유를 말하지 않는다는 점이 가장 큰 한계입니다. 이탈 위험 집단이 왜 떠났는지는 이 표에 없습니다. 가격이 문제인지 경쟁 제품으로 갔는지 필요가 사라진 것인지를 알려면 따로 물어봐야 하고, 단계별로 어디서 빠져나가는지 보는 퍼널 분석이나 집단을 나눠 차이를 비교하는 세그먼트 분석을 함께 씁니다.

시점이 고정된 사진이라는 점도 함께 봅니다. 이 표는 계산한 날짜의 상태이고, 한 달 뒤에 다시 계산하면 사람들이 집단을 옮겨 다닙니다. 돌아오는 정도를 시간축으로 보는 리텐션 분석이 흐름을 보는 쪽이라면 이 방법은 지금의 단면을 보는 쪽입니다. 대개 월 단위로 다시 계산해 집단 이동을 함께 봅니다.

실무 용례

"이탈 위험 집단이 1,200명이에요. 여기에만 먼저 보내죠."

만 명 전체가 아니라 한 집단을 골랐다는 말입니다.

"빈도 점수가 다 1이에요. 기간을 24개월로 늘려야 합니다."

축 하나가 작동하지 않는다는 지적입니다.

"우수 고객에게 할인을 보내지 마세요. 어차피 살 사람입니다."

집단마다 붙일 행동이 달라야 한다는 뜻입니다.

페이지덱은 기업 고객의 추가 좌석 구매에 이 방법을 씁니다. 현우가 12개월 기준으로 세 점수를 계산해 여섯 집단으로 묶었고, 그중 최근성만 낮은 집단 1,200곳을 수아가 이어받았습니다.

첫 결과는 예상과 달랐습니다. 그 집단에 연락해 보니 절반이 좌석을 더 늘릴 계획이 없다고 답했고, 남은 절반은 담당자가 바뀌어 제품을 모르는 상태였습니다. 표가 알려 준 것은 어디를 볼지였고 이유는 통화에서 나왔습니다.

흔한 오해

세 점수를 더해 하나의 등급으로 만드는 경우가 가장 많습니다. 555 는 15점, 111 은 3점으로 계산해 고객을 한 줄로 세우면 다루기 쉬워 보입니다. 그런데 이렇게 하면 서로 다른 상태가 같은 점수로 묶입니다. 최근성 5에 금액 1인 사람과 최근성 1에 금액 5인 사람이 둘 다 9점 근처에 놓이는데, 앞쪽은 이제 막 들어온 신규이고 뒤쪽은 큰 고객이 떠나는 중입니다. 할 일이 정반대인 두 집단이 한 칸에 들어가고, 그 칸에 보낸 메시지는 양쪽 모두에게 어긋납니다. 세 축은 더하지 않고 조합으로 봅니다.

한 번 나눠 두면 유지된다고 보는 시각도 자주 나옵니다. 집단 이름이 붙으면 그 고객의 성격처럼 느껴지고, 도구에 저장해 두면 계속 그 이름으로 불립니다. 하지만 이 값은 계산한 날짜의 상태이고 특히 최근성 점수는 시간이 지나기만 해도 떨어집니다. 3월에 우수 고객이던 회사가 아무것도 하지 않아도 6월에는 이탈 위험으로 내려앉습니다. 반년 전 목록으로 메일을 보낸 팀은 이미 떠난 고객에게 감사 인사를 보내고 지금 떠나는 중인 고객은 놓칩니다.

같이 보면 좋은 페이지

마지막 업데이트 2026-09-16