statistical-analysis

2 개의 포스트

오픈챗 메시지들로부터 트렌딩 키워드 추출하기 (새 탭에서 열림)

LINE 오픈챗은 사용자 참여를 높이기 위해 채팅방 중심의 추천에서 메시지 콘텐츠 기반의 트렌딩 키워드 추천으로의 변화를 시도하고 있습니다. 이를 위해 일주일 전 대비 빈도가 급증한 단어를 Z-테스트 통계량으로 추출하는 기법을 도입했으며, 중복 메시지로 인한 노이즈를 제거하기 위해 MinHash 알고리즘을 활용한 데이터 정제 과정을 적용했습니다. 이러한 기술적 접근은 일상적인 대화 속에서 실시간 화젯거리를 효과적으로 발굴하여 서비스 활성도를 높이는 데 기여합니다. ## 트렌딩 키워드 추출의 배경과 목적 * 기존 오픈챗 메인 화면은 채팅방 검색과 추천 위주로 구성되어 있어, 이미 특정 방에 정착한 사용자가 새로운 콘텐츠를 탐색할 동기가 부족했습니다. * 개별 메시지는 단건으로 보면 맥락 파악이 어렵고 비문이 많으므로, 유사한 주제의 메시지들을 키워드 중심으로 묶어 가시적인 콘텐츠 덩어리로 제공하는 전략을 수립했습니다. * 이는 마이크로 블로그 서비스가 개별 포스트를 메인에 노출하여 재방문율을 높이는 방식과 유사하며, 사용자들에게 신선한 즐길 거리를 제공하여 서비스 KPI를 개선하고자 했습니다. ## Z-테스트 기반의 화제어 탐지 기법 * 단순 빈도 기반 추출 시 발생하는 일상어(인사, 환영 등) 편중 문제를 해결하기 위해, 빈도 자체가 아닌 '빈도의 급격한 증가량'을 기준으로 트렌딩 키워드를 정의했습니다. * 비교 기준점을 하루 전이 아닌 '일주일 전(D-7)'으로 설정하여, 요일별 반복 단어를 억제하고 며칠간 지속되는 트렌드 피크를 놓치지 않도록 설계했습니다. * 이표본 모비율 차 검정을 위한 Z-테스트 통계량을 사용하여 각 단어의 점수를 계산하며, 이를 통해 빈도수가 작을 때 발생하는 노이즈 효과를 확률 이론에 근거해 제어했습니다. * 통계적 유의미함을 확보하기 위해 빈도가 최소 30% 이상 증가한 단어들만을 최종 후보군으로 선정합니다. ## MinHash를 활용한 중복 메시지 정제 * 복사 및 붙여넣기 등으로 생성된 중복 메시지가 빈도 집계에 미치는 왜곡을 방지하기 위해 집계 전 단계에서 데이터 정제 과정을 거칩니다. * 대량의 텍스트 데이터를 효율적으로 처리하기 위해 차원 축소 기법인 MinHash를 도입하여 유사한 메시지들을 클러스터링했습니다. * 텍스트를 명사 위주로 토큰화(슁글링)한 후 k-MinHash 시그니처를 생성하고, 동일한 시그니처를 가진 메시지 묶음 중 하나만 남기고 나머지는 제거합니다. * 클러스터 내 집합들의 합집합과 교집합 크기를 비교하는 선형 시간 복잡도의 다양성 지표(SetDiv)를 정의하여, 최적의 중복 제거 정밀도를 유지하기 위한 시그니처 길이(k)를 결정했습니다. 단순한 통계 수치를 넘어 채팅 데이터의 특성인 반복성과 중복성을 기술적으로 해결한 이 방식은 실시간 커뮤니티의 활성도를 시각화하는 데 매우 유용합니다. 특히 일주일 전 데이터를 기준선으로 삼는 전략과 MinHash를 이용한 효율적인 중복 제거는 대규모 텍스트 데이터를 다루는 서비스에서 실무적으로 즉시 적용 가능한 강력한 방법론입니다.

결함 있는 배포 탐지: 라벨링되지 않은 데이터에서 지도 학습까지의 여정 (새 탭에서 열림)

배포는 소프트웨어 개발의 핵심이지만, 구글 SRE에 따르면 전체 장애의 약 70%가 배포와 관련되어 있을 만큼 위험 요소가 큽니다. Datadog은 APM(Application Performance Monitoring) 데이터를 활용해 결함이 있는 배포를 신속히 식별하는 '자동 결함 배포 탐지' 기능을 개발했으며, 이를 위해 레이블이 없는 대규모 데이터셋에서 시작해 정교한 모델을 구축했습니다. 이 과정에서 비지도 학습과 반복적인 프레임워크를 도입하여 데이터 불균형과 서비스별 다양성 문제를 성공적으로 해결했습니다. **결함 배포 탐지의 주요 장애물** - **데이터 레이블의 부재**: 서비스마다 '결함'에 대한 기준이 다르고 명확한 정답 데이터(Ground Truth)가 없어 일반적인 지도 학습 모델을 적용하기 어려웠습니다. - **데이터 불균형**: 결함 배포는 전체 배포 중 극히 일부에 불과한 희귀 이벤트이므로, 단순히 무작위 샘플링을 통해 모델을 학습시키는 방식은 정밀도가 매우 낮았습니다. - **서비스의 다양성**: 트래픽의 계절성, 낮은 트래픽 빈도, 잦은 배포 주기 등 애플리케이션마다 다른 프로필을 가지고 있어 일관된 기준을 적용하기 까다로웠습니다. **결함 배포를 정의하는 세 가지 핵심 속성** - **영향도(Impact)**: 전체 오류 수가 기준치보다 충분히 높아야 하며, 이전 버전들과 비교했을 때 오류율 증가가 유의미하게 높아야 합니다. - **시간적 상관관계(Temporal Correlation)**: 관찰된 오류율의 증가가 새로운 버전의 배포 시점과 명확하게 일치하는지 검증합니다. - **지속성(Persistence)**: 배포 과정에서의 일시적인 노이즈를 배제하기 위해, 증가한 오류율이 일정 시간 동안 안정적으로 유지되는지 확인합니다. **반복적 프레임워크를 통한 모델 고도화** - **통계적 규칙 결합**: 배포 후 60분간의 데이터를 바탕으로 오류율 변화를 비교하는 단순 규칙에서 시작하여, 점차 복잡한 통계적 체크 항목을 늘려나갔습니다. - **만장일치 투표 방식의 앙상블 모델**: 여러 통계적 체크 항목이 모두 결함이라고 판단할 때만 최종적으로 결함 배포로 분류하는 방식을 채택하여 정밀도를 높였습니다. - **반복적 개선 프로세스**: 초기에는 높은 재현율(Recall)을 목표로 설정한 뒤, 수동 레이블링을 통해 오탐(False Positive)을 분석하고 이를 걸러낼 새로운 체크 항목을 추가하며 정밀도를 보정했습니다. - **데이터 피드백 루프**: 탐지되지 않은 결함(False Negative)을 찾기 위해 실제 발생한 인시던트 데이터와 버전 롤백 이력을 활용하여 모델의 임계값을 지속적으로 튜닝했습니다. 실제 환경에서 결함 탐지 모델을 구축할 때는 완벽한 레이블을 기다리기보다, 영향도·상관관계·지속성이라는 핵심 지표를 설정하고 반복적인 피드백 루프를 통해 비지도 학습 모델을 정교화하는 전략이 매우 효과적입니다.