상세 컨텐츠

본문 제목

The RED : 우버처럼 하는 머신러닝 의사결정 by 정종빈 (불확실성과 데이터 - 소개 및 빈도주의 통계)

일을 하고

by emje 2023. 3. 27. 01:15

본문

Part 1 소개: 강사 및 강의 소개

 

[강의 목적]
데이터를 활용한 의사결정의 다양한 접근 방법
불확실성(확률/통계), 계량, 머신러닝, 인과관계분석

예제를 중심으로 실무에 도움이 되게
직관적인 이해와 활용에 초점

[강의 개요]
1부. 불확실성과 데이터
의사결정 모형

불확실성 계량화 전략

- 빈도주의 (Frequentist)

- 베이지안

최적 의사결정


2부. ML 예측과 인과관계 분석
ML 예측모형 기초 *의사결정의 측면에서 직관적으로, 머신러닝 best practice들이 왜 존재하는지...
의사결정과 인과관계 분석

[선수 지식]
확률 분포에 대한 기본적인 이해 
이항분포, 정규분포, 베타분포...?
*중고등학교 때 공부한 정도면 충분하다! (과연...ㅠ)

수리적 코딩 (e.g., R, numpy, julia)에 대한 기초 지식
강의에서는 python/numpy로 실습
*강의에서 코딩 실습을 할 건데... (!_!)

호기심
속 시원한 해법보다는 답 없는 문제 제기
*데이터를 활용했을 때의 궁극적인 문제를 해결할 수 있을까?

 

*스탠포드에서 들었던 수업들 기반...

 

 

Part 2-1. 불확실성과 데이터 - 소개

✔️ 2.01 예제 소개 및 강의 개요

Q. 아이폰일까 안드로이드일까?

지하철 내 승객 중 10명이 핸드폰을 보고 있음
10명 중 4명이 아이폰, 6명이 안드로이드 유저
마침, 폰을 아직 안 꺼낸 승객.
이 승객의 폰이 아이폰일지, 안드로이드일지?
A-1. 확률, 두 가지 경우의 수니까 50% 확률? (like 동전 앞면/뒷면)
A-2. 안드로이드가 이미 60%니까 안드로이드?
A-3. 시장 점유율을 생각해보면...?
A-4. 신촌역에서 탄 학생인 것 같으니까...?
....
불확실성에 의해 가치 판단을 해야할 때 (내가 돈을 잃을수도, 얻을수도)
실무에서도 이런 형식의 틀에 맞춰진 문제들이 많음


1부. 강의 목적 및 개요 (불확실성과 데이터)

✅ 체계적이고 일반적인 의사결정 모형 소개
✅ 불확실성을 계량화하는 두 가지 접근법
- 빈도주의(frequentist) 통계 Estimated, estimator, estimate, 신뢰구간, bootstrap
- 베이지안(Bayesian) 확률 Prior, likelihood, posterior (손계산 > 복잡한 모델링)

✔️ 2.02 의사 결정 모델

기초 모델링
1. 의사결정의 3요소

1-1. 선택지 (Alternatives) 의사결정을 할 대상이 있어야 함
예제 기준, a. 내기를 할까? (한다/안한다) b. 어디에 걸까? (안드로이드/아이폰)

1-2. 불확실성/정보 (Uncertainty/Information)
불확실한 것이 없다면 의사결정을 할 것이 없음. A를 할까 B를 할까 고민할 필요가 없음.
정확하지 않은 불확실한 부분들이 있고 이를 cover할 수 있게하는 것이 정보.
예제 기준, a. 불확실성: 안드로이드? 아이폰? b. 정보: 10명 중 6명은 안드로이드...

 

1-3. 가치/선호 (Value/Preference)
선택의 결과와 깊이 연관되어 있음,
내가 어떤 행동을 했을 때 나타나는 결과들을 내가 얼마나 좋아하고 싫어하는지를 계량화할 수 있어야 함. 
예제 기준, 나타날 수 있는 결과 3가지. a) 안해_0원, b) 맞춤_+1만원, c)틀림_-1만원

 

의사결정의 3요소 ➡️ 의사결정 나무 (decision tree)

(2) 의사결정 나무 만들기 (decision tree)
선택지: 네모, 불확실성: 원, 가치: 다이아몬드

안드로이드에 걸었을 때 50%의 확률로 +만원, 50%의 확률로 -만원 = 0원

아이폰에 걸었을 때 50%의 확률로 +만원, 50%의 확률로 -만원 = 0원

 



(3) 의사결정 나무 계산
불확실성/정보: 각 경우 빈도/확률은?

 

내기를 했을 때의 가치 0 = max(0,0)

 

 

연습문제
실제폰이 안드로이드 확률을  6/10 = 60%로 본다면?
안드로이드에 건다면 0.6*1만원+0.4*(-1만원)=0.2만원, 2천원
아이폰에 건다면 0.6*(-1만원)+0.4*1만원=-0.2만원, -2천원
내기를 하면 max 2천원

내기를 안하는 것과는 2천원의 차이가 발생함.
> 내기를 하면 2천원의 기대가치가 있고, 안드로이드에 걸면 2천원이고 아이폰에 걸면 -2천원.
>> 내기를 할거고 안드로이드에 걸거야.


붙임

의사결정의 3요소가 있다고 했는데, 학문적으로는 6요소로 봄.
1) 선택지 (Alternative) 2) 불확실성/정보  (Uncertainty/Information) 3) 가치/선호 (Value/Preference)
4) Decision maker "나"
5) Frame (지금 이 지하철, 새로 탄 저 사람, 핸드폰 OS, 내기의 규칙...)
*어떤 걸 기본으로 하고 논외로 할지 규정하는 것
6) Logic 수학적 "기대값의 극대화" 논리
의사결정나무 (decision tree)에 반영되어 있음
*실무에서는 주로 1~3을 사용함. 


 

 

✔️ 2.03 심화 연습 문제풀이

"몬티 홀 문제" 의사결정 모델링 Monty Hall problem

세 개의 문 중에 하나를 선택하여 문 뒤에 있는 선물을 가질 수 있는 게임쇼 참가

한 문 뒤에는 자동차가 있고, 나머지 두 문 뒤에는 꽝

세 개 문 중 처음 하나를 선택

게임쇼 진행자가 나머지 두 개의 문 중 하나를 열어 꽝임을 보여준 후 "처음 선택을 바꿀 기회를 주겠다"고 함

> 이 상황을 의사결정 모형으로 표현해 보시오.

 

의사결정의 3요소
선택지
- 선택한 문을 바꿀까? (바꾼다/안 바꾼다)
불확실성/정보
- 처음 선택이 틀렸을까? *보다 구체적인 불확실성은 베이지안에서...
가치/선호

1. 자동차: + 
2. 꽝: 0

 

의사결정 나무
바꾸는 경우 2/3의 자동차 vs 바꾸지 않는 경우 1/3의 자동차
: 처음 선택이 꽝일 확률이 더 높기 때문에 (자동차를 뽑을 확률이 1/3 이므로)
: 바꾸는 것이 더 좋음... 싱기허네...

 

2-2. 불확실성과 데이터 - 빈도주의 통계 

체계적이고 일반적인 의사결정 모형 소개: 의사결정 3요소와 나무

불확실성을 계량화하는 두 가지 접근법
- 빈도주의 (frequentist) 통계
- 베이지안 확률

 

✔️ 2.04 빈도주의와 통계 확률 모형

불확실성을 계량적으로 표현하는 전략 : 확률모형

절대적 진리: 불확실성 無, 관찰이 불가능할 수도 있음
a. 대한민국 아이폰 유저 비중
b. 만 31세 국민 키의 평균
c. 동전을 무한히 던졌을 때 뒷면 대비 앞면이 나오는 빈도 (무한으로 수렴할 때...) 빈도주의의 중요한 점은 '절대적 진리'에서 출발한다는 것!

관심변수: 표현하고자하는 불확실성

관찰된 정보: '절대적 진리'와 연관된 현상 *절대적 진리로부터 파생된 정보
a. 지하철 같은 칸에서 폰을 꺼낸 사람/아이폰을 꺼낸 사람의 수
b. 우리 팀 31세 8명의 키
c. 동전 10번을 던져 앞면이 나온 횟수

 

추정량/추정치: 관찰된 정보를 이용해 절대적 진리를 추정
a. 아이폰 꺼낸 사람 수 / 폰 꺼낸 사람 수
b. 8명 키의 평균
c. 앞면 나온 횟수 / 10

 

절대적 진리> 관찰된 정보 > 추정량/추정치

 

*지하철 예제. 새로 관찰된 폰이 안드로이드일 확률 (p)?
관찰된 정보
- 핸드폰을 꺼낸 사람 10명 중, 안드로이드 6명, 4명 아이폰

빈도주의에서 가장 중요한 질문

"어쩌다 이 데이터를 보게 되었을까?" > 새롭게 볼 데이터에 대한 이해/기대 계량화할 수 있음

- 절대적 진리에는 불확실성이 없음. '확률'과 '불확실성'은 우리가 관찰하게 된 데이터를 통해 유입 *핵심
- 주로 현실적인 제약 (데이터의 부재, 문제의 복잡도 등)에 의해 상당히 단순화
- 대체로 무리한 가정을 많이 요구하는 단순한 모형이 실증적으로는 유용한 경우가 많음


*현실적 단순모형
- 지하철 칸을 탄 전체 인구
- 그 중 안드로이드 유저수
- p= 안드로이드 유저수/전체 인원수 *지하철(해당 칸을)을 탄 


*사실적 복잡모형
- 각 역에서 지하철을 탄 인구
- 그 중 나이 성별, ...에 따른 안드로이드 유저수
- 안드로이드 유저가 아이폰 유저 대비 지하철에서 폰을 꺼내는 경우의 수

 

빈도주의자의 확률 = 여러 번 반복했을 때, 발생하는 빈도의 비중
동전을 던져 앞면이 나올 "확률"
주사위를 던져 6이 나올 "확률"

 

 

관심변수 (p)
추정량 estimator, p의 hat을 붙여서 표현
p hat은 ? 0.6
*단순한 방법인 것 같지만 수학적으로 최적 추정치라는 것을 증명할 수 있음...!

*그런데 10명의 데이터로 계산한 이 0.6은 과연 얼마나 정확할까?

e.g 동전 10번 던져서 앞면 6번 나왔을 때, 또 10번을 던지면 앞면이 얼마나 나올까?

그럼 몇 번이나 이 실험을 진행하면 정확성이 높아질까?

> 빈도주의와 평행우주론: 빈도주의 통계에서 불확실성 계량 전략에 관하여.

 


✔️ 2.05 빈도주의와 평행우주론 (표본분포)

빈도주의 통계에서의 불확실성 계량 전략에 관하여


여러 번 했을 때 어떻게 되는지 비중을 말하는 것.

10명의 데이터를 계산해서 0.6의 p가 나왔을 때, 얼마나 정확한 것일까?

여러 번 반복했을 때 성과가 어떨까?

 

p: 관측 불가능한 미지의 숫자 (전수 조사를 하면 얻을 수 있는 절대적 진리)

p^: 관측 가능한 분포의 한 표본 (가지고 있는 정보를 기반으로 추정하는 것)

 

 

여러 개의 평행우주에서 똑같은 날을 경험했다고 가정하자, 
우주마다 다른 10명을 기준으로 봤을 때 안드로이드가 6명/8명/1명/9명일 수도...
추정을 하는 전략을 똑같은데, 데이터가 발생하는 과정이 불확실하기 때문에 추정치의 숫자가 달라질 수 있음

> 수많은 평행우주에 걸쳐서 추정치는 어떻게 달라질까? 

> 표본분포! 빈도주의(frequentist)의 꽃

 

✔️ 2.06 표본분포 코딩 실습

Google Colab에서 진행 numpy와 seaborn이 설치된 환경 어디든 실습 가능
*python을 활용하겠으나, 다른 언어가 더 편하다면 그래도 상관 없음


빈도주의는 절대적인 진리가 존재한다,
라스베이거스에서 사용하는 동전이 있고 앞면이 나올 확률이 q라고 했을 때 q=0.2라면
- q는 실질적으로는 알 수 없고, 마음껏 던져볼 수도 없음
- 누군가 와서 10번을 던져보라고 가정할 때

성공할 확률이 정해져있는 이벤트를 계산할 때 '이항분포' binomial을 사용해서,
한 번을 시행(동전을 한 번 던져보는 것을) q의 확률로 10번(size=10)을 해본다.
관측치(obesrvation, obs) 를 저장

q_hat = 은 이 값들의 평균을 구하는 것, = obs.sum()/n, =obs.mean()

q값이 일정하고 10회가 바꾸지 않았지만 관측치가 바뀜! (0.3도 나오고 0.1도 나옴)

 

 

 

 

100개의 평행우주에서, q_hat을 여러 개로 만들어보기 > q_hats
그리고 하나의 어레이로 만들어보기 np.arry
아까했던 실험을 (obs) 100번 반복하고 추정치를 매번 계산해보기.

각각의 평행우주(100개)에서 10번씩 동전을 던지고 그 평균을 구해보는 것 > 100개의 추정치가 나옴

추정치 estimate이 바뀜!
평행우주에서 나온 추정치 값, estimate들을 histogram으로 본다면?

> 이걸 표본분표 (sampling distribution) 이라고 함.

*현실적으로는 이것을 관찰할 수 없고 코딩 시뮬레이션을 통해 관찰한 척 하는 것임.
이론적으로 평행우주에서 똑같은 실험을 여러 번 반복했을 수 있었더라면 어땠을까? 

 

 

(갑작...) 코딩테스트에서 합격하고 싶다면 코딩을 위처럼 하면 안되고ㅋㅋㅋㅋㅋ

sns.histplot(np.random.binomial(1, q, size=(b, n)) .mean(axis=1))
각 행의 평균을 구해서 추정치를 구할거니까.

 

 

n번의 관측치를 b개의 평행우주에서 진행하는 실제값은 q인 함수를 만들어보자.

def plot_histogram(q, n, b):
plot_histogram (q=0.2, n=10, b=100)

평행우주가 아주 많아지면 어떻게 될까?
실제 q값은 0.2인데 관측치는 0에서 0.4까지 넓게 나왔음,
b를 더 많이 하면 0.2에 가깝게 모일까?
헉! b=1000 했더니 값의 범위가 더 넓어졌음. 

 

데이터가 많아지면 통계가 좋아져야 하는데, 왜?

평행우주가 많아졌다고 해서 표본분포의 성질이 달라지지 않음.
추정치가 실제값에 가까워지고 더 예측을 잘 하려면?

평행우주의 수를 늘리는 것이 아닌 실험 수를 올려야 함 즉 n=10이 아닌 n=100으로...!

각 우주마다 시행횟수를 늘려보면 실제값에 몰리는 수준이 높아짐

각 우주에서 관측하는 데이터가 많아지니까 추정지가 실제값에 가깝게 모여진다

표본분포를 말할 때,n=1000인 이 분포란 n=10의 분포와는 엄연히 다른 분포임. 

q가 같고 평행우주의 수(b)가 같더라도,

표본분포는 관찰하는 데이터가 몇 개냐 를 결정짓는 n이 제일 중요함.

 

*정리.
표본분포의 불확실성(분산)은 표본의 크기(n)의 영향
표준오차(standard error) = 표본분포의 표준편차

✔️ 2.07 표본분포 활용

[추정치가 실제값에 얼마나 가까울까?]
- 실제값(p)는 알 수 없지만, 변치않는 진리, 불확실 X : 어느 우주에 있든지, 항상 같은 값
*실제값 p는 우리가 알 수 없는 변치않는 절대적 진리, (e.g 지하철 칸에 있는 사람들을 전수조사하면 알 수 있는 안드로이드 유저 비율)
- 불확실한 건 추정량표본분포
어느 우주에서 왔느냐에 따라 값이 다름 

^p-p 
95% 신뢰구간
95%의 확신을 가지고, "아 실제값이 이 범위 안에는 있겠다" ... 싶은 구간
= 실제값이 이론적으로 표본분포의 95% 확률 범위 안에 있도록 설정
같은 신뢰도라면, 짧은 구간을 선호

*100개 중 95개는 그 구간 안에 있더라... (5개는 그 밖에 있더라도)
95% 확률 밀도안에 떨어지도록 하는 방법

확률분포가 95%인 경우는 많음, 동일한 신뢰도라면 구간이 짧은 것이 좋음

100% 신뢰구간은?
이 문제에 있어서 100% 신뢰를 가지고 실제 p값은 여기에 떨어질거야 > 0과 1사이. 이건 100%
어느 우주에서든지 다 동일한 것, 신뢰구간은 arbitory하다는 것을 알고 있어야 함.

 

 

표본분포가 정규분포를 따른다고 가정하기!

표본분포의 표준편차(표준오차)도 추정해야 함

 

 

현실적으로는 평행우주를 관찰할 수 없는데...

 

[두 가지 접근법]

#1 표본분포에 대한 수학적 분석 및 증명 (전통 통계)
- e.g 모든 '평균'값은 관측 수가 증가하면 정규분포로 수렴
- 데이터에 대한 가정과 추정량이 복잡해질수록 비현실적 난이도
*특이한 추정량이거나, 평균처럼 더하는 것이 아닐 때 생각보다 수학적으로 분석/증명하기 어려움
**최근 30년 사이에는 그래서...
> 다루지 않음!

#2 컴퓨터 시뮬레이션(bootstrap) 표본분포 자체를 시뮬레이션 함
- 광범위하게 적용 가능
- 전통적 분석 방법에 비해 엄청나게 느림
*수학적인 분석은 결국 수식 하나, 수식 하나는 컴퓨터에 쳐서 한 번의 계산을 통해서 얻을 수 있음 (CPU 1 cylce, 몇 cycle...) 그에 비해서 bootstrap은 시뮬레이션이므로 매우 느림. 이론적인 증명보다는 관측한 데이터에 의존하기 때문에...
- 실제 관측한 데이터의 퀄리티에 영향을 크게 받음
> 이걸 다루도록 하겟음!

 

 

✔️ 2.08 Bootstrap 현실적인 평행우주 시뮬레이션

빈도주의 통계는 절대적 진리 'p'로부터 p^(p hat)을 만들어서, 추정량의 성질을 찾음

frequentist의 꽃: 표본분포! 이 추정량이 여러 개의 평행우주에서 어떤 값을 갖느냐
다만, 현실적으로는 평행우주를 관찰할 수 없음

추정량이 단순할 경우 이런 저런 가정을 만들어서 표준 정규분포로 수렴한다라고 하는데
현실적인 상황에서는 어떻게 표준분표를 생각해낼 수 있을까? > Bootstrap

 

 

 

Bootstrap: 짝퉁 표본분포 만들기
X라는 데이터가 크던 작던 간에 절대적 진리, p의 대표성을 지닌다고 가정함

그 데이터로부터 p^을 그냥 계산하는 것이 아니고, 
그 데이터로부터 여러번 반복적으로 resample 하는 것

*n값이 중요함. 이 데이터가 10명의 핸드폰을 본 것이 데이터였다면, 짝퉁에서도 10개 유지.

가짜 추정치들을 모아둔 것을 Bootstrap sample 이라고 하고,
표본분포 자체를 추정하는 것. 

알고싶은 표본분포가 있는데 수학적으로 분석할 수 없으면, Bootstrap sample을 만들어서 진행.
*표준오차: 추정량의 표준분포의 오차

 

 

✔️ 2.09 Bootstrap 코딩 실습 

Google Colab에서 진행, python 활용. Requires package: numpy, scipy, seaborn

import numpy as np
from scipy.stats import norm
import seaborn as sns

*android = 1, iOS=4
obs=np.array([1]*6+[0]*4)

obs = [1,1,1,1,1,1,0,0,0,0]

실제 저게 지하철 인구라고 가정하고 10개를 계속 관찰했다면?
size가 동일한 10개의 sample!

np.random.choice(obs, size=len(obs), replace=True)
*표본분포에서 가장 중요한 요소, 실제 관찰한 크기!가 표본분포를 결정지음!)
*replace하면서 계속 바꿔줘야 함
한 번의 평행우주가 아닌 수없이 많은 평행우주를 만들고 싶을 때

b=1000
[
np.random.choice(obs, size=len(obs), replace=True)
for_in range(b)
]

더 효율적으로
np.random.choice(obs, size=(b, len(obs)), replace=True)
for_in range(b)



함수로 만들어보면
b=1000
def bootstrap(obs, n_universes):
return np.random.choice(obs, size=(n_universes, len(pbs)), replace=True).mean(axis=1)
p_hats = bootstrap(obs, n_universes=1000)

 

 

 

신뢰구간 계산해보기

실제 추정치 p_hat = obs.mean()
관찰한 값의 평균
p_hat
0.6

Bootstrap을 가지고 신뢰구간을 계산할 때 두 가지 방법
#1 정규분포라고 가정하기
표준오차: 표준분포의 표준편차
s=p_hats.std()

양 쪽 끝에서 잘라야하는 tale
a=(1-0.95)/2
norm.ppf(0.5)
z=norm.ppf([a,1,-a])

 

 

#2 정규분포처럼 안 생겼을 때는 Bootstrap*백분위 활용

np.percentile(p_hats,(2.5,97.5))
arry(0.3,0.9)

정규분포와 비슷하게 생겨서 정규분포 쓴 것과 백분위 쓴 것이 비슷하게 나옴
후자의 경우 정확하진 않음

p^hat에 편향이 있음

지금은 대칭을 이뤄서 문제가 없지만

대칭이 아닌 경우, 백분위로 구성한 신뢰구간을 조절해야 함. 즉 백분위를 표준화를 시켜야 함. 
p_hat에서 한 번 빼줘야 함!

 

 

percentile=np.percentile(p_hats, (2.5, 97.5))-p_hat

p_hat-percentile
array([0.9, 0.3]

 

 

 

*와! 이해가 하나도 안 간다!

 

 

✔️ 2.10 그래서, 내기를 해? 

빈도주의 통계를 가지고 불확실성을 계량화하는 방법을 살펴봄

그래서 내기를 할지 말지 의사결정하는 시간!

 

지하철에서 안드로이드 유저 vs 아이폰 유저에 대한 내기

실제 폰이 안드로이드일지 아이폰일지에 대한 확률 p에 대한 것

p=0.5일 때는 내기를 하는 것과 안 하는 것이 동일

안드로이드가 0.6 일때는 하는 것이 좋음 (했을 때 기댓값 6천원...!)

 

Sensitivity to p
bet값은 10,000
내기를 한다면 어디에 걸었느냐에 따라서 달라짐 (android, iphone)

기대값 (value), p=0.0~1.0

[궁극적인 질문]
안드로이드/아이폰 유저일 확률이 50% 이상/이하라고 믿는가?

 

[통계적 정당성(의 부재)]

*안드로이드가 0.6이라는 것에 대해서...

- 전통적인 '통계적 유의미함'
95% 신뢰구간이 0.5를 포함하지 않는다면 95% 신뢰수준에서 통계적으로 유의미한 결과 (p-value < 0.05)
현재 결과는 통계적으로 유의미하지 않음 → 내기 안 해!
*Bootstrap: 정규분포를 활용해서도, 백분위를 활용해서도, 백분화를 표준화시킨 방법으로도 해봣음 (p=0.3~0.9)

객관적인 데이터가 말해주는 정보로서 가치가 있음

하지만....

 

[현실적인 고려사항]
데이터의 완전성 (유용한 정보의 부재)
e.g 통계적으로 유의미한 결과는 없지만, 폰을 안 꺼낸 승객이 맥북 가방에 애플워치를 차고, 아이패드를 들고 있으면?

확률모형의 현실성

- 지하철 승객이 모두 '독립시행'? *지하철 승객이 대체 몇 명이길래 10명의 건을 독립시행인 것처럼 하느냐라는 의문...?
지하철은 딱 한 번 타는거고, 이걸 한 번 시행할건데.. 여러 번 반복했을 때의 신뢰구간을 계산하는 것이 얼마나 의미가 있고 정확하냐는 의심을 할 수 있음

- 빈도주의자의 '확률'이 적용되는 상황?

 

 

["좋은" 의사결정]
Quality of a decision

의사결정의 결과
의사결정이 "좋은"가는, 결과가 나오기 전에 판단됨
*불확실성에 의해 의사결정을 고민하는 것,
불확실성이 없고 확실한 결과를 아는 것이라면 의사결정이 아니고 선택인 것.

불확실성이 내재되어 있으므로 결과가 나오기 전에...!
어떤 길을 거쳤고, 합리적인 선택을 했느냐에 의해 의사결정이 "좋은지" 여부가 결정됨

 

의사결정의 6요소로 판단

#1,2,3 가용한 모든 선택지, 정보, 가치를 고려했는가
#4 의사결정의 틀이 명확한가
#5 의사결정자가 분명한가
#6 의사결정의 논리가 바른가

e.g 술을 마시고 음주운전을 하기로 한 친구 vs 걸어가기로 한 친구
근데 음주운전을 한 친구는 무사귀가 했는데 걸어간 친구는 교통사고를 당했다면?
결과에 따라서 의사결정의 퀄리티를 판단할 수 없음!

 

관련글 더보기

댓글 영역