인간 행동의 5 구성요소 — Personal · Cognition · Intentions · Actions · Business (Buisson Ch.2.1)

각 요소의 정의·직관·수집 방법·윤리 고려와 인과 사슬 위에서의 위치

Buisson (2021) Ch.2 의 §“A Basic Model of Human Behavior” 를 5 요소 단위로 자세히 정리한다. 각 요소의 정의·관찰 가능성·시간 척도·수집 방법·윤리 고려를 모두 다룬다. C-Mart 와 AirCnC 의 변수 매핑 사례·미드라이프 크라이시스 인과 사슬·“behavioralize” 절차를 통해 추상 개념을 직관화한다.

Experimentation
Causal Inference
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의

정의: 인간 행동의 5 구성요소 모형 (Buisson, 2021, Ch.2)

데이터 분석 단계에서 만나는 변수를 분류·해석하기 위한 단순화된 인과 사슬:

Personal Characteristics → Cognition·Emotions → Intentions → Actions
        ↑                          ↑                  ↑          ↑
        └──────── Business Behaviors ────────────────┴──────────┘

각 요소가 다음 요소의 확률적 기여 요인이다. Business Behaviors 는 분석가·기업이 통제하는 변수로 모든 단계에 영향.

직관 — 왜 5요소인가?

수십 가지 다른 행동 모형이 있다. 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 시간 척도의 중요성

같은 변수도 시간 frame 에 따라 분류 달라짐

한 달 분석 vs 30년 도시 계획:

  • 한 달: 라이프스타일 (예: 비건 식단) 은 거의 변하지 않으니 Personal
  • 30년: 라이프스타일 자체가 변하므로 Personal 이 아니라 시계열 변수

도시 계획 분석가는:

  • “20년 후에는 비건 인구가 X% 증가” 같은 추세 변화를 직접 모델링
  • 추세 자체가 가속·감속할 가능성도 고려 (예: 기후 위기로 비건 전환 가속)

→ 분석 frame 이 길수록 Personal 의 정의가 좁아진다. Personal 은 절대적 카테고리가 아니라 분석 시간 척도에 따른 상대적 카테고리.

2.4 수집 방법과 윤리

직관 — Personal 데이터의 사회적 위험

인구통계 변수는 광범위하게 수집·사용되지만, 다음 위험이 있다.

위험 사례
차별 자동화 채용 알고리즘이 성별·인종을 학습 → 기존 차별 강화
프라이버시 가족 구성·소득 노출 → 정체성·재정 위협
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, 매출 데이터 비즈니스 지표 직결, 대규모 표면적, 동기 구분 모호
직관 — 세 분야 통합

분석가의 책임은 세 분야의 도구를 통합하는 것:

  1. UX 인터뷰 로 가설 도출 (“결제 단계 친구 추천 옵션 추가하면 전환율 ↑?”)
  2. A/B 테스트 로 인과 검증 (실제 전환율 +5%)
  3. NPS·CSAT 로 장기 만족도 추적 (단기 전환 ↑ 가 장기 충성도를 해치지 않는지)

세 도구를 모두 안 쓰고 한 두 가지만 쓰면 결론이 표면적이거나 일반화 어렵다.

4 Intentions — 의도와 행동의 다리

4.1 정의

정의

행동을 하겠다는 의식적 결심. Cognition 보다 한 단계 더 행동에 가깝고, Action 보다 한 단계 추상적.

의도-행동 간극 (Intention-Action Gap)

운동 결심 데이터:

  • 신년에 “올해 운동하겠다” 선언: 50% (Intention)
  • 6개월 후 실제 주 1회 이상 운동: 12% (Action)

전환율 24%. 즉 의도의 76% 가 행동으로 이어지지 않는다.

비즈니스 함의:

  • 설문에서 “이 신상품 사실 건가요?” 80% “예” → 실제 구매율은 ~20%
  • “1년 구독 갱신할 의향 있다” 70% → 실제 갱신율 ~50%

의도 데이터를 행동 예측에 그대로 쓰면 75% 의 사람이 거짓말한 것처럼 보인다. 거짓말이 아니라 의도-행동 간극이다.

4.2 직관 — 간극이 발생하는 메커니즘

직관 — 의도가 행동으로 안 가는 4 가지 이유
  1. 시간적 거리: 신년 결심은 12월 31일 23:59 와 1월 1일 00:01 사이에 큰 차이 — 미래 자기를 과대평가
  2. Friction: 의도는 있어도 실행 장벽 (헬스장 등록·옷 입기·이동) 이 누적됨
  3. 현재 편향(present bias): 지금의 즐거움 (떡케이크) 이 미래 이익 (건강) 보다 크게 느껴짐
  4. 상충하는 의도들: 동시에 여러 결심 (“운동 + 책 읽기 + 외국어”) → 하나도 못 함

4.3 의도-행동 간극을 줄이는 도구

직관 — Implementation Intentions

심리학자 Gollwitzer (1999) 가 개발한 도구.

  • 단순 의도: “운동을 하겠다”
  • Implementation Intention: “월·수·금 7시에 헬스장에 가서 30분 유산소 + 20분 근력”

후자가 행동 전환율을 50% 이상 향상.

비즈니스 적용:

  • “구매 결심” → “다음 결제일 배송 예정일에 자동 결제”
  • “건강관리” → “월요일 출근 후 첫 회의 전 5분 명상”

추상적 의도를 언제·어디서·무엇을 의 구체로 변환하면 의도-행동 간극이 줄어든다.

5 Actions — 관찰 가능한 행동

5.1 정의 — Buisson 의 행동 변수 3 기준 (재방문)

정의

행동 변수는 다음 3 기준을 만족해야 한다.

  1. 관찰 가능 (observable) — 외부에서 측정할 수 있어야 함
  2. 개별적 (individual) — 한 개인의 행동으로 정의됨
  3. 원자적 (atomic) — 더 작은 행동으로 분해 안 되는 단위

5.2 직관 — 변수 3 기준 점검의 중요성

“Active User” 변수 점검

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요소 사슬의 어디든 영향?”

광고 캠페인 하나가 5요소 모두에 영향:

TV 광고 "Youth is in your head"
    ↓ Personal 단계 영향: 거의 없음 (성격을 바꾸진 않음)
    ↓ Cognition 단계 영향: 큼 (젊음의 정의를 reframe)
    ↓ Intention 단계 영향: 중간 (기존 의도를 modify)
    ↓ Action 단계 영향: 작음 (단발 광고로 행동 직접 변화는 적음)

각 단계 영향의 강도는 광고 설계에 따라 다르다.

  • 단기 행동 캠페인: “지금 사세요!” → Action 단계 직접 타겟
  • 브랜드 캠페인: “당신이 누구인지 보여주세요” → Cognition·Personal 타겟
  • 습관 형성 캠페인: “월요일 7시, 운동 시작” → Intention 단계 + Implementation Intentions

6.3 데이터 수집 어려움

Business Behaviors 데이터의 함정

이 데이터를 측정·기록하는 것이 의외로 어렵다.

  • 광고 노출: 누가 어떤 광고를 봤는지 정확히 추적이 까다로움 (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 가지:

  1. Personal → Cognition: 40대 vs 30대의 자기 인식 차이는?
  2. Cognition → Intention: 젊음 욕망 강도가 의도를 얼마나 형성하는가?
  3. Intention → Action: 의도가 어떤 비율로 콜벳·머리 염색·아무것도 안 함 으로 분기?
  4. 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 의 형제 글

11.2 이전 챕터

11.3 후속 챕터의 5요소 활용

11.5 카테고리 진입점

Subscribe

Enjoy this blog? Get notified of new posts by email: