Data Science

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

uomnf97 2023. 12. 10. 22:25

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

Google Data Analysis 글을 공유하게 된 배경

 

여러해 동안 Google 검색 로그를 분석하는 데이터 사이언스 팀은 혼란스러운 결과의 의미를 해석 및 log에 기록된 행동에서 새로운 현상을 파악하고, 다른 사람의 분석을 검증하고, 사용자 행동의 메트릭을 해석하도록 자주 요청받았습니다. 일부는 자연스럽게 고품질 데이터의 분석을 잘 수행하는 듯 보였습니다. 이러한 엔지니어들이나 분석가들은 자주 “careful”이나 “methodical”이라고 묘사되기도 합니다. 하지만, 이런 수식어들이 정확히 의미하는 것은 무엇인가요? 어떤 행동이 그들에게 이러한 수식어들을 붙여주었을까요?

 

이 문제들에 대답을 하기 위해 저자는 “Google Data Analysis”라는 제목으로 구글 전체에 공유된 문서를 정리했습니다. 놀랍게도, 이 문서는 저자가 지난 11년간 구글에서 했던 어떤 것들보다도 많은 조회수를 기록했다는 점입니다. 심지어 마지막 대규모 업데이트로부터 4년의 시간이 흘렀지만, 저자가 문서를 체크할 때마다 여전히 여러 구글러들이 이 문서를 조회하고 있다는 것을 알게 되었습니다.

 

왜 이 문서는 오랜시간동안 많은 사람들에게 반향을 일으켰을까요? 그 이유는 바로 이 문서는 추상적인 이상적인 것만이 아닌 구체적인 행동들로 가득 차있기 때문이었습니다. 많은 엔지니어와 분석가들은 이 글의 여러 습관들을 체화하고 이를 통해 높은 수준의 업무 성과를 냈기 때문입니다. 그리고 이 포스트에서는 이 문서의 컨텐츠를 소개하려고 합니다.

이 컨텐츠는 세 가지 일반적인 영역으로 구성되어 있습니다.

  • Technical: 데이터를 조작하고 검사하는 아이디어 및 기술
  • Process: 데이터에 접근 방법, 질문하고 확인해야 할 사항에 대한 권장사항
  • Social: 데이터와 인사이트에 대해 다른 사람들과 협력하고 소통하는 방법

출처 : https://www.unofficialgoogledatascience.com/2016/10/practical-advice-for-analysis-of-large.html

 

Technical

 

데이터 분포 살피기

대표적으로 분포에 대한 정보를 얻기 위해 통계 메트릭(평균, 중앙값, 표준 편차 등)을 사용하지만 일반적으로 이보다 훨씬 더 풍부하게 분포에 대해 표현한 것들을 알고 있어야 합니다. 표. 히스토그램, CDF, Q-Q plot 등을 사용하면 다중 모달 동작 또는 유의한 이상점 클래스와 같은 데이터의 중요한 특징(feature)이 있는지 확인할 수 있습니다. 그리고 이러한 부분들은 어떻게 데이터를 요약해야 할지 결정하는데 도움을 줍니다.

 

이상치 탐지하기

데이터에 있는 이상치들을 살펴봐야합니다 이상치들은 분석에 대한 근본적인 문제의 전조일 수도 있습니다. 데이터에서 제외하거나 "특이한" 범주로 묶는 것은 괜찮지만, 왜 데이터가 그 범주에 들어갔는지 확실히 알아야 합니다. 예를 들어, 가장 낮은 클릭률(CTR)을 가진 쿼리를 살펴보면 사용자 인터페이스의 요소에 대한 클릭을 계산하지 못하고 있는 것을 발견할 수 있습니다. CTR이 가장 높은 쿼리를 살펴보면 계산해서는 안 되는 클릭들일 수 있다는 것을 발견할 수 있습니다. 반면, 몇 가지 이상치는 설명할 수 없을 것이므로 이에 투여하는 시간을 합리적으로 써야합니다.

 

데이터의 노이즈(Noise)와 신뢰도(confidence)를 확인하기

무엇보다도, 우리는 데이터에는 확률이 존재하고 이러한 확률이 우리를 속일 수 있다는 사실을 인지하고 있어야 합니다. 조심하지 않으면, 노이즈 속에서 패턴을 찾아낼 수 있습니다. 당신이 생산하는 모든 추정치는 해당 추정에 대한 신뢰 수준을 함께 고려해야 합니다. 때로는 정석적이고 정확할 때가 있고, 어떤 때는 대략적인 값을 제공할 수 있습니다. 예를 들어, 동료가 월요일에 개구리에 관한 조회가 몇 건인지 물어본다면, 빠르게 몇 주의 월요일을 분석한 후에 "보통 1000만~ 1200백만 정도 되겠네요"라고 대략적으로 알려줄 수 있을 것입니다(실제 숫자는 아닙니다).

 

예시를 살펴보기

 

새로운 분석 코드를 작성할 때마다 기존 데이터의 예시와 코드가 이를 어떻게 해석하는지 살펴봐야 합니다. 이를 하지 않으면 어떠한 복잡한 분석 코드도 제대로 작동하기 어려울 것입니다. 분석은 유용한 데이터 요약을 생성하기 위해 위해 기본 데이터에서 많은 특징(feature) 제거합니다. 개별 예시의 복잡성을 살펴봄으로써 요약이 합리적인지에 대한 확신을 얻을 수 있습니다.

 

가장 일반적인 경우에 너무 집중하지 않도록 값의 분포에 걸쳐 좋은 표본을 보기 위해 계층화된 표본 추출(straightfied sampling)을 수행해야 합니다.

 

예를 들어, 클릭 시간을 계산하는 경우 분포 전체에서 일부 특히 극단적인 부분에서 예시를 확인해야 합니다. 데이터를 확인할 적절한 도구나 시각화가 없다면 먼저 이러한 작업을 수행해야 합니다.

 

데이터를 분할(slice)하기

 

슬라이싱은 데이터를 하위 그룹으로 나누고 이러한 하위 그룹에서 메트릭 값들을 별도로 살펴보는 것을 의미합니다. 웹 트래픽 분석에서는 주로 모바일 대 데스크톱 / 브라우저 / 로케일과 같은 차원을 기준으로 데이터를 나눠 살펴봅니다. 기본 현상이 하위 그룹 간에 다르게 작동될 가능성이 높다면 데이터를 나눠서(slicing) 확인해야 합니다. 슬라이스가 중요하지 않을 것으로 예상하더라도 몇 가지 슬라이스를 내부 일관성을 확인하는 데 사용하면 올바른 측정을 하고 있는지에 대한 확신을 더 얻을 수 있습니다. 어떤 경우에는 특정 슬라이스가 잘못된 데이터, 손상된 정보를 가지고 있을 수도 있고 또는 어떤 면에서 기본적으로 다를 수 있습니다.

 

데이터를 두 그룹(예: 실험 대조군 또는 시간 A 대 시간 B 비교와 같이)으로 나누어 비교할 때마다 Mix shifts에 주의해야 합니다. Mix shifts는 비교하는 그룹 간에 슬라이스의 데이터 양이 다를 때 발생합니다. 심슨의 역설(Simpson’s paradox) 및 기타 혼란스러운 결과를 야기할 수 있습니다. 일반적으로 슬라이스 내의 데이터 양이 두 그룹 간에 상대적으로 동일한 경우에는 올바르게 비교할 수 있습니다.

 

실질적인 중요성을 고려하기

 

대량의 데이터가 있는 경우, 통계적 중요도에만 집중하거나 모든 데이터의 세부 사항에 초점을 맞추는 것이 유혹될 수 있습니다. 그러나 자신에게 물어보아야 할 것은 "값 X가 값 Y보다 0.1% 더 크다는 것이 사실이라고 해도 그게 중요한가?"입니다. 특히 이러한 질문을 던지는 것은 데이터 일부를 이해하거나 범주화할 수 없는 경우에는 더욱 중요합니다. 로그에 있는 일부 사용자 에이전트의 패턴을 이해하지 못한다면, 10%의 0.1% 인지 여부는 해당 사례를 얼마나 조사해야 하는지에 큰 차이가 됩니다.

 

반면에 때로는 소량의 데이터가 있는 경우도 있습니다. 많은 변화는 통계적으로 유의미하지 않아 보일 수 있지만 이것은 "중립"이라고 주장하는 것과는 다릅니다. 자신에게 "실질적인 중요한 변화는 여전히 얼마나 가능한가?"라고 물어봐야 합니다.

 

계속해서 데이터의 일관성을 체크하기

거의 항상 적용해야 할 특별한 슬라이싱은 시간 단위로 슬라이싱하는 것입니다 (우리는 주로 하루를 단위로 사용하지만 다른 단위도 사용가능합니다). 이는 시간에 따라 우리 시스템이 발전하면서 기존데이터가 변화하기 때문입니다. 일반적으로 초기 데이터 수집이나 데이터 특징을 주의 깊게 확인하지만 도중에 무언가가 망가지는 것도 흔치 않은일이 아닙니다.

 

특정한 날짜나 일련의 날짜가 데이터에 이상치가 나타난다고 해서 해당 데이터를 제거해야하는 것은 아닙니다. 해당 날짜가 다르게 나타나는 원인을 찾기 위해 데이터를 사용하고 데이터를 정리하세요.

 

하루 단위로 데이터를 분석하는 것의 또 다른 이점은 데이터의 변화를 감지하여 결국 신뢰 구간이나 통계적 유의성을 주장할 수 있다는 것입니다. 이는 일반적으로 엄격한 신뢰 구간 계산을 대체하지는 않지만 종종 큰 변화가 있을 때 하루 단위 그래프에서만 통계적으로 유의하다는 것을 알 수 있습니다.

 

Process, Social 및 Conclusion은 다음 글에서 이어집니다.

 

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