72.3%: Random Forest가 가져온 작은변화

서로에게 질문하며 성장하는 AI와 영업팀의 이야기 - 1화

by Chris

"이거 진짜 믿어도 돼요?"

회의실 모니터를 바라보던 김민준 과장이 팔짱을 끼며 물었다. 화면에는 우리가 3주 동안 만든 첫 AI 모델의 예측 결과가 떠 있었다. 5,127명의 잠재 고객 중 전환 가능성이 높은 상위 200명의 리스트. 그 옆에는 '예측 정확도: 72.3%'라는 숫자가 박혀 있었다.

"72.3%요? 그럼 100명 중 28명은 틀린다는 얘기잖아요."

민준 과장의 말에 다른 팀원들도 고개를 끄덕였다. 나는 그들의 반응을 이해했다. 15년 경력의 베테랑 영업사원 앞에서 컴퓨터가 계산한 숫자를 믿으라는 건 쉬운 일이 아니니까.


시작은 엑셀 지옥이었다

2025년 봄, 우리 이커머스 파트너 얼라이언스 팀은 심각한 문제에 빠져 있었다. 벤더와의 파트너십으로 매달 1,000개가 넘는 신규 리드가 쏟아졌지만, 영업팀이 실제로 접촉할 수 있는 건 그중 10%도 안 됐다.

"Chris, 이번 달 신규 리드 리스트 받았어요. 1,247개."

주영이가 보내준 엑셀 파일을 열었을 때의 그 막막함을 잊을 수가 없다. 회사명, 업종, 사이트 주소, 월 거래액... 12개 컬럼에 빼곡한 데이터. 영업팀은 이걸 일일이 읽으며 "이 회사는 괜찮을 것 같은데"라는 직감으로 우선순위를 정했다.

문제는 그 직감이 틀릴 때가 많다는 거였다.

"저번 달에 제가 일주일 동안 매달렸던 그 패션몰 있잖아요. 결국 예산 없다고 하더라고요."

민준 과장이 한숨을 쉬었다. 반대로 "별로 안 좋아 보여서" 넘어갔던 작은 주얼리 쇼핑몰이 경쟁사의 프리미엄 고객이 된 걸 알았을 때, 우리는 시스템이 필요하다는 걸 깨달았다.


데이터 속에서 패턴 찾기

"일단 우리가 가진 데이터부터 정리해봅시다."

나는 Salesforce CRM에 쌓여있던 지난 3년치 고객 데이터를 뽑아냈다. 5,089건의 리드 정보와 그들의 최종 결과. 계약 성사, 협상 중, 거절, 무응답.

파이썬을 켜고 Pandas로 데이터를 불러왔다. 첫 번째 작업은 '피처 엔지니어링'. 있는 그대로의 데이터는 별로 말을 해주지 않는다. 우리는 의미 있는 변수를 만들어야 했다.



# 월 거래액을 범주로 변환

df['revenue_tier'] = pd.cut(df['monthly_revenue'],

bins=[0, 1000, 5000, 20000, 100000],

labels=['소형', '중소형', '중형', '대형'])

# 업종별 평균 전환율 계산

industry_conversion = df.groupby('industry')['converted'].mean()

df['industry_score'] = df['industry'].map(industry_conversion)




우리가 최종적으로 선정한 12개 변수:

월 평균 거래액 (4단계 구간)

업종 (27개 카테고리)

사이트 오픈 기간

상품 등록 개수

월 방문자 수 추정치

이전 접촉 이력 (있음/없음)

소셜미디어 활동 점수 (0-10)

경쟁사 솔루션 사용 여부

지역 (수도권/지방)

반응 속도 (이전 문의 시)

결제 모듈 종류

프리미엄 기능 사용 여부


Random Forest, 숲을 보는 알고리즘

처음엔 로지스틱 회귀부터 시작했다. 간단하고 해석하기 쉬우니까. 하지만 정확도가 64.2%밖에 안 나왔다. 우리의 직감(약 60%)보다 조금 나은 수준.

"선형 모델로는 한계가 있을 것 같아요. 변수들 간의 복잡한 상호작용을 못 잡아내는 것 같아."

그때 떠오른 게 Random Forest였다. 결정 트리를 수백 개 만들어서 다수결로 예측하는 앙상블 방법. 각 트리가 데이터의 다른 부분을 보면서 학습하고, 최종 예측은 모든 트리의 투표로 결정된다.


from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import train_test_split

# 데이터 분할 (8:2)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y )

# Random Forest 모델 학습

rf_model = RandomForestClassifier(

n_estimators=200, # 트리 200개

max_depth=15, # 최대 깊이 15

min_samples_split=20, # 분할 최소 샘플 수

class_weight='balanced', # 클래스 불균형 보정

random_state=42

)

rf_model.fit(X_train, y_train)


하이퍼파라미터 튜닝에만 이틀이 걸렸다. 트리 개수를 100개에서 500개까지 바꿔가며, 깊이를 조절하며, 교차 검증을 돌렸다. 그렇게 나온 최종 정확도가 72.3%였다.


72.3%가 의미하는 것

"72.3%면 충분히 의미 있는 숫자예요."

내가 설명하기 시작했다.

"민준 과장님, 지금까지 우리가 접촉한 리드 중에 실제로 계약으로 이어진 비율이 얼마였죠?"

"음... 한 15% 정도?"

"맞아요. 100명에게 연락하면 15명이 고객이 되는 거죠. 그런데 이 모델이 상위 20%만 추천한다면?"

나는 테스트 결과를 화면에 띄웠다.

"상위 20%에 속한 고객들의 실제 전환율은 41.2%였어요. 100명에게 연락할 시간에 20명에게만 집중하면, 성공률이 2.7배 올라가는 거죠."

회의실이 조용해졌다.


설명 가능한 AI의 중요성

"그래도 이게 왜 맞는지는 알아야 하지 않아요?"

민준 과장의 질문이 핵심이었다. 단순히 숫자만 던져주면 안 된다. 왜 이 고객이 유망한지 설명할 수 있어야 영업 전략을 세울 수 있다.

Random Forest의 장점 중 하나가 바로 'Feature Importance'다. 어떤 변수가 예측에 가장 중요했는지 알려준다.


# 변수 중요도 추출

feature_importance = pd.DataFrame({

'feature': feature_names,

'importance': rf_model.feature_importances

}).sort_values('importance', ascending=False)


print(feature_importance.head(10))


결과를 보고 우리는 놀랐다.

Top 5 중요 변수:

월 평균 거래액 (28.4%)

업종별 전환율 점수 (18.2%)

상품 등록 개수 (14.1%)

이전 접촉 이력 (11.8%)

사이트 오픈 기간 (9.3%)

"이거 보세요. 거래액이 가장 중요하긴 한데, 단독으로 결정하는 건 아니에요. 업종 특성이나 상품 구색도 중요하다는 거죠."

민준 과장이 고개를 끄덕였다.

"패션 쪽은 전환율이 낮고, 식품/건강 쪽은 높더라고요. 근데 그게 데이터로 증명되네요."


첫 번째 작은 실험

"일단 한 달만 해보죠. 리드를 반으로 나눠서, 절반은 기존 방식대로, 절반은 모델 추천대로 접촉하는 거예요."

이게 내가 제안한 A/B 테스트였다.

9월 한 달 동안:

그룹 A (기존 방식): 영업팀 직감으로 선정한 250개 리드 접촉

그룹 B (AI 추천): 모델 상위 20%에 해당하는 250개 리드 접촉

매주 금요일마다 모여서 진행 상황을 공유했다.

"이번 주에 저는 8개 상담 잡았는데, AI 리스트에서 7개 나왔어요."

"저는 기존 리스트로 했는데... 3개밖에 안 되네요."

3주차쯤 되자 팀 분위기가 달라지기 시작했다.


72.3%의 첫 번째 성공

한 달 후, 결과를 정리했다.

그룹 A (기존 방식)

접촉 시도: 250건

상담 성사: 38건 (15.2%)

계약 체결: 5건 (2.0%)

그룹 B (AI 추천)

접촉 시도: 250건

상담 성사: 94건 (37.6%)

계약 체결: 12건 (4.8%)

같은 노력으로 2배 이상의 성과. 계약 체결은 2.4배.

"와... 진짜 되네요."

민준 과장이 모니터를 보며 중얼거렸다. 72.3%라는 숫자가 더 이상 의심스러워 보이지 않았다.


72.3%는 시작점이었다

그날 저녁, 팀 회식 자리에서 주영이가 물었다.

"근데 Chris, 72.3%는 좀 아쉽지 않아요? 더 높일 수는 없나요?"

나는 맥주잔을 들며 웃었다.

"물론이죠. 이건 시작일 뿐이에요. 데이터가 더 쌓이면, 더 정교한 모델을 쓰면, 분명 더 올릴 수 있어요."

그때는 몰랐다. 72.3%가 우리에게 준 진짜 선물은 정확도가 아니라 '가능성'에 대한 믿음이었다는 걸.

AI가 완벽할 필요는 없었다. 지금보다 조금만 나으면, 시작할 수 있다는 용기만 있으면, 충분했다.


엔지니어의 일기장에서

"첫 AI 모델 배포. 72.3%라는 숫자가 팀원들에게 어떻게 받아들여질지 불안했다. 완벽하지 않다는 걸 어떻게 설명해야 할까. 하지만 한 달 후, 그 불완전함이 오히려 팀에게 '함께 개선할 수 있는 것'이라는 메시지를 줬다는 걸 깨달았다. 완벽한 AI는 두렵지만, 72.3%의 AI는 동료처럼 느껴진다."



더 알아보기: 기술 아키텍처

이 글에서 소개한 Random Forest 영업 자동화 시스템의 상세 아키텍처가 궁금하신 분들을 위해 3장의 기술 다이어그램을 준비했습니다.

데이터 수집부터 예측까지의 전체 흐름 그리고 5단계 파이프라인까지. 이제 여러분의 회사에서 바로 적용해보실 수 있습니다.

SCR-20251204-iphz.png
SCR-20251204-ipkd.png
SCR-20251204-iplx.png





다음 편 예고:

"직관 vs 데이터, 83.7%에서 만나다" 우리의 두 번째 도전. XGBoost를 만나다. 그리고 베테랑 영업사원의 15년 직관이 데이터로 검증되는 순간.



#인터랙션사이언스 #AI영업자동화 #RandomForest #머신러닝실전 #이커머스데이터분석 #직장인AI활용 #영업팀AI도입기 #데이터로일하는법 #세일즈테크

작가의 이전글AI가 영업팀을 대체할 거라는 착각