Data Science

[번역] Practical advice for analysis of large, complex data sets(By PATRCK RILEY) - PART 2

uomnf97 2023. 12. 24. 18:55
안녕하세요 제이덥입니다! 오늘은 The Unofficial Google Data Science Blog에 올라와 있는 Practical advice for analysis of large, complex data sets 번역 글의 두 번째 파트로 Process, Social 및 Conclusion의 내용을 다룹니다. The Unofficial Google Data Science Blog는 구글에서 구글 외부의 데이터 과학자들에게 인사이트를 공유하고 싶은 데이터 과학자들이 게시한 비공식 블로그인데요. 제가 참여했던 네이버 부스트캠프의 마스터로 활동하신 안수빈 님께서 해당 글을 데이터 분석을 위한 필독 글이라고 캐글 코리아에서 소개해주셔서 읽게 되었습니다. 데이터를 분석하기 위해 확인해야하는 기초적인 뼈대를 제공하다고 생각하며, 깊게 공감하며 읽어 해당 글의 인사이트를 공유하기 위해 번역하고 정리하여 공유하였습니다. 원작자의 의도를 해치지 않기 위해 최대한 모든 내용을 포함하려 노력했지만, 자연스러운 글을 위해 일부 의역이 있음을 양해 부탁드립니다. 그럼 함께 내용을 살펴보도록 하겠습니다. 글은 분량이 길어 PART 1, PART 2로 나눠서 발행됩니다.

 

Process(처리)

Validation(유효성 검사 또는 초기 데이터 분석), Description(설명), Evaluation(평가)로 나누어라!

EDA(탐색적 데이터 분석)은 Validation(유효성 검사 또는 초기 데이터 분석), Description(설명), Evaluation(평가) 세 가지 상호 관련된 단계로 나누어 진행해야한다고 생각합니다 : 


1. Validation (유효성 검사 또는 초기 데이터 분석): 데이터가 일관성 있고 정확하게 수집되었으며 내가 생각하는 대로 데이터를 나타내는지 확인하는 단계입니다. 이 작업은 종종 "Sanity Checking(상태 체크)"라는 이름으로 진행됩니다. 예를 들어, feature(특징)에 대한 manual testing(수동 테스트)가 수행된 경우 해당 manual testing(수동 테스트)의 로그를 확인할 수 있습니까? 모바일 기기에서 실행된 테스트의 feature(특징)인 경우 로그에서 해당 feature(기능)이 데스크톱에서 존재한다고 단언할 수 있습니까?

2. Description (설명): 이 데이터에 대한 객관적인 해석이 무엇인지 체크하는 단계입니다.  예를 들어, "사용자는 7단어 이상의 쿼리를 덜 사용하나요?", "페이지 로드에서 클릭까지 걸리는 시간(클릭이 있었을 경우)이 1% 더 큰가요?", "다음 결과 페이지로 가는 사용자의 비율이 더 작습니다" 등의 질문이나 서술을 통해 객관적인 해석을 도출해냅니다. 

3. Evaluation (평가): Description(설명)을 토대로, 데이터가 사용자, Google, 또는 세계에 무엇인가 긍정적인 변화를 야기하는지에 대한 판단을 내리는 단계입니다. "사용자는 결과를 더 빨리 찾습니다" 또는 "클릭의 품질이 높아졌습니다." 등을 예로 들 수 있습니다.

이러한 단계를 분리함으로써, 데이터에 대해 다른 사람들과 쉽게 합의에 도달할 수 있습니다. Description(설명)은 데이터에 대해 모두가 동의할 수 있는 내용이어야 합니다. 그에 비해 Evaluation(평가)는 의미와 가치를 데이터에 부여하기 때문에 훨씬 더 논쟁의 여지가 많습니다. Description(설명)과 Evaluation(평가)를 분리하지 않으면, 자신들이 보기 원하는 데이터 해석만을 볼 가능성이 훨씬 더 높습니다. 더 나아가 Evaluation(평가)은 주로 다른 featrure(특징) 및 metric(지표)와의 엄격한 비교를 통해 메트릭의 규범적 가치을 확립하는 것이 필요하므로 상당한 투자가 필요하기 때문에 평가가 훨씬 더 어려운 경향이 있습니다.

이 단계는 순차적으로 진행되지 않을 수 있으며 데이터를 탐색하면서 단계 사이를 왔다갔다하며 여러번 반복 할 수 있지만 언제든지 자신이 현재 어떤 단계에 있는지 명확하게 알아야 합니다.

 

실험 및 데이터 수집 확인하기

데이터를보기 전에 실험 및 데이터 수집 설정을 이해했는지 합니다. 실험가와 분석가 간의 명확하고 정확한 의사소통은 큰 도전입니다. 실험 프로토콜이나 configuration(설정)을 직접 확인할 수 있다면 그렇게 해야합니다. 그렇지 않으면, 설정에 대한 본인의 이해를 직접 적어두고 데이터 생성을 책임지는 사람들이 그것이 옳다고 동의하는지 확인해야 합니다.

비정상적이거나 이상한 설정이나 부정확한 구성, 모집단 제한(예: 특정 브라우저에만 유효한 데이터)등을 발견할 수 있습니다. 여기서 주목해야할 것은 이론을 구축하고 검증하는 데 도움이 될 수 있다는 것입니다. 고려해야 할 몇 가지 사항은 다음과 같습니다:

  • 만약 제품의 특징이라면 직접 사용해 봅시다, 그럴수 없다면 적어도 행동의 스크린샷/설명을 확인하세요.
  • 실험이 실행된 시간 범위(휴일, 대규모 출시 등)에서 이상한 부분이 있는지 확인합니다

 

Vital Signs(중요한 신호)를 확인하기

관심 있는 질문에 실제로 답하기 전에 (예: "사용자가 내 멋진 새로운 feature(특성)을 사용했습니?") 관심적인 내용과 직접적으로 관련이 없지만 나중에 분석할 때 유용하거나 데이터의 문제를 나타낼 수 다른 것들을 확인해야 합니다. 사용자 수가 변경되었는지, 모든 하위 그룹에서 영향을 받는 쿼리의 올바른 수가 나타났는지, 오류율이 변경되지는 않았는지 등을 점검합니다. 의사가 진료할 때 항상 키, 몸무게, 혈압을 확인하는 것처럼 잠재적 큰 문제를 해결할 수 있는 데이터의 중요한 신호를 체크해야합니다. 이것은 검증 단계(validation stage)에서 중요한 부분 중 하나입니다.

 

정석적인 방법을 먼저, 커스터마이징은 나중에

이것은 변화해서는 안되는 부분을 확인하는 방법의 변형입니다. 특히 새로운 feature(특성)과 새로운 데이터를 살펴볼 때 새로운 feature(특성)을 위한 독특하거나 특별한 metric(지교)로 바로 뛰어들 수 있습니다. 그러나 항상 standard metric(표준 지표)이 변할 것으로 예상되더라도 항상 이 표준 지표들을 먼저 살펴보아야 합니다. 예를 들어, 검색 페이지에 새로운 UI 기능을 추가할 때 클릭의 결과가같은 표준 메트릭에 미치는 영향을 먼저 이해한 후에 이 새로운 UI 기능에 관한 특별한 지표로 들어가야 합니다. 이렇게 하는 이유는 standard metric(표준 지표)이 훨씬 더 검증되어 있기 때문에 정확할 가능성이 높기 때문입니다. 새로운 custom metric(커스티마이징한 지표)가 standard metric(표준 메지표)와 맞지 않으면 새로운 사용자 정의 메트릭이 틀렸을 가능성이 큽니다.

 

두번 이상 측정하자

특히 새로운 현상을 포착하려는 경우, 동일한 근본적인 개념을 여러 방식으로 측정해봐야합니다. 그런 다음, 이러한 다양한 측정이 일관성 있는지 확인합니다. 여러 측정 방법을 사용하면 측정 또는 로깅 코드의 버그, 기저 데이터의 예상치 못한 특성 또는 중요한 필터링 단계를 식별할 수 있습니다. 측정에 다른 데이터 소스를 사용할 수 있다면 더욱 좋습니다.

 

재현성 확인하기

슬라이싱과 시간에 걸친 일관성은 모두 재현성을 확인하는 특별한 예시입니다. 현상이 중요하고 의미가 있다면, 여러 사용자 집단을 시간에 걸쳐 이 현상을 관찰해야합니다. 그러나 재현성은 이것보다 더 많은 것을 의미합니다. 데이터 모델을 구축 중이라면 그 모델이 기본 데이터의 작은 변동에 대해 안정적이길 원할 것입니다. 데이터의 다른 시간 범위 또는 임의의 하위 샘플을 사용하면 이 모델이 얼마나 신뢰성 있고 재현 가능한지 알 수 있습니다. 재현성이 없을 경우, 이 데이터를 생성한 기본 프로세스에 대해 기본적인 정보를 캡처하지 못하고 있을 가능성이 높습니다.

 

과거 측정값의 일관성 확인하기

종종 과거에 계산된 metric(지표)와 비슷한 것들을 계산할 경우와 유사한 지표를 계산할 것입니다. 이러한 측정값이 다른 사용자 모집단에 있더라도 당신은 당신의 메트릭을 과거에 보고된 메트릭과 비교해야 합니다. 예를 들어, 특별한 모집단에서 검색 양을 측정 할 때 일반적으로 허용된 양보다 훨씬 큰 수치를 측정하면 조사해야 합니다. 이 수치가 이 모집단에 대해서는 올바를지 몰라도, 이제 이를 검증하기 위해 추가 작업을 해야 할 것입니다. 같은 것을 측정하고 있는지 확인하고, 이 모집단 다르다고 믿을 합리적인 이유가 있는지 확인해야 합니다. 정확한 동의를 얻을 필요는 없지만 대략적으로 일치해야 합니다. 그렇지 않은 경우, 자신을 완전히 확신할 때까지 틀렸다고 가정해야합니다. 대부분의 가장 놀라운 데이터는 멋진 새로운 통찰력이 아니라 오류로 판명될 것입니다.

새로운 메트릭은 먼저 이전 데이터 또는 feature(특성)에 적용되어야 합니다. 완전히 새로운 데이터를 수집하고 새로운 정보를 학습하려고 할 때 정확하게 알 수 없기에, 새로운 종류의 데이터를 수집할 때 이 데이터를 먼저 알려진 feature(기능) 또는 데이터에 적용해야 합니다. 예를 들어, 사용자 만족도에 대한 새로운 메트릭이 있다면, 이것이 최고의 기능이 사용자 만족도에 도움이 되는지 확인해야 합니다. 이렇게 하면 새로운 것을 배우기 전에 유효성을 확인할 수 있습니다. 

 

가설을 세우고 증거를 찾기

일반적으로 복잡한 문제에 대한 탐색적 데이터 분석은 반복적입니다. 이 과정에서 데이터의 이상치, 추세 또는 다른 특성을 발견할 것입니다. 자연스럽게 이 데이터를 설명하기 위해 가설을 세우게 됩니다. 하지만 단순히 가설을 세우고 그것을 사실이라고 단언하지 않는 것이 중요합니다. 이 이론의 참/거짓을 확인할수 위한 증거(데이터 내부 또는 외부에서)를 찾아보세요. 예를 들어, 어떤 이상치가 다른 기능의 출시나 카트만두의 휴일로 인한 것이라고 믿는다면,  해당 기능이 출시한 모집단이 이상치의 영향을 받는 유일한 모집단인지 확인해야 합니다. 또는 변화의 크기가 출시의 예상과 일치하는지 확인해야합니다.

좋은 데이터 분석은 전달할 이야기가 있어야 합니다. 그것이 올바른 이야기인지 확인하려면 이야기를 스스로에게 설명하고, 해당 가설이 사실이라면 데이터에서 봐야 할 다른 것들을 예측한 다음, 그것이 틀렸음을 확인할 증거를 찾아보아야 합니다. 이를 위한 한 가지 방법은 자문자답하며 "내 가설을 검증/무효화할 수 있는 어떤 실험을 할 것인가?"라고 스스로에게 묻는 것입니다. 이 실험을 수행하지 못하더라도, 여전히 가지고 있는 데이터로 어떻게 유효성을 확인할 수 있는지에 대한 아이디어를 얻을 수 있습니다.

좋은 소식은 이러한 가설과 가능한 실험은 특정한 기능이나 데이터에 대한 학습을 넘어설 수 있는 새로운 조사 방향으로 이어질 수 있습니다. 그러면 미래의 모든 종류의 분석을 위한 새로운 메트릭과 기법을 도출할 수 있는 영역에 진입하게 됩니다.

 

end-to end 반복 작업에서 얻을 수 있는 탐색적 분석에 대한 장점

탐색적 분석을 수행할 때는 가능한 한 전체 분석을 여러 번 반복하는 것이 중요합니다. 일반적으로 신호 수집, 처리, 모델링 등의 여러 단계를 거치게 됩니다. 초기 신호의 첫 단계를 완벽하게 수행하는 데 너무 오랜 시간을 들이면 동일한 시간 동안 더 많은 반복 작업을 수행할 기회를 놓칠 수 있습니다. 더 나아가 마지막 단계에서 데이터를 최종적으로 확인할 때 방향을 바꿔야하는 발견을 할 수도 있습니다. 따라서 초기 초점은 완벽함이 아닌 합리적인 무언가를 얻는 데에 두어야 합니다. 분석할 수 없는 필터링 단계나 데이터 기록과 같은 경우 스스로에게 메모를 남기고, 탐색적 분석을 시작할 때는 해석할 수 없고 이해할 수 없는 것들을 모두 제거하려고 노력하는 것이 시간 낭비입니다.

 

Social

데이터 분석은 데이터나 기술이 아닌 질문으로 시작

항상 분석을 수행하는 이유가 있습니다. 여러분의 요구 사항을 질문이나 가설로 정리하는 데 시간을 들인다면 적절한 데이터를 수집하고 데이터의 가능한 빈틈을 고려하는 데 큰 도움이 될 것입니다. 물론 데이터를 살펴보면서 질문이나 가설이 고도화 될수도 있고 그래야만 합니다. 하지만 질문 없는 분석은 목적을 가지지 못한 채로 끝나게 될 것입니다.

또한 어떤 좋아하는 기술을 찾고 나서 그 기술이 작동하는 문제 부분만 찾는 함정을 피해야 합니다. 다시 말해, 질문이 명확한지 확인하는 것이 이를 피하는 데 도움이 될 것입니다.

 

 

필터링 확인하고 및 세보기

거의 모든 대규모 데이터 분석은 다양한 단계에서 데이터를 필터링하는 것으로 시작됩니다. 미국 사용자, 웹 검색, 또는 클릭이 있는 검색 결과 만을 고려하려는 경우에 어떤 경우에도  다음을 수행해야 합니다.

  • 현재 수행 중인 필터링을 확인하고 명확히 지정합니다.
  • 각 단계에서 얼마나 많은 데이터가 필터링되고 있는지 계산합니다.

이를 수행하는 가장 좋은 방법 중 하나는 제외하고 있는 모집단에 대해서도 실제로 모든 메트릭을 계산하는 것입니다. 그런 다음 해당 데이터를 살펴보아 "내 필터링이 얼마나 많은 쿼리를 제거했는가?"와 같은 질문에 답할 수 있습니다.

더 나아가, 필터링되는 내용의 예시를 살펴보는 것은 분석에서 새로운 필터링 단계에 필수 적입니다. 제외할 데이터의 간단한 제외 규칙을 만들 때 실수로 일부 "좋은" 데이터를 포함시키는 일이 쉽기 때문입니다.

 

비율에서 분자와 분모가 명확히 가지고 있기

많은 흥미로운 측정 지표는 기본 측정치의 비율입니다. 안타깝게도, 종종 비율이 무엇인지에 대한 모호성이 있습니다. 예를 들어, 검색 결과에서 사이트의 클릭률이라고 말하면 다음과 같습니다:

  • '사이트의 클릭 수' / '해당 사이트에 대한 결과 수'
  • '해당 사이트로 이동하는 클릭이 있는 검색 결과 페이지 수' / '해당 사이트가 표시된 검색 결과 페이지 수'

결과를 전달할 때 때 이에 대해 명확해야 합니다. 그렇지 않으면 청중(그리고 여러분 자신!)이 과거 결과와 메트릭을 올바르게 해석하는 데 어려움을 겪을 것입니다.

 

고객에게 교육을 제공하기

분석과 결과를 자주 데이터 전문가가 아닌 사람들에게 발표할게 될 것입니다. 여러분의 업무 중 일부는 이들이 여러분의 데이터를 해석하고 결론을 도출하는 방법에 대해 교육하는 것입니다. 이것은 신뢰 구간이 무엇인지 이해하는지 확인하는 것 부터 여러분의 도메인에서 특정 측정치가 왜 신뢰할 수 없는지, "좋은" 및 "나쁜" 변화에 대한 전형적인 효과 크기는 무엇인지, 그리고 모집단 편향 효과를 이해하는 것과 같은 다양한 주제를 포함합니다.

특히 여러분의 데이터가 오해되거나 선택적으로 인용될 위험이 높을 때 이는 특히 중요합니다. 소비자가 요청한 숫자만이 아니라 데이터의 맥락과 전체 그림을 제공해야 합니다.

 

통찰의 챔피언이자 회의론자가 되기

데이터 작업을 하면서 통찰력의 챔피언이자 회의론자가되어야 합니다. 바여러분이 살펴보는 데이터에서 흥미로운 현상을 발견할 것을 기대합니다. 흥미로운 현상이 있을 때는 "이게 얼마나 멋진지를 보여줄 수 있는 다른 데이터는 무엇인가?"와 "이를 무효화할 수 있는 것은 무엇인가?"라는 두 가지 질문을 던져야 합니다. 특히 특정한 답변을 원하는 사람을 위해 분석을 수행하는 경우 (예: "내 기능은 훌륭하다") 에러를 방지하기 위해 스켑틱 역할을 수행해야 할 것입니다.

 

동료와 먼저 공유하고, 이후에 외부 소비자에게 공유하기

 

특히 소비자들은 일반적으로 얻고자 하는 결과를 가지고 있기 때문에 숙련된 동료 심사자는 데이터의 소비자와 질적으로 다른 피드백과 차별화된 관점을 제공할 수 있습니다. 이상적으로는 여러분이 살펴보는 데이터에 대해 알고 있는 동료를 가지고 있다면 좋겠지만, 데이터를 일반적인 데이터를 살펴본 경험이 있는 동료라도 매우 가치 있습니다. 이전에 올바른 유형의 정상 동작 및 유효성 검사를 수행하도록 하도록 몇 가지 방법을 제안했습니다. 그러나 동료와 공유하는 것은 이러한 모든 작업을 수행하도록 스스로에게 강요하는 가장 좋은 방법 중 하나입니다. 분석을 진행하는 과정에서 동료는 여러 가지 측면에서 유용합니다. 초기에는 동료가 알고 있는 일부 함정, 측정할 항목에 대한 제안 및 해당 분야의 과거 연구에 대한 정보를 얻을 수 있습니다. 그리고 마지막에 동료가 특이성, 불일치 또는 다른 혼란을 지적하는 데 매우 능숙합니다.

 

무지와 실수를 예상하고 받아들이기

데이터로부터 얻을 수 있는 것에는 많은 한계가 있습니다. 네이트 실버는 "The Signal and the Noise"에서 명확히 제시한 바와 같이, 우리의 확신의 한계를 인정함으로써 우리만이 더 나은 예측을 위한 진전을 이룰 수 있다는 강력한 주장을 펼칩니다. 무지를 인정하는 것은 강점이지만 보통 즉시 보상을 받지는 않습니다. 그 순간에는 나쁜 느낌이 들지만, 최종적으로는 데이터에 능통한 동료와 리더들로부터 존경을 얻게 될 것입니다. 나중에 (또는 너무 늦게) 실수를 발견할 때는 더 나쁜 느낌이 듭니다만, 실수를 솔직하게 인정함으로써 신뢰성을 확보할 수 있습니다. 신뢰성은 모든 데이터 과학자에게 중요한 사회적 가치입니다.

 

Conclusion

10대 목로 형식의 제약을 깨고, 심지어 그 이상의 간결한 목록이 아닐지라도 완벽할 수는 없습니다. 이러한 아이디어를 실제 문제에 적용할 때 여러분은 여러분의 도메인에서 가장 중요한 습관과 기술, 빠르고 정확한 분석을 돕는 도구, 그리고 이 목록에 있었으면 하는 조언을 찾게 될 것입니다. 여러분이 배운 것을 공유하여 모두가 더 나은 데이터 과학자가 될 수 있으면 좋겠습니다. 

 

 

Reference : Practical advice for analysis of large, complex data sets(By PATRCK RILEY)