• 확률론적 사고(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%의 확률로 ‘랜덤’이라는 값 선택


[정리]

  1. 드물게 발생하는 사건의 좋은 추정을 얻기 위해서는 많은 시도가 필요하다. 충분한 시도가 얼마인지 아는법은 추후에 다룰 예정
  2. 표본으로부터 추정한 확률과 실제 확률을 혼동하지 말 것
  3. 완벽히 정형화된 답을 구할 수 있기 때문에, 시뮬레이션을 통해 답을 구할 필요는 없음. 그러나 이에 대한 많은 반례를 다룰 예정
    • 하지만 시뮬레이션은 대부분 유용함


다음강의 : Chapter 5. Random Walks