Removing Noise or Introducing Bias? The Hidden Cost of MSR Filtering
이 연구는 157만 개의 GitHub 저장소를 분석하여 소프트웨어 저장소 마이닝(MSR) 연구에서 흔히 사용되는 필터링 기준이 프로젝트 중단율과 변수 간의 관계를 왜곡하는 상당한 유지보수, 생태계 및 관계적 편향을 초래함을 입증하며, 층화 추출과 정교한 노이즈 탐지로의 전환을 옹호한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
인터넷을 누구나 책장을 만들고 그것을 도서관이라 부를 수 있는 거대하고 혼란스러운 도서관이라고 상상해 보세요. 이것이 바로 오픈 소스 소프트웨어(OSS)의 세계입니다. 이곳은 학생들의 새로운 코딩 아이디어 테스트부터 전문 개발자의 차세대 앱 구축까지, 수백만 명의 사람들이 자신의 프로젝트를 저장하는 거대한 디지털 놀이터입니다. 소프트웨어가 어떻게 작동하는지에 대한 미스터리를 풀려는 탐정 같은 연구자들은 이 도서관을 방문하는 것을 좋아합니다. 그들은 사람들이 프로젝트에 얼마나 '좋아요'(별점)를 눌렀는지, 사람들이 책을 얼마나 많이 수정했는지(커밋), 그리고 얼마나 많은 사람이 책을 쓰는 데 참여했는지를 살피며 선반을 뒤집니다. 이러한 단서들은 소프트웨어 공학의 비밀을 이해하는 데 도움을 줍니다. 하지만 여기 함정이 있습니다. 이 도서관은 너무 거대해서 빈 상자, 테스트용 더미, 그리고 완성되지 않은 낙서들로 가득 차 있습니다. 그래서 연구자들은 보통 '진짜' 책을 찾기 위해 인기 있거나 활발해 보이지 않는 것들은 모두 버립니다. 그들은 "만약 프로젝트에 별점이 10개 미만이라면, 그것은 소음일 뿐이니 버리자"와 같은 규칙을 사용합니다.
하지만 만약 그 규칙들이 가장 흥미로운 이야기들을 버리고 있다면 어떨까요? 우리가 도서관을 정리하려는 필사적인 노력 속에서, 사실 대부분의 책이 버려졌다는 사실이나, 우리가 오직 몇몇 유명한 저자들이 쓴 책들만 읽게 된다는 사실을 실수로 숨기고 있다면 어떨까요? 이것이 바로 모히트 카우식(Mohit Kaushik)과 조티 바와(Jyoti Bawa)가 던지는 질문입니다. 그들은 과학자들이 데이터를 '깨끗하게' 만들기 위해 사용하는 필터가, 소프트웨어 프로젝트가 실제로 어떻게 생존하고 죽어가는지에 대한 진실한, 혼란스러운 현실을 숨김으로써 오히려 그들의 발견을 '더럽게' 만들고 있는 것은 아닌지 우려하고 있습니다.
거대한 필터: 데이터를 정제하는 것인가, 진실을 숨기는 것인가?
이 연구에서 저자들은 방대한 데이터 더미를 가지고 "만약 ~라면 어떨까?"라는 게임을 해보기로 했습니다. 그들은 SEART라는 플랫폼의 157만 개의 소프트웨어 저장소를 살펴보았습니다. 이 데이터셋을 뒤섞인 레고 브릭이 담긴 거대한 양동이라고 생각해보세요. 어떤 것은 크고 화려한 성 세트이고, 어떤 것은 작고 빨간 브릭 하나이며, 많은 것은 아무도 완성하지 못한 부서진 조각들입니다.
보통 연구자들은 이 양동이를 보고 "좋아, 우리는 크고 완성된 성들만 원해. 별점이 10개 미만이거나 커밋(변경 사항)이 10개 미만인 것은 모두 버리자"라고 말합니다. 저자들은 이 엄격한 규칙들을 적용했을 때 어떤 일이 일어나는지 테스트했습니다. 마치 필터의 볼륨을 아주 크게 높이는 것처럼 말이죠.
'인기'의 숨겨진 비용
연구자들이 '인기 필터'(별점이 많은 프로젝트만 찾는 것)를 적용했을 때, 그들은 놀라운 사실을 발견했습니다. 별점 임계값을 10에서 1,000으로 높임에 따라, 샘플 내의 '평균적인' 프로젝트는 단순히 약간 좋아진 것이 아니라, 무려 7배나 더 커졌습니다. 프로젝트들은 더 오래되었고, 참여 인원이 더 많았으며, 공식 라이선스(규칙책 같은 것)를 가질 가능성이 훨씬 높았습니다.
하지만 반전이 있습니다. 인기 있는 프로젝트를 쫓는 과정에서, 그들은 현실을 완전히 놓쳐버렸습니다. 원래의 필터링되지 않은 양동이에서는 **73.42%**의 프로젝트가 실제로 비활성 상태이거나 "버려진" 상태였습니다. 그러나 인기 필터를 적용하자 이 수치가 떨어졌습니다. 그들이 초인기 프로젝트(별점 1,000개 이상)만을 바라보게 되었을 때, 데이터는 마치 **50.65%**만이 버려진 것처럼 보이게 만들었습니다. 필터는 단순히 소음을 제거한 것이 아니라, 대부분의 프로젝트가 실제로 실패하거나 뒤처진다는 사실을 숨겼습니다. 이는 마치 도시에서 가장 성공한 사람들에게만 직업에 대해 묻고 나서, 실직한 사람들과는 대화하지 않았기 때문에 "실업률이 낮다"고 결론 내리는 것과 같습니다.
'활동성'의 함정
저자들은 또한 높은 수의 커밋(변경 사항)을 가진 프로젝트만 남기는 '활동성 필터'를 테스트했습니다. 이것은 훨씬 더 극단적이었습니다. 활동성 필터를 적용했을 때, 평균 프로젝트 규모는 18배나 커졌습니다! 이러한 필터들은 소프트웨어의 '성격' 또한 바꾸어 놓았습니다. 예를 들어, C++ 언어를 사용하는 프로젝트는 낮은 임계값 그룹에서는 흔했지만, 필터가 엄격해지자 상위 5위 안에 사라졌습니다. 반면, TypeScript와 Go는 필터링된 목록에서 훨씬 더 흔해졌습니다.
이 연구는 이러한 필터들이 중립적이지 않다고 시사합니다. 필터는 특정 유형의 프로젝트, 즉 오래되고 거대하며 자금이 풍부한 인프라 프로젝트만을 통과시키는 체 역할을 합니다. 이 과정에서 더 작거나, 새롭거나, 실험적인 프로젝트들은 밀려나게 됩니다. 설령 그 작은 프로젝트들이 실제적이고 활발할지라도 말입니다.
관계의 왜곡
아마도 가장 유희적이면서도(그리고 위험한) 발견은 이러한 필터들이 서로 다른 요소들 사이의 관계를 어떻게 망가뜨리는지에 관한 것입니다. 여러분이 "열심히 일하는 것"(커밋)이 "인기를 얻는 것"(별점)으로 이어지는지 알아내려 한다고 상상해 보세요. 실제의 혼란스러운 세상(기초 데이터)에서 이 두 가지는 약하게 연결되어 있습니다. 하지만 연구자들이 필터를 적용하자, 그 연결 고리는 갑자기 매우 강력해 보였습니다.
예를 들어, '커밋'과 '프로젝트 크기' 사이의 연결 고리는 활동성 필터 그룹에서 중간 정도인 0.466에서 매우 강력한 0.808로 급증했습니다. 저자들은 이것이 프로젝트 자체가 변했기 때문이 아니라, 필터가 그렇게 보이도록 강제했기 때문이라고 설명합니다. 크고 바쁜 프로젝트들만 남겨둠으로써, 필터는 마치 "큰 프로젝트는 항상 많은 커밋을 가진다"는 것처럼 보이게 만들었습니다. 하지만 실제로는 그 관계가 훨씬 더 복잡합니다. 이는 마치 키 큰 농구 선수들만 연구하고 나서 "스포츠에서 키가 유일하게 중요한 요소다"라고 결론 내리는 것과 같습니다. 다른 모든 사람들을 무시한 채 말이죠.
결론: 소음을 그냥 버리지 마세요
저자들은 데이터를 정제할 필요는 있지만, 아무런 생각 없이 "별점 10개"나 "커밋 500개"와 같은 임의적인 규칙을 사용해서는 안 된다고 결론짓습니다. 이러한 규칙들은 둔탁한 망치와 같습니다. 그것은 "소음"을 부수어 없애지만, 동시에 진실도 함께 부수어 버립니다. 이러한 규칙들은 소프트웨어 프로젝트가 실제보다 더 성공적이고, 오래되었으며, 균일해 보이도록 왜곡된 그림을 만들어냅니다.
무작정 필터링하는 대신, 저자들은 **층화 추출(stratified sampling)**을 사용할 것을 제안합니다. 이는 가장 큰 성들만 골라내는 것이 아니라, 큰 성, 작은 집, 그리고 부서진 조각들이 적절히 섞여 있는 레고 양동이에서 한 국자씩 떠내는 것과 같습니다. 또한 그들은 과학자들이 무엇을 '소음'으로 간주할 것인지 다시 생각해야 한다고 촉구합니다. 어쩌면 별점이 0개인 프로젝트는 단순히 실패한 실험이 아니라, 아직 발견되지 않은 숨겨진 보석일지도 모릅니다.
요컨대, 이 논문은 "완벽한" 데이터를 찾으려는 서두름 속에서, 우리가 실제의 혼란스러운 소프트웨어 세계를 이해하려고 할 때 무너져 내릴 '카드 집'을 짓고 있는 것일지도 모른다고 경고합니다. 저자들은 필터링을 완전히 중단하자는 것이 아니라, 이러한 "일률적인" 규칙을 사용하는 것을 멈추고 우리가 무엇을 버리고 있는지 더 주의 깊게 살펴봐야 한다고 강력히 제안하고 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.