- 확률론적 사고(Stochastic Thinking)
- 시뮬레이션 모델(Simulation Model)
- random.choice 함수
Chapter 4. Stochastic Thinking 강의를 듣고 정리한 내용입니다.
확률론적 사고(Stochastic Thinking)
- 세계를 본질적으로 예측가능할 수 없다고 취급하는 것이 나을 수 있음
- 세상에 불확실성(무작위성)이 너무많아 이해하기 어려움
- 무작위성을 위해 확률론적 사고를 할 필요성이 있음
- 확률에 대한 3가지 기본 사실
- 확률은 항상 0~1
- 분모 : 가능한 모든 사건의 수
- 분자 : 부분 집합인 관심을 갖는 사건
- 어떤 사건이 일어날 확률이 p라면 일어나지 않을 확률은 1-p
- 어떤 것이 일어날 확률을 계산할때 그것이 일어나지않을 확률을 구하는게 더 쉬움
- 중요한 법칙(곱의 법칙)
- 사건이 서로 독립적이라면 모든 사건이 일어날 확률은 각 사건이 일어날 확률을 곱한 것과 같음
- A가 알어날 확률이 0.5이고 B가 일어날 확률이 0.4라면 A,B가 일어날 확률은 0.2
- 그러나 이런 법칙은 독립적인 경우에만 적용
- 하나의 결과가 다른 결과에 영향을 주지 않는다면 두 사건은 독립적
- 사람들은 자주 독립성이 없는 경우에도 독립적임을 가정하고 확률을 계산하니 주의가 필요
시뮬레이션 모델(Simulation Model)
- 시스템이 가능한 행동에 대한 정보를 제공하는 계산을 나타내는 프로그램
- 시뮬레이션을 작성하고, 그 사건이 드물게 발생하면 추정된 확률을 믿기 전에 더 많은 시도를 하는 것이 좋음
- 항상 실제 확률과 헷갈리지 않도록 추정된 확률이라는 것을 알고 있어야 함
- 시뮬레이션을 사용하는 이유는?
- 복잡한 확률 계산을 하는 대신 확률적인 질문에 대한 답을 얻기 위해 사용
- 초반에 본 최적화모델과 다른 점
- 최적화 모델은 규범적
- 어떻게 배낭에서 최대의 가치를 얻는지
- 어떻게 A에서 B로 최단 거리로 가는지
- 결과에 도달하는 방법을 말해줌
- 반면 시뮬레이션 모델은
- 이러한 결과가 나타난다는 것을 말해줌
- 어떻게 그 일을 일어나게 해주는지는 알 수 없음
- 현실의 근사치일 뿐
- 수학적으로 접근하기 힘든 문제를 풀 경우 시뮬레이션을 사용하면 유용
- 다양한 조건을 쉽게 조절하면서 진행할 수 있기 때문에 잘 사용함
random.choice 함수
- 실제로 무작위적이지 않음. 의사 난수(pseudo random)을 생성함
- 연속된 수에서 한 숫자가 다음 숫자를 생성하는 알고리즘
- 컴퓨터의 클럭을 가지고 있음
- random.seed를 사용하여 같은 시작점에 대해 같은 무작위적인 값을 얻음
- 해당 원소 중 하나를 추출
- p 파라미터에 확률값을 넣어서 사용할 수 있음
- ex) listed = [‘랜덤’, ‘값’, ‘생성’]
- random.choice(listed, p=[0.7, 0.1, 0.1]
- 70%의 확률로 ‘랜덤’이라는 값 선택
- ex) listed = [‘랜덤’, ‘값’, ‘생성’]
[정리]
- 드물게 발생하는 사건의 좋은 추정을 얻기 위해서는 많은 시도가 필요하다. 충분한 시도가 얼마인지 아는법은 추후에 다룰 예정
- 표본으로부터 추정한 확률과 실제 확률을 혼동하지 말 것
- 완벽히 정형화된 답을 구할 수 있기 때문에, 시뮬레이션을 통해 답을 구할 필요는 없음. 그러나 이에 대한 많은 반례를 다룰 예정
- 하지만 시뮬레이션은 대부분 유용함
다음강의 : Chapter 5. Random Walks