tak's data blog
네이버 뉴스댓글 어뷰징분석 (4)GMM 모델링 본문
https://taek98.tistory.com/108
지난 프로젝트의 끝은 다음과 같았습니다.
네이버 뉴스 어뷰징 유저는
1) 댓글이 10위권 내에 들었던 횟수가 많은 작성자 중
2) 댓글 수 대비 top10 댓글 달성 비율이 비정상적인 사람
으로 정의한 결과 정치, 사회, 경제 뉴스 분야에서 몇몇 유저를 정의해낼 수 있었습니다.
하지만 단순 수치에 근거한 결론이었습니다. 그래서 추가적인 머신러닝 모델링을 통해 어뷰징유저의 분포를 추정하고자 합니다. 이 과정을 GMM 모델링을 통해 진행해야겠다고 생각했습니다.
지난 분석 간단 요약
- 어뷰징 지표 정의
- (TOP10 댓글 달성 비율 = TOP10 댓글 달성 횟수/전체 댓글 수)
- "정치, 경제, 사회 뉴스분야"에서 TOP10 댓글 달성비율이 70%이상인 어뷰징 의심 유저 존재
- it, 세계 등의 뉴스 분야에서는 대부분이 40%이하
- 정치 TOP1 (82.86%) 유저는 정치적인 비난, 사람에게 영향을 끼치는 댓글 작성
- 현 사회 비난 및 의견 동참 유도
- 결론 및 방향
- 정치, 경제, 사회 분야에 어뷰징 의심유저가 다수 포진
- GMM 모델링을 통한 분포 확인
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()
sns.pairplot(top10_dist3,
diag_kind='kde',
hue='gmm_clusters',
corner=True,
palette='bright')
plt.show()
모델링 결과 실제로 점선과 붉은 점선 2개의 분포로 추정되었음을 확인하였습니다. 붉은 점선(어뷰징 유저)의 분포는 비정상적인 TOP10 댓글 달성률(평균 70%대)로 "정치, 경제 뉴스분야"의 유저가 대다수 분포하였음을 확인했습니다.
실루엣 계수
분포 수를 결정하기 위해 실루엣 계수를 활용하였습니다. score가 가장 높은 n_components = 2일 때를 기준으로 gaussian을 가정하여 피팅한 결과입니다.
여기서 얻을 수 있던 내용은 GMM 모델링을 통해 어뷰징 유저에 대한 분포를 정의할 수 있었고, 왜 이상탐지 분야에 GMM이 쓰일 수 있는지 공부할 수 있었던 계기가 되었습니다. 단순 분포로 판단하기 보다는 모델링을 통해 어뷰징 유저가 해당 분포에 속할 확률을 계산하며 의사결정에 지원한다면 조금 더 설득력있는 결과이지 않을까 생각이 들었습니다.
참고자료:
https://medium.com/towardsdev/clustering-with-gaussian-mixture-models-c2c3ecdc6640
'프로젝트 > 네이버 뉴스댓글 어뷰징 분석' 카테고리의 다른 글
네이버 뉴스댓글 어뷰징분석 (3)어뷰징 정의 및 분석 (2) | 2024.03.09 |
---|---|
네이버 뉴스댓글 어뷰징분석 (2)간단분석 (0) | 2024.02.05 |
네이버 뉴스댓글 어뷰징분석 (1)크롤링 (0) | 2024.01.13 |