조건부 확률

프로그래머를 위한 조건부 확률 개념

조건부 확률(Conditional Probability) 은 어떤 사건이 발생했을 때, 다른 특정 사건이 발생할 확률을 의미한다. 즉, 사건 A가 이미 발생한 상황에서 사건 B가 발생할 확률을 P(B|A) 로 표기하며, 이를 "A 사건이 발생한 조건에서 B 사건이 발생할 확률"이라고 한다.

예제: 학생과 노트북 소지 확률

한 학급에 남학생 5명, 여학생 5명이 있다고 가정하자. 이 중:

  • 남학생 2명, 여학생 3명이 노트북을 가지고 있다.

전체 학생 중에서 노트북을 가진 학생을 뽑을 확률

  • 전체 학생 수 = 10명
  • 노트북을 가진 학생 수 = 5명 (남학생 2명 + 여학생 3명)
  • 따라서, P(노트북) = 5/10 = 1/2

조건부 확률 계산

조건부 확률을 계산하기 위해 특정 조건(남학생 또는 여학생)을 고려한다.

  • "남학생(A)일 경우, 노트북을 가지고 있을 확률 P(B|A)"
    • 남학생 중 노트북을 가지고 있는 학생 = 2명
    • 전체 남학생 수 = 5명
    • P(B|A) = 2/5 (즉, 남학생일 때 노트북을 가지고 있을 확률은 40%)
  • "여학생(A)일 경우, 노트북을 가지고 있을 확률 P(B|A)"
    • 여학생 중 노트북을 가지고 있는 학생 = 3명
    • 전체 여학생 수 = 5명
    • P(B|A) = 3/5 (즉, 여학생일 때 노트북을 가지고 있을 확률은 60%)

프로그래밍으로 조건부 확률 계산하기

이제 이를 Python 코드로 구현해 보자.

# 조건부 확률 계산 함수
def conditional_probability(event_count, condition_count):
    """ 주어진 조건에서 특정 사건이 발생할 확률을 계산 """
    if condition_count == 0:
        return 0  # 0으로 나누는 오류 방지
    return event_count / condition_count

# 데이터 정의
num_students = 10
num_male = 5
num_female = 5
num_male_with_laptop = 2
num_female_with_laptop = 3

# 확률 계산
p_laptop_given_male = conditional_probability(num_male_with_laptop, num_male)
p_laptop_given_female = conditional_probability(num_female_with_laptop, num_female)

# 결과 출력
print(f"P(노트북 | 남학생) = {p_laptop_given_male:.2f}")
print(f"P(노트북 | 여학생) = {p_laptop_given_female:.2f}")

실행 결과:

P(노트북 | 남학생) = 0.40
P(노트북 | 여학생) = 0.60

조건부 확률의 활용

조건부 확률은 추천 시스템, 스팸 필터링, 베이지안 통계, 강화학습 등에서 널리 사용된다. 특히 강화학습에서는 특정 상태(State)에서 특정 행동(Action)을 했을 때, 원하는 보상(Reward)을 받을 확률을 계산하는 데 핵심적인 역할을 한다.

댓글 쓰기

Please Select Embedded Mode To Show The Comment System.*

다음 이전