랜덤 쿼리 1000개만 뽑아주세요.
요즘 집중하고 있는 일이 몇개 있어서 매우 바쁜데 위와 같은 요청이 들어와서 단순하게 쿼리 각각을 늘어놓고 n번째 쿼리를 뽑아 주면 되겠다 하고 생각을 했었다.
하지만 점심 시간에 밥먹으면서 고민했는데, 우리가 랜덤 샘플링을 하는 이유가 무엇인지 생각을 해봤다. 그것은 바로 모집단의 특징을 알아보기 위해서 샘플링을 하는 것인데, 샘플링은 반드시 모집단의 특징을 띄고 있어야 한다는건 통계학의 기본이다.
그래서 다시 왜 랜덤 쿼리를 뽑는지 물어보고 그 목적에 맞게 잘 뽑아드렸다. (그래서 선택한 방법이 Stratified sampling 방법이 되겠다. )
예를 들어 쿼리를 뽑는다면
랜덤 샘플링을 한다고 하더라도 위와 비슷한 그래프가 샘플링 데이터로도 보여져야 한다.
만일 샘플링을 잘못하면 그 테스트 자체가 무효가 될 수 있고 자칫 헛수고만 할 경우가 많다. 게다가 헛수고를 했다는 사실조차 모른다면 잘못된 정보로 잘못된 정책판단을 하게 되어 버린다.
이 방법은 각 쿼리의 빈도 비율에 비례해서 샘플링을 하는 방법으로 모집단의 특징을 그대로 반영한다. (물론 샘플링 개수가 적다면 위의 경향을 보이기는 힘들것이고 샘플링 개수도 충분히 커여 할 것이다.)
뭐 위키의 예제를 보면 알겠지만 상당히 간단한 방법이고 누구든지 좀더 고민을 하면 비슷한 생각을 할 수 있는 방법이다.
추출 방법을 이야기 하기 보다는 여기서 말하고 싶은것은 특히나 어떤 정책을 결정하는 테스트를 할때 모집단의 특징을 보기 위해 샘플링을 하는데 자칫 랜덤이라는 간단한 의미만을 생각해 잘못 뽑는 과오를 하지 말고 다시한번 생각해서 데이터를 뽑자는 이야기다. (랜덤이라는 말이 마구잡이로 아무 생각없이 그냥 뽑아도 된다는 의미는 아니다.)
내가 데이터를 정확하게 뽑지 못하면 그것에 기반한 정책 자체도 잘못된 방향으로 갈 수 있으니 귀찮더라도 좀더 생각하고 행동에 옮기는게 정말 중요한거 같다는 생각을 해본다.
단순한 데이터 하나 뽑는것도 고민을 하자! by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.