1 정의
데이터 분석 단계에서 만나는 변수를 분류·해석하기 위한 단순화된 인과 사슬:
Personal Characteristics → Cognition·Emotions → Intentions → Actions
↑ ↑ ↑ ↑
└──────── Business Behaviors ────────────────┴──────────┘
각 요소가 다음 요소의 확률적 기여 요인이다. Business Behaviors 는 분석가·기업이 통제하는 변수로 모든 단계에 영향.
수십 가지 다른 행동 모형이 있다. Buisson 자신이 “there’s nothing definitive or magical about this one” 이라고 말한다.
그래도 5요소를 선택한 이유:
“for the data analysis stage, … these five components best correspond to the types of data you’ll encounter”
데이터 분석가가 만나는 변수의 자연스러운 분류 5 가지. 더 적으면 분류가 모호하고 (예: 인지와 의도의 차이를 잃음), 더 많으면 분석에 방해 (예: 인지를 4 가지로 더 쪼개면 변수 매핑 결정이 너무 어려워짐).
→ 분석 실용성 이 기준이지 학문적 완벽성이 기준이 아니다.
2 Personal Characteristics — “거의 변하지 않는” 개인 정보
2.1 정의
분석 시간 frame 안에서 거의 변하지 않거나 매우 천천히 변하는 개인 정보. Buisson 은 이를 “primary causes” — 무한 회귀를 피하기 위해, 이 변수의 변화는 추적하지만 그 변화의 원인은 추적하지 않는 변수 — 로 정의한다.
포함 영역:
- 인구통계: 나이·성별·가족 구성·거주 지역·소득
- 성격 특질: Big Five (외향성·신경증·성실성·우호성·개방성)
- 생활 습관: 식습관·운동 빈도·수면 패턴·미디어 소비
2.2 직관 — “Primary Cause” 의 의미
“왜 이 사람은 외향적인가?” 라고 물으면 — 유전, 부모의 양육 방식, 어린 시절 사회 경험, 청소년기 경험 등으로 끝없이 거슬러 올라간다.
분석가는 어딘가에서 멈춰야 한다. Buisson 은 “외향성” 정도에서 멈추기로 한다. 외향성이 높은 사람이 어떤 행동을 더 자주 하는지를 분석할 뿐, 외향성 자체의 원인은 분석하지 않는다. 이것이 primary cause 의 의미.
이는 정밀과학의 기본 atomic 가정처럼 — “원자의 내부 구조를 일단 무시하고 원자 수준에서 화학을 한다” 와 같다.
2.3 시간 척도의 중요성
한 달 분석 vs 30년 도시 계획:
- 한 달: 라이프스타일 (예: 비건 식단) 은 거의 변하지 않으니 Personal
- 30년: 라이프스타일 자체가 변하므로 Personal 이 아니라 시계열 변수
도시 계획 분석가는:
- “20년 후에는 비건 인구가 X% 증가” 같은 추세 변화를 직접 모델링
- 추세 자체가 가속·감속할 가능성도 고려 (예: 기후 위기로 비건 전환 가속)
→ 분석 frame 이 길수록 Personal 의 정의가 좁아진다. Personal 은 절대적 카테고리가 아니라 분석 시간 척도에 따른 상대적 카테고리.
2.4 수집 방법과 윤리
인구통계 변수는 광범위하게 수집·사용되지만, 다음 위험이 있다.
| 위험 | 사례 |
|---|---|
| 차별 자동화 | 채용 알고리즘이 성별·인종을 학습 → 기존 차별 강화 |
| 프라이버시 | 가족 구성·소득 노출 → 정체성·재정 위협 |
| Proxy 의 함정 | “ZIP 코드” 가 인종의 proxy 가 됨 → 명시적 인종 변수 없이도 차별 |
윤리 권고:
- 목적 적합성: 분석 목적에 진짜 필요한 변수만 수집
- 익명화: 개인 식별 가능 변수 제거
- 공정성 점검: 알고리즘 결과가 인구 그룹별로 다르지 않은지 검증 (fairness audit)
3 Cognition and Emotions — 의식적·무의식적 정신 상태
3.1 정의
의식적 사고(생각·신념·태도)와 무의식적 감정(기분·욕구·동기)의 정신 상태. 행동을 직접 일으키는 가장 가까운 인과 요인.
비즈니스 영역의 매핑:
- CSAT (Customer Satisfaction) — 만족도 점수
- NPS (Net Promoter Score) — 추천 의향
- CX (Customer Experience) — 종합 경험 평가
- 태도·신념 — 브랜드 인식, 가치관
3.2 직관 — Cognition 측정의 본질적 어려움
Cognition 을 측정하는 가장 흔한 방법: 자기 보고(self-report). 설문, 인터뷰, 평점.
함정 — 사람들은 자기 행동의 진짜 동기를 모른다 (Nisbett & Wilson 1977).
- 진짜 이유: 광고에 노출되어서
- 자기 보고: “친구가 추천해서요”
이를 introspection illusion 이라 한다. 사람들은 자기가 자기 동기에 직접 접근한다고 믿지만, 실제로는 사후에 합리화한 추측이다.
→ Cognition 측정에는 자기 보고 + 행동 실측 + 실험 조합이 필요하다.
3.2.1 UX 연구 vs 행동과학의 관점 차이 (재방문)
| 분야 | 측정 도구 | 강점 | 약점 |
|---|---|---|---|
| UX 연구 | 정성 인터뷰, 사용성 테스트 | 깊이 있는 직관·맥락 이해 | 일반화 어려움, 표본 작음 |
| 행동과학 | 실험, 행동 추적, A/B 테스트 | 인과 추론, 일반화 | 미세한 동기·맥락 놓칠 수 있음 |
| 마케팅 분석 | NPS, CSAT, 매출 데이터 | 비즈니스 지표 직결, 대규모 | 표면적, 동기 구분 모호 |
분석가의 책임은 세 분야의 도구를 통합하는 것:
- UX 인터뷰 로 가설 도출 (“결제 단계 친구 추천 옵션 추가하면 전환율 ↑?”)
- A/B 테스트 로 인과 검증 (실제 전환율 +5%)
- NPS·CSAT 로 장기 만족도 추적 (단기 전환 ↑ 가 장기 충성도를 해치지 않는지)
세 도구를 모두 안 쓰고 한 두 가지만 쓰면 결론이 표면적이거나 일반화 어렵다.
4 Intentions — 의도와 행동의 다리
4.1 정의
행동을 하겠다는 의식적 결심. Cognition 보다 한 단계 더 행동에 가깝고, Action 보다 한 단계 추상적.
운동 결심 데이터:
- 신년에 “올해 운동하겠다” 선언: 50% (Intention)
- 6개월 후 실제 주 1회 이상 운동: 12% (Action)
전환율 24%. 즉 의도의 76% 가 행동으로 이어지지 않는다.
비즈니스 함의:
- 설문에서 “이 신상품 사실 건가요?” 80% “예” → 실제 구매율은 ~20%
- “1년 구독 갱신할 의향 있다” 70% → 실제 갱신율 ~50%
→ 의도 데이터를 행동 예측에 그대로 쓰면 75% 의 사람이 거짓말한 것처럼 보인다. 거짓말이 아니라 의도-행동 간극이다.
4.2 직관 — 간극이 발생하는 메커니즘
- 시간적 거리: 신년 결심은 12월 31일 23:59 와 1월 1일 00:01 사이에 큰 차이 — 미래 자기를 과대평가
- Friction: 의도는 있어도 실행 장벽 (헬스장 등록·옷 입기·이동) 이 누적됨
- 현재 편향(present bias): 지금의 즐거움 (떡케이크) 이 미래 이익 (건강) 보다 크게 느껴짐
- 상충하는 의도들: 동시에 여러 결심 (“운동 + 책 읽기 + 외국어”) → 하나도 못 함
4.3 의도-행동 간극을 줄이는 도구
심리학자 Gollwitzer (1999) 가 개발한 도구.
- 단순 의도: “운동을 하겠다”
- Implementation Intention: “월·수·금 7시에 헬스장에 가서 30분 유산소 + 20분 근력”
후자가 행동 전환율을 50% 이상 향상.
비즈니스 적용:
- “구매 결심” → “다음 결제일 배송 예정일에 자동 결제”
- “건강관리” → “월요일 출근 후 첫 회의 전 5분 명상”
추상적 의도를 언제·어디서·무엇을 의 구체로 변환하면 의도-행동 간극이 줄어든다.
5 Actions — 관찰 가능한 행동
5.1 정의 — Buisson 의 행동 변수 3 기준 (재방문)
행동 변수는 다음 3 기준을 만족해야 한다.
- 관찰 가능 (observable) — 외부에서 측정할 수 있어야 함
- 개별적 (individual) — 한 개인의 행동으로 정의됨
- 원자적 (atomic) — 더 작은 행동으로 분해 안 되는 단위
5.2 직관 — 변수 3 기준 점검의 중요성
5.2.1 후보 1: “지난 30일 1회 이상 로그인 한 사람”
| 기준 | 점검 | 통과? |
|---|---|---|
| 관찰 가능 | 로그인 이벤트 로그 | O |
| 개별적 | 한 user_id 의 행동 | O |
| 원자적 | “로그인” 단일 행동 | O |
→ 통과. 단순하지만 명확.
5.2.2 후보 2: “지난 30일 5회 이상 핵심 기능 사용 + 결제 1회 이상 + 추천 1회 이상”
| 기준 | 점검 | 통과? |
|---|---|---|
| 관찰 가능 | 각각 측정 가능 | O |
| 개별적 | 한 user_id 의 행동 | O |
| 원자적 | 3 개 행동 결합 | X |
→ 원자적 기준 실패. 분해 필요:
- 핵심 기능 사용 횟수 (Action 1)
- 결제 횟수 (Action 2)
- 추천 횟수 (Action 3)
세 변수로 분리한 후 분석에서 종합한다.
5.3 시간 차원의 풍부함
행동 변수는 “발생 여부 (binary)” 외에도 시간 차원에서 다양한 정보를 가진다.
| 시간 정보 | 정의 | 분석 활용 |
|---|---|---|
| 빈도 | 단위 시간당 발생 횟수 | 충성도·습관 측정 |
| 지속시간 | 한 번에 얼마나 머무는가 | 참여 깊이 |
| 인접성 | 직전·직후 행동과의 관계 | 행동 시퀀스 분석 |
| 주기성 | 일정 주기 발생 여부 | 습관·이벤트 구분 |
| 사례 | 빈도 | 지속시간 | 인접성 | 분석적 의미 |
|---|---|---|---|---|
| 충성 고객 | 주 3회 균등 | 짧지만 지속적 | 다른 핵심 기능과 인접 | 안정 충성 |
| 이벤트 의존 | 월말 폭발 | 길지만 단발 | 프로모션과 인접 | 외부 트리거 의존 |
| 일시적 시도 | 첫 주 5회 후 0 | 점점 짧아짐 | 다른 기능 안 씀 | 이탈 예고 |
| Power User | 매일 1회 이상 | 매번 길게 | 거의 모든 기능 사용 | 핵심 사용자 |
같은 “월 활동 10회” 도 시간 정보를 보면 4 가지 다른 의미. 비즈니스 처방도 다르다.
6 Business Behaviors — 우리가 통제하는 모든 것
6.1 정의
기업·조직이 결정·통제 하는 모든 변수.
- 커뮤니케이션: 광고, 이메일, 푸시, 영업 활동
- 규칙·정책: 가격, 환불 규정, 멤버십 등급
- 개별 결정: 고객별 할인, VIP 응대 의사결정
- 알고리즘: 추천 시스템, 검색 랭킹, 가격 동적 조정
- UX: 화면 디자인, 결제 흐름, 폼 디자인
6.2 직관 — Business Behaviors 의 인과적 위치
광고 캠페인 하나가 5요소 모두에 영향:
TV 광고 "Youth is in your head"
↓ Personal 단계 영향: 거의 없음 (성격을 바꾸진 않음)
↓ Cognition 단계 영향: 큼 (젊음의 정의를 reframe)
↓ Intention 단계 영향: 중간 (기존 의도를 modify)
↓ Action 단계 영향: 작음 (단발 광고로 행동 직접 변화는 적음)
각 단계 영향의 강도는 광고 설계에 따라 다르다.
- 단기 행동 캠페인: “지금 사세요!” → Action 단계 직접 타겟
- 브랜드 캠페인: “당신이 누구인지 보여주세요” → Cognition·Personal 타겟
- 습관 형성 캠페인: “월요일 7시, 운동 시작” → Intention 단계 + Implementation Intentions
6.3 데이터 수집 어려움
이 데이터를 측정·기록하는 것이 의외로 어렵다.
- 광고 노출: 누가 어떤 광고를 봤는지 정확히 추적이 까다로움 (cookie deprecation·iOS ATT 등)
- 개별 결정: VIP 응대 같은 것은 시스템에 기록 안 되는 경우 많음
- 알고리즘 변경: A/B 테스트 외 기록 부재
- 가격 변경: 시점·세그먼트별 가격 변화 이력 미보존
이 데이터가 빠지면 인과 분석에서 확률적 처치 변수 가 누락 → confounder 가 됨.
권고:
- 광고 노출 ID 를 user 행동 로그와 join 가능하게 설계
- 알고리즘 변경 이력을 timestamp 와 함께 보존
- 가격 변경을 segment·time 단위로 기록
7 5요소 인과 사슬 — 미드라이프 크라이시스 사례 (재방문)
Personal: 40대 진입
↓ (분석 가능: 인구통계 그룹별 차이)
Cognition: "젊음을 다시 느끼고 싶다"
↓ (분석 가능: NPS·자기 보고로 추적)
Intention: 빨간 콜벳 사겠다는 결심
↓ (분석 가능: 설문, 검색 행동, 위시리스트)
Action: 콜벳 구매 OR 머리 염색
Business 영향:
- "Youth is in your head" 광고 ── Cognition 에 reframe 효과
└────── Action 에 redirect 효과
분석가의 질문 4 가지:
- Personal → Cognition: 40대 vs 30대의 자기 인식 차이는?
- Cognition → Intention: 젊음 욕망 강도가 의도를 얼마나 형성하는가?
- Intention → Action: 의도가 어떤 비율로 콜벳·머리 염색·아무것도 안 함 으로 분기?
- Business → 각 단계: 광고가 어느 단계에 가장 큰 효과?
각 질문이 별도 분석. 한꺼번에 보면 변수가 너무 많아 손댈 수 없다.
8 응용 분야 — 실무 매핑 사례
8.1 구독 비즈니스 5요소 매핑
| 5요소 | 변수 예시 | 측정 도구 |
|---|---|---|
| Personal | 나이·성별·직업·가구 구성·소득대 | 회원가입 시 입력, 외부 데이터 |
| Cognition | NPS, CSAT, 만족도, 브랜드 친밀도 | 분기별 설문, 인터뷰 |
| Intention | 갱신 의향, 추천 의향, 업그레이드 의향 | 설문, in-app 미니 설문 |
| Action | 로그인 횟수, 결제, 해지, 콘텐츠 소비 | 행동 로그 |
| Business | 가격, 콘텐츠 라이브러리 변경, 캠페인, CS 응대 | 시스템 로그 |
매핑 없이는: “해지율이 왜 늘었나?” 같은 모호한 질문만 가능.
매핑 후:
- “Personal=20대 + Cognition=만족도 8/10 + Intention=갱신 의향 + Action=해지” 의 모순 그룹 → 의도-행동 간극 분석
- “Business=가격 인상” 후 Cognition (만족도) 변화의 시간 지연 분석
- “Personal=직장인 vs 자영업” 의 Cognition 회복 속도 비교 (resilience analysis)
매핑이 곧 분석 질문의 가능성 공간을 정의한다.
9 코드 예시 — 5요소 매핑 + 의도-행동 간극 분석
import pandas as pd
import numpy as np
np.random.seed(42)
n = 1000
# 가상 구독 비즈니스 데이터
df = pd.DataFrame({
"user_id": range(n),
# Personal
"age": np.random.choice([20, 30, 40, 50], n, p=[0.25, 0.35, 0.25, 0.15]),
"income_bracket": np.random.choice(["low", "mid", "high"], n, p=[0.3, 0.5, 0.2]),
# Cognition
"csat": np.random.normal(7.5, 1.5, n).clip(1, 10),
"nps": np.random.normal(20, 30, n).clip(-100, 100),
# Intention (CSAT 와 약한 상관)
"intent_renew_prob": (
0.4 + 0.05 * np.random.normal(0, 1, n) # 기본 노이즈
),
# Action (intention 과 다른 패턴 — 의도-행동 간극)
"actual_renew": np.random.binomial(1, 0.55, n), # 실제 갱신 ~55%
# Business
"price_paid": np.random.choice([9.99, 14.99, 19.99], n, p=[0.4, 0.5, 0.1]),
"received_promo": np.random.binomial(1, 0.3, n),
})
# Intention 을 CSAT 에 의존하도록 조정
df["intent_renew_prob"] += 0.05 * (df["csat"] - 7.5)
df["intent_renew"] = (df["intent_renew_prob"] > 0.5).astype(int)
# 5요소 매핑
mapping = {
"Personal": ["age", "income_bracket"],
"Cognition": ["csat", "nps"],
"Intention": ["intent_renew"],
"Action": ["actual_renew"],
"Business": ["price_paid", "received_promo"],
}
print("=== 5요소 매핑 ===")
for cat, vars in mapping.items():
print(f" {cat}: {vars}")
# 의도-행동 간극 분석
gap_table = pd.crosstab(df["intent_renew"], df["actual_renew"])
print("\n=== 의도-행동 간극 (intent x actual) ===")
print(gap_table)
# 4 가지 그룹 분석
df["group"] = df.apply(
lambda r: f"intent={r['intent_renew']}, action={r['actual_renew']}",
axis=1
)
group_csat = df.groupby("group")["csat"].mean()
print("\n=== 그룹별 평균 CSAT ===")
print(group_csat)4 가지 그룹의 의미:
| Intent | Action | 그룹 | 비즈니스 처방 |
|---|---|---|---|
| 1 | 1 | 의도→행동 일관 | 충성 고객 — VIP 프로그램 |
| 1 | 0 | 의도-행동 간극 (가장 많음) | Friction 제거 캠페인 |
| 0 | 1 | “의외 갱신” | Cognition·Intention 측정의 부정확함 시사 |
| 0 | 0 | 이탈 의도→이탈 | 돌아오기 어려움, 새 가치 제안 필요 |
CSAT 가 가장 높은 그룹은 “의도→행동” 일관 그룹일 것. 가장 낮은 그룹은 “이탈 의도→이탈” 그룹.
매핑 없이는 “갱신율 55%” 같은 단일 숫자만 보지만, 매핑 후에는 그 안의 4 가지 다른 시나리오와 각각의 처방이 보인다.
10 코드 예시 — Behavioral Variable 3 기준 자동 점검
def check_behavioral_variable(name, definition, sources):
"""
Buisson 의 행동 변수 3 기준으로 점검.
sources: 변수의 데이터 소스 리스트.
"""
checks = {}
# 1. 관찰 가능
observable_sources = ["log", "event", "system", "click", "api"]
checks["observable"] = any(
any(s in src.lower() for s in observable_sources)
for src in sources
)
# 2. 개별적
individual_keywords = ["user", "person", "customer", "individual"]
checks["individual"] = any(
kw in definition.lower() for kw in individual_keywords
)
# 3. 원자적 (단일 행동)
multi_action_signals = [" + ", " and ", "+", "결합", "combined"]
checks["atomic"] = not any(
signal in definition.lower() for signal in multi_action_signals
)
return all(checks.values()), checks
# 변수 후보 점검
candidates = [
("login_event", "한 사용자의 단일 로그인 행동",
["server_log"]),
("active_user_combined", "5회 이상 사용 + 결제 + 추천 모두",
["analytics_db"]),
("engagement_score", "충성도와 활동성의 종합 점수",
["calculated"]),
("page_view", "한 사용자가 한 페이지를 보는 단일 행동",
["client_event"]),
]
for name, defn, sources in candidates:
valid, checks = check_behavioral_variable(name, defn, sources)
status = "PASS" if valid else "FAIL"
print(f"\n{name}: {status}")
for criterion, ok in checks.items():
print(f" [{('O' if ok else 'X')}] {criterion}")
print(f" 정의: {defn}")이 코드는 휴리스틱이다. 실제 자연어 정의를 완벽히 분석할 수는 없다. 그러나 변수 정의를 작성할 때:
- “한 사용자의 단일 X 행동” 같은 명확한 표현을 쓰면 PASS
- “X 와 Y 의 종합” 같은 모호한 표현을 쓰면 FAIL
→ 정의 자체가 명확해지도록 강제 한다. 이게 자동 점검의 진짜 가치.
엔지니어링 팀과 분석 팀이 변수 정의를 협상할 때 3 기준을 명시적 체크리스트로 사용하면 정의가 더 정확해진다.
11 관련 주제
11.1 Ch.2 의 형제 글
- E-BUI2-0 행동 데이터 이해 overview — Ch.2 전체 흐름
- E-BUI2-2 행동·데이터 연결 — 변수의 5요소 매핑 절차
- E-BUI2-3 행동적 무결성 마인드셋 — Distrust and Verify
11.2 이전 챕터
- E-BUI1-0 Causal-Behavioral Framework overview
- E-BUI1-2 인간 행동의 복잡성과 교란 변수 — 5 특성과 confounder
11.3 후속 챕터의 5요소 활용
- E-BUI8-0 실험 설계 기초 — Theory of Change 가 5요소 인과 사슬을 어떻게 사용하는가
- E-BUI11-0 Moderation overview — Personal Characteristics 가 처치 효과를 modify
- E-BUI12-0 Mediation overview — Cognition 이 Action 의 매개 변수가 되는 분석
11.4 Hernan 정통 cross-link
- Causal_Inference/04 효과 수정 — Personal Characteristics 의 학술적 처리
- Causal_Inference/06 DAG와 인과 다이어그램 — 5요소 사슬의 형식적 DAG 표기
11.5 카테고리 진입점
- Experimentation 학습 로드맵 — 11 Phase × 7 교재 매핑