tak's data blog

네이버 뉴스댓글 어뷰징분석 (4)GMM 모델링 본문

프로젝트/네이버 뉴스댓글 어뷰징 분석

네이버 뉴스댓글 어뷰징분석 (4)GMM 모델링

hyuntaek 2024. 6. 30. 15:20

 

https://taek98.tistory.com/108

 

네이버 뉴스댓글 어뷰징분석 (3)어뷰징 정의 및 분석

지난 시간에 이어서 어뷰징 정의 및 분석 단계로 나아가보겠다. 어뷰저의 기준은 크게 다음과 같다. 1. 어뷰징 정의 작성한 댓글로 하여금 타인에게 영향을 끼치게 만들고(부정적이든 긍정적이

taek98.tistory.com

지난 프로젝트의 끝은 다음과 같았습니다.

네이버 뉴스 어뷰징 유저는 

1) 댓글이 10위권 내에 들었던 횟수가 많은 작성자 중

2) 댓글 수 대비 top10 댓글 달성 비율이 비정상적인 사람

으로 정의한 결과 정치, 사회, 경제 뉴스 분야에서 몇몇 유저를 정의해낼 수 있었습니다.

 

하지만 단순 수치에 근거한 결론이었습니다. 그래서 추가적인 머신러닝 모델링을 통해 어뷰징유저의 분포를 추정하고자 합니다. 이 과정을 GMM 모델링을 통해 진행해야겠다고 생각했습니다.

 

지난 분석 간단 요약

  • 어뷰징 지표 정의
    • (TOP10 댓글 달성 비율 = TOP10 댓글 달성 횟수/전체 댓글 수)
  • "정치, 경제, 사회 뉴스분야"에서 TOP10 댓글 달성비율이 70%이상인 어뷰징 의심 유저 존재
    • it, 세계 등의 뉴스 분야에서는 대부분이 40%이하
  • 정치 TOP1 (82.86%) 유저는 정치적인 비난, 사람에게 영향을 끼치는 댓글 작성
    • 현 사회 비난 및 의견 동참 유도
  • 결론 및 방향
    • 정치, 경제, 사회 분야에 어뷰징 의심유저가 다수 포진
    • GMM 모델링을 통한 분포 확인

 

TOP10 댓글 달성률 분포

top10 댓글 달성률 분포

위와 같은 결론과 더불어 시각화 결과를 보면 언뜻봐도 분포가 정규분포를 보이는 것 같지는 않았습니다. 이러한 분포의 특징은 여러 분포의 결합으로도 나타낼 수 있다고 생각했고, 특히 이상탐지에 유효한 GMM모델링으로 분포의 결합을 추정해 어뷰징 의심 유저를 분포로 정의해낼 수 있다고 판단하여 모델링을 진행하게 되었습니다.

 

 

GMM 모델링

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
#from sklearn.cluster import KMeans
from sklearn.mixture import GaussianMixture

top10_dist2 = top10_dist.set_index('userIdNo')
top10_dist3 = top10_dist2[['top10_ratio']]
# Gaussian mixture clustering
gmm = GaussianMixture(n_components=2, random_state=0).fit(top10_dist3)
gmm_labels = gmm.predict(top10_dist3)
gmm_labels

n_components = 2,  2개의 분포를 기반으로 모델링을 실시하였습니다. 2개로 선정한 기준은 아래에 정리하였습니다.

 

 

top10_dist3['gmm_clusters'] = gmm_labels
top10_dist3['gmm_clusters'].value_counts()

 

 

클러스터별 TOP10 댓글 달성률(평균, 표준편차)

 

 

sns.pairplot(top10_dist3,
            diag_kind='kde',
            hue='gmm_clusters',
            corner=True,
            palette='bright')
plt.show()

클러스터별 분포
GMM 모델링 결과

모델링 결과 실제로 점선과 붉은 점선 2개의 분포로 추정되었음을 확인하였습니다. 붉은 점선(어뷰징 유저)의 분포는 비정상적인 TOP10 댓글 달성률(평균 70%대)로 "정치, 경제 뉴스분야"의 유저가 대다수 분포하였음을 확인했습니다.

 

 

실루엣 계수

실루엣 계수

분포 수를 결정하기 위해 실루엣 계수를 활용하였습니다. score가 가장 높은 n_components = 2일 때를 기준으로 gaussian을 가정하여 피팅한 결과입니다.

 

 

여기서 얻을 수 있던 내용은 GMM 모델링을 통해 어뷰징 유저에 대한 분포를 정의할 수 있었고, 왜 이상탐지 분야에 GMM이 쓰일 수 있는지 공부할 수 있었던 계기가 되었습니다. 단순 분포로 판단하기 보다는 모델링을 통해 어뷰징 유저가 해당 분포에 속할 확률을 계산하며 의사결정에 지원한다면 조금 더 설득력있는 결과이지 않을까 생각이 들었습니다.

 

 

참고자료:

https://medium.com/towardsdev/clustering-with-gaussian-mixture-models-c2c3ecdc6640

https://untitledtblog.tistory.com/133

https://www.youtube.com/watch?v=NNwkDi-2xVQ