더북(TheBook)

2.2.7 예제: 학생들의 부정행위

우리는 이항분포를 사용하여 학생들이 시험 중에 부정행위를 저지르는 빈도를 알아낼 것이다. 가령 시험을 치른 총 학생수를 N으로 놓고, 시험 후 각 학생을 인터뷰한다고 (대답은 처벌받지 않는다) 가정한다면 우리는 정숫값 X, “네, 부정행위를 했습니다”라는 답변을 받을 것이다. 그렇게 주어진 N, p에 대한 일부 정해진 사전분포, 관찰된 데이터 X를 알면 우리는 p의 사후확률분포를 얻게 된다.

이 모델은 사실 황당하다. 처벌이 없다 해도 부정행위를 인정하는 학생은 없을 것이다. 학생들이 부정행위를 했는지 물어볼 수 있는 더 나은 알고리즘이 필요하다. 이 알고리즘은 이상적으로 개인의 프라이버시를 지키면서 정직하도록 독려해야 한다. 다음에 제안된 알고리즘은 내가 기발함과 유효성에 매우 감탄한 해결책이다.3

 

학생들은 인터뷰할 때 각자 숨겨둔 동전을 하나 던진다. 인터뷰하는 사람은 모른다. 동전의 앞면이 나온 학생은 정직하게 대답한다. 동전의 뒷면이 나온 학생은(몰래) 동전을 다시 던져 앞면이 나오면 “네, 부정행위를 했습니다”라고 대답하고, 뒷면이 나오면 “부정행위를 하지 않았습니다”라고 대답하는 것에 동의한다. 이런 방법을 사용하면 인터뷰하는 사람은 “예”라는 답변이 부정행위를 인정한 진술의 결과인지 아니면 두 번째 동전 던지기에서 앞면이 나온 결과인지 모른다. 그래서 프라이버시는 지켜지고 연구자는 정직한 답변을 받는다.

 

나는 이것을 프라이버시 알고리즘이라 부른다. 물론 어떤 이는 일부 “예”라는 답변이 솔직한 자백이 아니라 임의적인 것이므로 인터뷰하는 사람은 여전히 거짓 데이터를 받고 있다고 주장할 수 있다. 이에 대한 대안으로 원래 데이터셋의 절반을 버리는 방법이 있다. 응답의 절반이 무작위일 수 있기 때문이다. 하지만 연구자들은 체계적인 데이터 생성 프로세스를 얻게 된다. 이 프로세스는 모델링될 수 있다. 더욱이 거짓 대답의 가능성을 포함할(아마 다소 순진하게) 필요는 없다. 우리는 PyMC를 사용하여 노이즈가 있는 모델을 조사할 수 있고, 거짓말쟁이의 진짜 빈도에 대한 사후확률분포를 얻을 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.