[CAST 통계 스터디] 4강. 조건부 확률·독립·종속·결합확률 이해하기
1. 학습 목적
공항 여객의 행동은 하나의 확률로만 설명하기 어렵다.
예를 들어 전체 승객의 셀프 체크인 이용률이 40%라고 하더라도 실제로는 다음과 같이 달라질 수 있다.
- 젊은 승객은 셀프 체크인 이용률이 높을 수 있음
- 고령 승객은 유인 카운터 이용률이 높을 수 있음
- 수하물이 많은 승객은 셀프 체크인보다 카운터 또는 Bag Drop 이용률이 높을 수 있음
- 특정 항공사나 노선에 따라 체크인 방식이 달라질 수 있음
즉 여객 행동은 단일 확률이 아니라 “어떤 조건에서 어떤 행동이 얼마나 자주 발생하는가”로 보는 것이 더 현실적이다.
CAST 모형설계서에서도 여객속성, 체크인 유형, 출국장 이용분포, 보안검색 유형, 입국심사 유형, 리포팅타임 등을 개별 속성으로 관리하고 있다. :chatgpt-content-reference{index="0"} :chatgpt-content-reference{index="1"}
이번 강의에서는 이런 속성들이 서로 어떤 관계를 가질 수 있는지 이해하는 것이 목적이다.
2. 조건부 확률 Conditional Probability
조건부 확률은:
어떤 조건이 주어졌을 때 특정 사건이 발생할 확률
을 의미한다.
기호로는 다음과 같이 표현한다.
P(B | A)
뜻은:
A라는 조건에서 B가 발생할 확률
이다.
예를 들어 전체 승객의 셀프 체크인 이용률이 40%라면:
P(Self Check-in) = 0.40
이다.
그런데 20~39세 승객만 보면 셀프 체크인 이용률이 65%라면:
P(Self Check-in | Age 20~39) = 0.65
이다.
즉 전체 확률과 조건부 확률은 서로 다를 수 있다.
3. 왜 조건부 확률이 중요한가
단순한 시뮬레이션에서는 모든 승객에게 같은 비율을 적용할 수 있다.
예:
- 셀프 체크인 40%
- 유인 카운터 60%
하지만 현실에서는 여객 특성에 따라 비율이 달라질 수 있다.
예를 들어:
| 승객 특성 | 셀프 체크인 이용률 |
|---|---|
| 전체 | 40% |
| 20~39세 | 65% |
| 60세 이상 | 20% |
| 수하물 없음 | 70% |
| 수하물 2개 이상 | 25% |
이 경우 모든 승객에게 40%를 일괄 적용하면 세부 흐름이 왜곡될 수 있다.
즉:
전체 평균 확률보다 조건별 확률이 더 현실적인 경우가 많다.
4. 간단한 조건부 확률 예제
승객 1,000명이 있다고 가정한다.
그중:
- 20~39세: 400명
- 나머지: 600명
셀프 체크인을 이용한 승객은:
- 20~39세 중 260명
- 나머지 중 140명
이라고 한다.
전체 셀프 체크인 이용률은:
400 / 1,000 = 40%
이다.
하지만 20~39세 승객만 보면:
260 / 400 = 65%
이다.
나머지 승객은:
140 / 600 ≒ 23.3%
이다.
즉 전체 비율 40% 하나만 봐서는 실제 행동 차이를 알 수 없다.
5. 독립 Independent
두 사건이 서로 영향을 주지 않으면 독립이라고 한다.
쉽게 말하면:
A가 발생하든 말든 B의 확률이 변하지 않는 경우
이다.
확률적으로는:
P(B | A) = P(B)
이면 독립이라고 볼 수 있다.
예를 들어 특정 승객 속성 A가 있어도 체크인 방식 B의 확률이 변하지 않는다면 두 변수는 독립으로 볼 수 있다.
6. 종속 Dependent
반대로 A라는 조건에 따라 B의 확률이 달라진다면 종속 관계라고 한다.
예를 들어:
수하물 없는 승객
셀프 체크인 이용률 = 70%
수하물 2개 이상 승객
셀프 체크인 이용률 = 25%
라면:
수하물 개수와 체크인 방식은 독립이 아니다.
즉:
Bag Count → Check-in Type
과 같은 종속 관계가 존재한다고 볼 수 있다.
공항 여객 데이터에서는 이런 종속 관계가 많이 존재할 가능성이 있다.
7. 결합확률 Joint Probability
결합확률은:
두 조건이 동시에 발생할 확률
을 의미한다.
예를 들어:
20~39세이면서 셀프 체크인을 이용할 확률
이다.
앞선 예에서:
- 전체 승객: 1,000명
- 20~39세이면서 셀프 체크인: 260명
이면:
260 / 1,000 = 26%
이다.
즉 전체 승객 중 26%가:
20~39세 + Self Check-in
이라는 조합을 가진다.
8. 조건부 확률과 결합확률의 관계
조건부 확률과 결합확률은 다음 관계를 가진다.
P(A ∩ B) = P(A) × P(B | A)
예:
P(20~39세) = 0.40
P(Self Check-in | 20~39세) = 0.65
이면:
0.40 × 0.65 = 0.26
즉 26%이다.
이런 계산은 가상 여객의 Passenger Profile을 생성할 때 유용하다.
9. 여객 속성을 각각 독립적으로 랜덤 생성하면 생기는 문제
예를 들어 다음 속성을 모두 개별적으로 랜덤 생성한다고 가정한다.
- Age
- Bag Count
- Check-in Type
- Security Type
- Departure Hall
각 속성의 개별 비율은 맞을 수 있다.
하지만 비현실적인 조합이 만들어질 수 있다.
예:
- 85세
- Bag 4개
- Mobile Check-in
- Self Bag Drop
- 가장 먼 출국장 선택
- 매우 빠른 Walking Speed
각 항목을 따로 보면 가능한 값일 수 있지만, 조합 전체는 현실성이 낮을 수 있다.
즉:
속성별 분포는 맞지만 Passenger Profile 전체는 틀릴 수 있다.
이 문제를 줄이기 위해 조건부 확률이 필요하다.
10. Passenger Profile을 단계적으로 생성하는 방법
가상 여객을 만들 때 다음처럼 순차적으로 생성할 수 있다.
Step 1. 항공편 속성
- Airline
- Route
- Departure Time
- Terminal
↓
Step 2. 여객 기본속성
- Age Group
- Nationality
- Passenger Type
↓
Step 3. 수하물
P(Bag Count | Route, Passenger Type)
↓
Step 4. 체크인 방식
P(Check-in Type | Age, Bag Count, Airline)
↓
Step 5. 출국장 선택
P(Departure Hall | Check-in Location, Congestion, Distance)
↓
Step 6. Service Time
P(Service Time | Passenger Type, Facility Type)
이렇게 생성하면 여객 속성 간 관계를 더 현실적으로 반영할 수 있다.
11. 여객의 심리와 조건부 확률
여객의 심리를 직접 숫자로 표현하기는 어렵다.
대신 심리가 만들어내는 행동을 조건부 확률로 변환할 수 있다.
예를 들어 출발까지 남은 시간을 기준으로 다음처럼 설정할 수 있다.
출발 180분 이상 남음
P(Shopping) = 30%
출발 60분 미만
P(Shopping) = 3%
즉:
P(Shopping | Time-to-Departure > 180min) = 0.30
P(Shopping | Time-to-Departure < 60min) = 0.03
이다.
이렇게 하면:
심리 → 상태 → 행동 확률
로 변환할 수 있다.
12. 혼잡도에 따른 출국장 선택
조건부 확률은 혼잡 반응 행동에도 활용할 수 있다.
예를 들어 DG1과 DG2 두 출국장이 있다고 가정한다.
평상시:
- DG1 = 60%
- DG2 = 40%
하지만 DG1 대기시간이 길어지면:
- DG1 = 35%
- DG2 = 65%
로 바뀔 수 있다.
이를 조건부 확률로 표현하면:
P(DG1 | Queue DG1 < 10min) = 0.60
P(DG1 | Queue DG1 > 15min) = 0.35
이다.
이런 방식은 Queue-responsive Behavior를 표현하는 데 활용할 수 있다.
13. 조건부 확률표 Conditional Probability Table
실무에서는 조건별 확률을 표 형태로 관리할 수 있다.
예:
| Age | Bag | Counter | Self Check-in |
|---|---|---|---|
| 20~39 | 0 | 20% | 80% |
| 20~39 | 1+ | 45% | 55% |
| 40~59 | 0 | 40% | 60% |
| 40~59 | 1+ | 60% | 40% |
| 60+ | 0 | 70% | 30% |
| 60+ | 1+ | 85% | 15% |
이 표를 활용하면 단순한 전체 비율보다 현실적인 여객 생성이 가능하다.
14. 조건을 너무 많이 사용하면 생기는 문제
조건부 확률이 현실적이라고 해서 조건을 무한정 늘리면 안 된다.
예를 들어 다음 조건을 모두 조합한다고 한다.
- Age
- Nationality
- Airline
- Route
- Bag Count
- Time of Day
- Day of Week
- Terminal
조합 수는 매우 빠르게 증가한다.
예:
5 × 10 × 20 × 50 × 4 × 6 × 7 × 2
처럼 수십만 개 이상의 조합이 생길 수 있다.
그러면 특정 조합에 실제 데이터가 거의 없을 수 있다.
15. 표본이 너무 적으면 확률을 믿기 어렵다
예를 들어 다음 조건을 만족하는 승객이 단 3명이라고 가정한다.
- 65세 이상
- 특정 국적
- 특정 항공사
- 오전 6시
- Bag 2개
- T1
- 특정 노선
그중:
- 셀프 체크인 1명
- 카운터 2명
이면 셀프 체크인 비율은 수치상 33.3%이다.
하지만 표본이 3명뿐이므로:
실제 확률이 33.3%라고 판단하기에는 데이터가 너무 적다.
이 문제는 이후 학습할 표본수와 신뢰성 개념과 연결된다.
16. 계층적으로 확률을 적용하는 방법
조건을 너무 세밀하게 나누지 않고 중요도 순으로 적용할 수 있다.
예:
Level 1
Airline + Route
↓
Level 2
Bag Count
↓
Level 3
Age Group
↓
Level 4
Time of Day
데이터가 충분하면 세부 조건을 사용한다.
데이터가 부족하면 상위 수준의 확률로 되돌아간다.
예:
특정 노선 데이터 부족
→ 항공사 평균 사용
항공사 데이터도 부족
→ 전체 평균 사용
이런 방식이 실무적으로 더 안정적이다.
17. 독립으로 처리해도 되는 경우
모든 변수 사이의 관계를 반드시 모델링할 필요는 없다.
예를 들어:
P(B) = 30%
이고
P(B | A) = 31%
라면 A 조건이 있어도 B의 확률이 거의 변하지 않는다.
이 경우 실무적으로는 독립으로 처리할 수 있다.
반대로:
P(B) = 30%
P(B | A) = 70%
라면 A가 B에 큰 영향을 준다고 볼 수 있다.
이 경우 조건부 관계를 모델에 반영할 가치가 크다.
18. 베이즈 정리 Bayes' Theorem
베이즈 정리는:
결과를 보고 원인의 확률을 역으로 추정하는 방법
이다.
예를 들어:
셀프 체크인을 한 승객이 있다.
이 승객이 20~39세일 확률은 얼마인가?
라는 질문이다.
우리가 알고 있는 것이:
P(Self Check-in | Age 20~39)
이고,
궁금한 것이:
P(Age 20~39 | Self Check-in)
이라면 방향이 반대이다.
베이즈 정리는 이런 관계를 역으로 계산하는 방법이다.
이번 단계에서는 공식을 외우기보다는:
관측된 행동에서 어떤 유형의 여객이었을 가능성이 높은지 역으로 추정할 수 있다.
정도로 이해하면 된다.
19. CAST 프로젝트에서 베이즈 사고방식의 활용
실제 공항 데이터에서는 승객의 행동 결과는 확인할 수 있지만 그 행동의 원인은 직접 관측되지 않을 수 있다.
예:
특정 출국장을 선택했다.
는 것은 알지만 왜 선택했는지는 모를 수 있다.
가능한 원인은:
- 거리가 가까워서
- 대기열이 짧아서
- 직원 안내를 받아서
- 원래 익숙한 출국장이어서
등 다양하다.
이때 여러 속성과 과거 데이터를 이용해:
어떤 Passenger Type에서 해당 행동이 더 자주 나타났는가?
를 분석하는 데 베이즈적 사고방식을 활용할 수 있다.
20. 상관관계와 조건부 확률의 차이
두 개념은 구분해야 한다.
상관관계
수하물 수가 많을수록 체크인 시간이 길어지는 경향이 있다.
조건부 확률
Bag 2개 이상일 때 Service Time이 120초를 초과할 확률이 65%이다.
상관관계는:
두 변수가 함께 움직이는 경향
이고,
조건부 확률은:
특정 조건이 있을 때 사건이 발생할 가능성
이다.
상관관계는 다음 강의에서 자세히 학습한다.
21. CAST Passenger Scenario 예시
가상의 승객 한 명을 생성한다고 가정한다.
① Airline
KE
② Route
ICN → LAX
③ Age
42세
④ Bag Count
노선과 Passenger Type을 기준으로:
P(Bag=2) = 40%
→ Bag 2개 생성
⑤ Check-in Type
P(Counter | Bag=2, Age=40~59) = 65%
→ Counter 선택
⑥ Reporting Time
해당 항공편의 Show-up Distribution 적용
→ 출발 140분 전에 공항 출현
⑦ Departure Hall
현재 위치와 출국장 혼잡도를 고려한 조건부 확률 적용
→ DG2 선택
⑧ Service Time
Passenger Type과 Counter 유형에 맞는 분포 적용
→ 128초 생성
이렇게 하나의 가상 Passenger Scenario를 만들 수 있다.
모형설계서에서도 여객 특성 데이터를 바탕으로 Passenger Scenario를 개발하고, 이를 이용해 가상 여객을 생성하도록 되어 있다. :chatgpt-content-reference{index="2"} :chatgpt-content-reference{index="3"}
22. CAST 프로젝트 적용 흐름
조건부 확률을 실제 프로젝트 흐름에 연결하면 다음과 같다.
실제 여객 데이터 수집
↓
여객 속성별 비율 분석
↓
속성 간 관계 분석
↓
독립 / 종속 여부 판단
↓
조건부 확률표 작성
↓
Passenger Profile 정의
↓
CAST 가상 여객 생성
↓
시뮬레이션 수행
↓
실제 여객 흐름과 비교
↓
확률값 및 분포 Calibration
이 구조를 사용하면 단순한 전체 비율보다 현실적인 Passenger Model을 만들 수 있다.
23. 이번 강의 핵심 용어
| 용어 | 의미 | CAST 적용 |
|---|---|---|
| Conditional Probability | 특정 조건에서 사건이 발생할 확률 | 여객 특성별 행동 |
| Independent | 두 변수가 서로 영향을 주지 않음 | 모델 단순화 |
| Dependent | 한 변수에 따라 다른 변수의 확률이 변함 | 행동관계 모델링 |
| Joint Probability | 두 사건이 동시에 발생할 확률 | Passenger Profile |
| Conditional Probability Table | 조건별 확률을 표 형태로 관리 | 입력 파라미터 |
| Bayes' Theorem | 결과에서 원인을 역으로 추정 | 행동 원인 분석 |
| Passenger Profile | 여러 속성이 결합된 여객 유형 | 가상 여객 생성 |
24. 핵심 정리
이번 강의에서 가장 중요한 내용은 다음과 같다.
첫째,
전체 평균 확률 하나만으로 모든 여객의 행동을 설명하면 안 된다.
둘째,
여객 속성에 따라 행동 확률이 달라지면 조건부 확률로 표현하는 것이 좋다.
셋째,
여객 속성을 각각 독립적으로 랜덤 생성하면 개별 분포는 맞아도 비현실적인 Passenger Profile이 만들어질 수 있다.
넷째,
실제 데이터에서 확인된 중요한 종속 관계만 선별하여 모델에 반영해야 한다.
다섯째,
조건을 지나치게 세분화하면 데이터 부족 문제가 발생하므로 표본수도 함께 고려해야 한다.
이번 강의의 핵심 원칙은 다음과 같다.
여객 속성을 각각 따로 랜덤 생성하지 말고, 실제 데이터에서 확인된 관계는 조건부 확률로 연결한다.
이 원칙은 향후 여객 행동모형을 현실적으로 만드는 데 매우 중요하다.
다음 학습
5강: 상관관계·인과관계·회귀분석
다음 내용에서는:
- Correlation
- Positive / Negative Correlation
- Causation
- Confounding Variable
- Regression
- Regression Coefficient
- R²
- Residual
을 학습한다.
특히 다음 질문을 데이터로 분석하는 방법을 다룬다.
- 여객 수가 증가하면 대기시간은 얼마나 증가하는가?
- 보안검색대 수를 늘리면 대기시간은 얼마나 줄어드는가?
- Service Time 증가가 Queue Length에 얼마나 영향을 주는가?
- 실제값과 CAST 예측값의 차이는 어떤 패턴을 가지는가?
이를 통해 통계분석으로 관계를 찾고, CAST 시뮬레이션으로 What-if를 실험하는 구조를 이해하는 것이 다음 단계의 목표다.