[MIT] Data Science - 4. Stochastic Thinking
Data Science, ML/MIT- Introduction to Data Science

[MIT] Data Science - 4. Stochastic Thinking

Introduction to Computational Thinking and Data Science
(6.0002, Fall 2016)

 

Introduction to Computational Thinking and Data Science

6.0002 is the continuation of 6.0001 Introduction to Computer Science and Programming in Python and is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in sol

ocw.mit.edu

MIT 공대의 "Introduction to Computational Thinking and Data Science"(6.0002, Fall 2016) 강의 정리 자료

MIT6_0002F16_lec4.pdf
0.51MB

 

핵심 키워드

  • 확률론적 사고(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. 드물게 발생하는 사건의 좋은 추정을 얻기 위해선 많은 시도가 필요
      2. 항상 실제 확률과 헷갈리지 않도록 추정된 확률이라는 것을 알고 있어야 함
  • 시뮬레이션을 사용하는 이유는?
    • 복잡한 확률 계산을 하는 대신 확률적인 질문에 대한 답을 얻기 위해 시뮬레이션을 사용하는 주된 이유
  • 초반에 본 최적화 모델(1~3강)과 다른 점
    • 최적화 모델은 규범적
    • 어떻게 배낭에서 최대의 가치를 얻는지
    • 어떻게 A에서 B로 가는 최단 거리로 가는지
    • 반면 시뮬레이션 모델은
      • 이런 결과가 나타난다는 것을 말해줌
      • 어떻게 그 일을 일어나게 해주는지 말해주지 않음
      • 현실의 근사치일뿐임
      • 수학적으로 접근하기 힘든 문제를 풀 경우 시뮬레이션을 사용하면 유용
      • 다양한 조건을 쉽게 조절하면서 진행할 수 있기 때문에 잘 사용함

 

random.choice 함수

  • 실제로 무작위적이지 않음. 의사 난수라는 것을 생성함(pseudo random)
    • 연속된 수에서 한 숫자가 다음 숫자를 생성하는 알고리즘이 있음(seed)
    • 컴퓨터의 클럭을 가지고 읽음
    • random.seed를 사용해 같은 시작점에 대해 같은 무작위적인 값을 얻음
  • 해당 원소 중 하나를 추출
  • p 파라미터에 확률값을 넣어서 사용할 수 있음
menu = ['라면','짜장면','국밥']
random.choice(menu)
>>> '라면' # 33%의 확률로 이 값이 선택 

menu2 = ['돈까스','초밥','한식']
random.choice(menu2, p=[0.7, 0.1, 0.1])
random.choice(menu2)
>>> '돈까스' # 70%의 확률로 이 값이 선택

 

실습 코드

 

MIT_Reference_code.zip

 

drive.google.com

 

728x90