데이터 분석을 디버그하는 방법?


10

나는 정찰이 다소 일반적이라는 다음과 같은 문제를 겪었습니다.

예를 들어 몇 백만 개의 큰 데이터가 있습니다. 몇 가지 하위 쿼리로 구성된 SQL 쿼리와 같은 사소한 분석을 실행합니다. 예를 들어 시간이 지남에 따라 속성 X가 증가하고 있다는 결과가 나옵니다.

이제 두 가지 가능한 결과가 있습니다.

  1. X는 시간이 지남에 따라 실제로 증가하고 있습니다
  2. 분석에 버그가 있습니다

두 번째가 아닌 첫 번째가 발생했는지 어떻게 테스트 할 수 있습니까? 중간 단계 결과가 여전히 수백만 줄로 구성 될 수 있기 때문에 단계적 디버거는 존재하더라도 도움이되지 않습니다.

내가 생각할 수있는 유일한 방법은 테스트하려는 속성을 사용하여 작고 합성 데이터 세트를 생성하고 분석을 단위 테스트로 실행하는 것이 었습니다. 이를위한 도구가 있습니까? 특히, SQL로 제한되지는 않습니다.


좋은 질문입니다! 나는 이것이 중요하고 사소한 문제라고 생각합니다.
Ben

답변:


4

제안 사항은 다음과 같습니다.

  • 서브 샘플에서 실행될 수 있도록 분석을 코딩하십시오.
  • 무작위로 또는 시간별로 또는 지역별로 샘플링 할 수있는 보완 루틴을 코딩하십시오. 도메인에 따라 다를 수 있습니다. 여기가 당신의 지식이 들어갑니다.
  • 두 가지를 결합하여 서브 샘플에서 결과가 안정적인지 확인하십시오.

그것은 또한 내 버그 가 서브 샘플에서 안정적 이라는 것을 의미하지 않습니까?
리틀 바비 테이블

가능한 결과이지만 시도한 후에 만 ​​알 수 있습니다. 그렇다면 최소한 더 작은 데이터 세트에서 디버그 할 수 있습니다.
Dirk Eddelbuettel

1

이것이 내가 일반적으로하는 일입니다-가장 중요한 변수를 취하십시오 (비즈니스 이해와 가설을 바탕으로-나중에 언제든지 수정할 수 있음).이 속성을 기준으로 그룹화하여 행 수를 줄이고 피벗으로 가져올 수 있습니다. 각 행에 관련 측정 항목의 합계와 개수를 포함해야합니다.

이전 단계에서 필터를 넣지 않았는지 확인하십시오. 전체 데이터를 요약 된 수준으로 확보 한 후에는 피벗 테이블에서 플레이하고 어떤 것이 변경 / 증가 또는 감소하는지 확인할 수 있습니다.

중요한 매개 변수로도 요약하기에 데이터가 너무 크면 3-4 개의 서브 세트로 분할 한 후 다시 수행해야합니다.

도움이 되길 바랍니다.


1

먼저 알고리즘의 구현이 정확한지 확인해야합니다. 이를 위해 작은 데이터 샘플을 사용하고 결과가 올바른지 확인하십시오. 이 단계에서 표본은 모집단을 대표 할 필요는 없습니다.

구현이 확인되면 예측하려는 변수간에 유의 한 관계가 있는지 확인해야합니다. 그렇게하려면 귀무 가설을 정의하고 유의 한 신뢰 수준으로 귀무 가설을 기각하십시오. ( 선형 회귀에 대한 가설 테스트 )

SQL 배포를위한 단위 테스트 프레임 워크가있을 수 있습니다. 그러나 R과 같은 프로그래밍 언어를 사용하면 구현하기가 더 쉬울 것입니다.


1

여러 단계 전략이 마음에 듭니다.

  1. 짧고 까다로운 코드와 달리 이해하기 쉬운 코드를 작성하십시오. 까다로운 코드와 같은 통계 전문가는 알고 있지만 까다로운 코드에서 문제를 발견하는 것은 위험합니다. (내 관리자가 문서화되지 않은 500 줄의 파이썬 스크립을 좋아했기 때문에 이것을 언급하고 있습니다.

  2. 더 작은 기능으로 코드를 분석하십시오. 작은 기능으로 테스트하고 평가할 수 있습니다.

  3. 연결된 요소 (예 : 조건 X가 Y 인 사례 수는 Y이므로이 쿼리는 반드시 Y를 반환해야 함)를 찾습니다. 대부분의 경우 더 복잡하지만 실행 가능합니다.

  4. 스크립트를 처음 실행하는 경우 작은 하위 샘플로 스크립트를 테스트하고 모든 것이 올바른지 신중하게 확인하십시오. IT에서 단위 테스트를 좋아하지만 통계 스크립트의 버그는 종종 매우 뚜렷하여 신중하게 검사하여 쉽게 볼 수 있습니다. 또는 단위 테스트에서 발견되지 않는 방법 론적 오류입니다.

깨끗한 "일회용"작업을 보장하기에 충분해야합니다. 그러나 시계열의 경우 범위를 벗어난 값, 불가능한 조합 등을 확인해야한다고 덧붙입니다. 나에게 4 단계에 도달 한 대부분의 스크립트에는 버그가 없을 것입니다. 뭔가 바뀐다. 그리고 가장 자주 데이터가 변경되고 있으며 이는 매 실행마다 확인해야하는 것입니다. 이를위한 코드 작성은 시간이 많이 걸리고 성가 시지만 데이터 입력 오류로 인한 미묘한 오류를 능가합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.