Python tech/NLP

[Python] 감성 분석 결과 + 유의미한 차이인지 확인

콜레오네 2021. 2. 7. 22:50

지난 포스팅에서 딥러닝 모델을 활용하여 댓글 데이터의 감성을 예측하였습니다.

tech-diary.tistory.com/9

 

[Python, keras] 딥러닝을 활용한 감성 예측 + 그래프 생성(plot)

지난 포스팅에서 keras를 활용하여 딥러닝 모델을 생성했습니다. 생성된 모델을 활용하여 새로운 데이터의 감성을 예측해봅시다. 저장된 RNN 모델을 불러옵니다. 이때, TextVectorization으로 생성된

tech-diary.tistory.com

이번에는 생성된 종교별 감성 흐름 그래프의 차이가 유의미한 차이인지 확인해보도록 하겠습니다.

본 포스팅에서는 다음 3가지 방법을 통해 감성값의 차이를 검증합니다.

  • 댓글 개수

  • 표준 편차

  • 유의 확률


월별 댓글 개수 그래프

 

'댓글 개수가 많다' 는 것은......

비슷한 감성을 가진 사람의 수가 많다 = 그런 분위기가 더 확산되었다. = 감정이 더 강하다

라고 볼 수 있습니다.

plots.plot(x, y, 'b', color=colors , label="title name" , marker='o')

위 코드를 통해 꺾은선 그래프를 생성하였습니다.

키워드별로 총 5개의 선이 그려질겁니다.

꺾인 위치를 표시하기위해 marker는 'o'로 설정하였습니다.

 

그래프 생성 결과

키워드별 댓글 수 그래프

월별로 댓글 수를 보여주는 그래프입니다.

검색 기간에 약간의 차이가 있기 때문에 x축의 범위가 모두 동일하지는 않습니다.

'신천지'는 2020년 이후에 확실히 댓글 수가 폭증하였고

'종교'와 '천주교' 키워드 또한 2020년 이후에 댓글 수가 많아졌네요.

'불교'는 전체적으로 댓글 수가 적고, '기독교'는 2019년 12월에 댓글 수가 많은데 크리스마스 때문으로 보입니다.

 


표준 편차 계산

표준 편차는 평균과의 차이가 어느정도 나는지를 수치화한 것으로,

  • 표준 편차가 작으면 -> 좁게 분포되어있고, 전체 데이터 그룹의 차이가 적습니다

  • 표준 편차가 크면 -> 넓게 분포되어있고, 전체 데이터 그룹의 차이가 큽니다.

물론 이는 상대적인 차이입니다.

import math
sentiment = 전체 감성값 리스트
average = round(sum(sentiment) / len(sentiment) ,3) #평균

vsum = 0.0
for x in sentiment:
    vsum = vsum + (x - average) ** 2
var = round(vsum / len(sentiment),3) # 분산

std = round(math.sqrt(var),3) #표준편차

위는 Python으로 데이터의 평균, 분산, 표준편차를 구하는 코드입니다.

 

계산한 결과

키워드별 평균 및 표준 편차

위와 같은 결과가 나옵니다.

평균은 모두 감소했네요. 이때 평균은 가중 평균이 아닌 일반 평균으로 계산한 값입니다.

표준 편차는 '기독교'에서는 큰 차이가 없지만, 나머지 모든 키워드에서 감소했습니다.

코로나19 이후 기간에서 부정적인 감정이 더 강하고 일관된다는 것을 보여줍니다.

 


유의 확률 (p-value)

데이터 그룹의 차이가 유의미한 차이인지 알아보기 위한 방법중 하나로 유의 확률을 계산합니다.

유의 확률에 대한 구체적인 설명은 아래 위키백과 참조...

ko.wikipedia.org/wiki/%EC%9C%A0%EC%9D%98_%ED%99%95%EB%A5%A0

 

제가 정리한 정보에 따르면.....

유의 확률 또는 p-value는 귀무 가설(Null hypothesis)이 옳다고 가정할 때 얻은 결과보다 극단적인 결과가 실제로 관측될 확률이다. 실험의 유의 확률은 실 험의 표본 공간에서 정의되는 확률변수로서, 0에서 1 사 이의 값을 가진다. p-value는 관찰된 데이터가 귀무 가설 과 양립하는 정도를 0에서 1 사이의 수치로 표현한 값이 다. 이때, 유의 수준(Significance level)을 기준으로 p-value가 유의 수준보다 높다면 귀무 가설을 채택하고, 낮다면 대립 가설(Alternative hypothesis)을 채택하게 된다.

여기서 귀무 가설은 '이전과 이후 기간에 차이가 없다.'

대립 가설은 '이전과 이후 기간에 차이가 있다.'

 

저는 95%의 신뢰도를 기준으로 유의 수준은 5%로 설정하였습니다.

위에서 살펴보았듯이, 두 그룹에서 분산의 차이가 있기 때문이분산(Heteroscedasticity of variance)으로 계산해줍니다.

여기서는 '차이가 있다 또는 없다.'로 구분되기 때문에 방향성이 없습니다. 따라서 양측 검정 방법을 적용합니다.

 

 

저는 p-value를 계산하기 위해서 Excel을 사용했습니다.

엑셀에서 TTEST 함수를 사용하면 되는데요.

이때, 첫 번째와 두 번째 인자는 데이터 그룹 2개의 범위를 지정하면되고

세 번째 인자는 tails의 수, 즉 저는 양측 검정이기 때문에 2

네 번째 인자는 분산이 같은지 혹은 데이터 개수가 같은지인데, 저는 이분산이고 데이터 개수가 다르므로 3 입니다.

 

계산한 결과를 보면

키워드별 기간에 따른 p-value

전체 키워드에서 모두 p-value유의 수준인 0.05보다 낮은 수치를 보입니다.

따라서 귀무 가설(차이가 없다.)는 기각되고, 대립 가설(차이가 있다.)는 채택됩니다.

 


여기까지 이전에 분석한 감성값이 기간에 따라 차이가 있는지를 살펴보았습니다.

  • 댓글 개수
  • 표준 편차
  • 유의 확률

3가지 방법을 통해 감성값의 변화를 검증한 결과

이후 기간이 더 강한 감성을 가지고 있으며, 유의미한 차이가 있다라는 것을 알 수 있었습니다.

 

감사합니다.

 

반응형