MIT Data Science 강의 Chapter 4. Stochastic Thinking에 오신 여러분 환영합니다!
이번 강의에선 확률론적 사고(Stochastic Thinking)에 대한 내용을 공부합니다.
이와 관련해서 시뮬레이션에 대해 학습합니다
핵심 키워드
- 확률론적 사고(Stochastic Thinking)
- 시뮬레이션 모델(Simulation Model)
- random.choice 함수
학습하기
학습 내용
확률론적 사고(Stochastic Thinking)
- 세계를 본질적으로 예측가능할 수 없다고 취급하는 것이 나을 수 있음
- 세상엔 불확실성(무작위성)이 너무 많아 이해하기 어려움
- 무작위성을 위해 확률론적 사고를 할 필요성이 있음
- 확률에 대한 3가지 기본 사실
- 확률은 항상 0 ~ 1
- 분모 : 가능한 모든 사건의 수, 분자 : 부분 집합인 관심을 갖는 사건
- 어떤 사건이 일어날 확률이 p라면 일어나지 않을 확률은 1-p
- 중요한 법칙(곱의 법칙)
- 사건이 서로 독립적이라면 모든 사건이 일어날 확률은 각 사건이 일어날 확률을 곱한 것과 같음
- A가 일어날 확률이 0.5고 B가 일어날 확률이 0.4라면 A,B가 일어날 확률은 0.2
- 그러나 이런 법칙은 독립적인 경우에만 적용
- 하나의 결과가 다른 결과에 영향을 주지 않다면 두 사건은 독립적
- 사람들은 자주 독립성이 없는 경우에도 독립적임을 가정하고 확률을 계산하니 주의가 필요
시뮬레이션 모델(Simulation Model)
- 시스템이 가능한 행동에 대한 정보를 제공하는 계산을 나타내는 프로그램
- 시뮬레이션을 작성하고, 그 사건이 드물게 발생하면 추정된 확률을 믿기 전에 더 많은 시도를 하는 것이 좋음
- 드물게 발생하는 사건의 좋은 추정을 얻기 위해선 많은 시도가 필요
- 항상 실제 확률과 헷갈리지 않도록 추정된 확률이라는 것을 알고 있어야 함
- 시뮬레이션을 사용하는 이유는?
- 복잡한 확률 계산을 하는 대신 확률적인 질문에 대한 답을 얻기 위해 시뮬레이션을 사용하는 주된 이유
- 초반에 본 최적화 모델(1~3강)과 다른 점
- 최적화 모델은 규범적
- 어떻게 배낭에서 최대의 가치를 얻는지
- 어떻게 A에서 B로 가는 최단 거리로 가는지
- 반면 시뮬레이션 모델은
- 이런 결과가 나타난다는 것을 말해줌
- 어떻게 그 일을 일어나게 해주는지 말해주지 않음
- 현실의 근사치일뿐임
- 수학적으로 접근하기 힘든 문제를 풀 경우 시뮬레이션을 사용하면 유용
- 다양한 조건을 쉽게 조절하면서 진행할 수 있기 때문에 잘 사용함
random.choice 함수
- 실제로 무작위적이지 않음. 의사 난수라는 것을 생성함(pseudo random)
- 연속된 수에서 한 숫자가 다음 숫자를 생성하는 알고리즘이 있음(seed)
- 컴퓨터의 클럭을 가지고 읽음
- random.seed를 사용해 같은 시작점에 대해 같은 무작위적인 값을 얻음
- 해당 원소 중 하나를 추출
- p 파라미터에 확률값을 넣어서 사용할 수 있음
menu = ['라면','짜장면','국밥']
random.choice(menu)
>>> '라면'
menu2 = ['돈까스','초밥','한식']
random.choice(menu2, p=[0.7, 0.1, 0.1])
random.choice(menu2)
>>> '돈까스'