基于社交媒体的用户情绪建模与异常检测
2018-05-29任福继
孙 晓,张 陈,任福继,2
(1. 合肥工业大学 计算机与信息学院,安徽 合肥 230009; 2. 德岛大学 工程学院,日本 7700855)
0 引言
国内外社交平台正在迅速发展,根据新浪官方发布的2016年第三季度营业报告[1],截止到2016年9月30日,微博的月活跃人数已达到2.97亿。其中,9月份的日活跃用户达1.32亿,较2015年同比增长32%;微博活跃用户中,拥有大学以上高等学历的用户始终是微博的主力用户,占比高达77.8%,他们发表的语言往往表征了一定的情感倾向性[2]。图1和图2是本文对100位用户在2011年5月—2016年5月间总计10 275条微博进行统计后,得到的五类情感分布以及情感极性比例情况。“伤心、生气”作为消极情绪占比19%,这一数据值得关注和研究。微博异常情绪检测是微博情感分析的一个重要领域。通过提取用户微博语料中的有价值的部分,可以很好地进行网络舆情的监督,甚至公共安全的监测。防止非理性情绪在网络中蔓延,对可能出现负面情绪的事件及时做出反应。防止某些不法分子企图通过微博平台传播谣言[3],以维护社会的稳定与和谐。[4]进而还可以帮助企业根据用户对产品的评价和情感倾向,做出正确的决策,提高产品质量,减少不必要的损失,提高企业收益。
图1 100位用户五年微博类别数目
图2 100位用户五年微博情感极性分布
目前社交媒体的用户情绪异常检测方法主要有以下几种: Lin[5]提出了一种新的混合模型,因子图模型结合卷积神经网络,利用Twitter内容属性和社交信息来增强压力检测。本方法采用了大规模数据集,系统地研究用户的压力状态和社会交往的相关性。最后通过训练集预测未标注的用户压力状态,提高了检测准确性能。Zhang[6]等人以情绪因子中常用的情绪词和情绪短语为基础构建情感词典以及情绪规则库,进行微博情绪的识别和分类,取得较好结果。Wang[7]通过考虑一个文本的宾语(客体)来增加情感分类的方法,对社交数据进行异常检测,以Twitter的数据为样例学习,统计四天时间内推特上的中性、消极、积极情绪的数目。通过比较消极情绪比例来预测某一天网民情绪是否出现异常,得出的结论比较笼统,不能准确分析到具体事件和具体用户。李凌云[8]在基于微博的事件实时监测框架与系统中,提出用基于规则和统计的方法,用时间序列模型来监测异常,证明比普通的模型更有效果。Yin[9]等人提出一种基于提升系数的微博异常排名检测方法,有效防止了人为操纵微博提升排名的行为对微博排名的干扰。在仿真数据集的实验表明,该方法能通过微博拓扑有效地识别异常排名。
综合以上所述研究现状,目前异常情绪建模及异常检测主要是基于情感词典、文本分类、神经网络、基于统计和规则、基于时间序列分析模型和基于排名等,这些工作需要大量的标注语料作为训练集,故针对异常情绪的语料标注工作量很大。另外,目前的研究工作倾向于对一个社交平台上的所有语料进行分类和分析,从而检测出某个时间点的爆发异常事件,但针对单个用户的异常情绪的检测的研究较少。
1 准备工作1.1 数据处理
为了检测特定用户或者特定时间段内的异常情绪,本文的工作分为三大阶段: 数据处理阶段;异常情绪检测阶段;用户情绪建模阶段。其中数据处理阶段的工作在本节具体介绍,异常情绪检测和用户情绪建模将分别在本文第二节和第三节具体阐述。
数据处理阶段,首先采用多策略的大数据抓取技术[10]收集了100位微博用户从2011年5月到2016年5月间的10 275条新浪微博作为实验语料。原始语料标有相应的用户id,发布时间等相关信息。利用SVM分类器[11]对获取的微博语料进行文本分类,结合人工纠正标注,得到用户微博的“中性、开心、惊讶、伤心、生气”类别数目。用户微博的五种情绪数目可以作为该用户情绪相关的变量(五维向量),考察该变量与用户情绪的相关性并建模。对于用户每一类情感的微博统计结果可以用单变量的高斯建模。而针对用户五类情感的这个五维向量,则引入多元高斯分布对用户情绪建模,并进行异常检测。对标注了情感的微博文本进行统计,本文是基于用户和时间两个角度进行异常检测,按照“用户、月份、微博类别、数目”和“月份、微博类别、数目”这两种方式进行统计。
1.2 高斯分布
高斯分布就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干个基于高斯概率密度函数形成的模型。高斯模型有单高斯模型(SGM)和多元高斯模型(MGM)[12]两种。
图3是本文对一个用户11个月的微博情感的数目进行高斯分布拟合,横坐标是用户每个月发布微博的数目,纵坐标是通过高斯函数计算出的联合概念密度。从图3可以看出,当数据集数目N较小时,拟合的图形并不完全符合高斯分布,但事实是,随着N的增大它会很快收敛于高斯分布。该结果的一个推论是: 当N趋于∞时,数据分布趋于高斯分布,所以对于一组数据,当数据量足够多的时候,可以对其进行高斯分布拟合,并进行异常检测。
图3 正态分布拟合图
表1中,X1—X5是本文用来描述用户微博情绪的五个特征,对于传统的单高斯模型而言,这些特征需要一个一个被计算分析。单高斯模型可以在一定程度上检测一组数据的异常点。目前多数的研究也专注于单高斯模型或者二维高斯模型,几乎没有用三个甚至更多的变量来检测异常。本文通过将新浪微博用户的微博处理成五维的向量,也就是用五维的特征来表征一个用户的情感。单高斯分布将会被用于可视化用户微博的每一类情绪,多高斯模型则被用来解决异常情绪检测问题。假设用户的多维情感分布符合多元正态分布,多元高斯模型可以自动获取这些特征变量之间的联系,实现对这五维情绪的联合建模,避免了大量的计算工作。通过联合概率密度和设定合适的阈值[13],量化了异常检测。
表1 微博五维情绪特征
2 模型
2.1 异常检测
异常检测是从数据集合中检测异常样本。而实际生活中异常检测中的异常样本很少,传统的监督学习算法很难从这些异常样本中学习,所以大多数的异常检测方法都是基于非监督学习。目前主要有三种非监督的异常检测的方法: 基于模型[14],基于临近[15]和基于密度[16]。吴恩达教授曾以飞机发动机的异常检测[17]为例,阐述了基于密度的异常检测的基本原理: 导致飞机发动机异常有多种因素。假设X=发动机产生的热量,Y=发动机的振动强度,给出一组数据D=(D1,D2,...,Dn)。由于这里发动机异常检测是基于两个变量来确定的,根据这两个变量,确定一个个坐标点(x,y),这些数据点可以绘制在图上。如图4所示,椭圆表示的数据点密度大,可以被标记为正常;最右边的三角形标记的数据点明显偏离正常数据组,其密度比椭圆点小得多,也可看作是一个离群点(outlier)[18]。基于密度的方法来检测异常依据的是: 低密度并且与邻近点相距较远的数据点,将被标记为异常点。本文基于此原理,计算出带情感的微博数据的分布密度,判断一组数据是否出现异常,进而判断该组数据对应的用户和月份是否异常。
图4 异常检测案例
2.2 微博异常情绪检测
异常检测的方法有很多,目前主要是非参数[18]和非监督[19]的方法,本文选择多元高斯模型的原因是: 首先,可以避免大量的数据标记和训练工作;其次,可以自动捕捉变量之间的不同特征之间的相关性;第三,实验中,微博情绪是五维的变量,而多元高斯可以对多元情绪很好地建模;最后,通过计算样本的联合概率密度,量化了异常检测。
其中m是样本的个数,n是变量的维数,j从1到n。μ(n维)是每一维向量的均值,由样本均值代替,∑是协方差,由样本方差代替。假设给出一个测试样本x(k)(n维的变量), 该样本的联合概率密度可以这样计算,如式(3)所示。
(3)
图5是本文的用户微博异常情绪检测模型:
Step1统计用户/月份N类微博
Step2根据微博数据的μ和∑建模
Step3计算联合概率密度值p(x)
Step4阈值选择,确定最优的阈值ε
Step5判断p(x)<ε与否
Step6p(x)<ε,标记为异常,否则正常
图5 微博异常情绪检测模型
联合概率密度值是反应多个数据点中,当前样本数据点出现的概率,也是本文异常情绪检测的重要判断依据。联合概率密度值越小,说明数据出现频率越低,出现异常可能性越大。反之则较正常。如果某个用户/月份的联合概率密度值p(x)<ε,则被标记为异常用户/月份,阈值ε的选择将在2.3节阐述。
2.3 阈值选择
基于1.1节的微博数据,本文将10 275条微博处理成1 700个五维的数据集,每组数据集的联合概率密度值可以利用式(3)批量计算,减少了一部分时间。阈值的选择直接影响异常检测的准确率,阈值的选取是根据微博数据联合概率密度值的分布来确定,具体通过以下步骤实现:
Step1按所有用户和所有月份得到五维数据集,批量计算其联合概率密度。
Step2将所有数据集分为两部分: 交叉验证集[20]和测试集[21]。
Step3通过设置不同的阈值,在交叉验证集上进行实验,对获得的准确率进行比较。
Step4选取交叉验证集最高准确率对应的阈值作为测试集上的阈值。
3 实验与分析
3.1 联合概率密度
表2是基于单个用户统计的联合概率密度值,以用户12为例,第2列到第6列是五种情绪的微博数目。从表2中可以看出,该用户大部分月份的微博情感联合概率密度值是从1E-03到1E-04。但在2013年5月,该用户的微博数据联合概率密度值为3.40E-06。偏离其他组,是一个离群点,被标记为异常。
表2 基于用户的联合概率密度
续表
图6是表2对应的用户12的微博原文本,从图中可以看出,用户在2013年5月,确实出现“不舍得,累,失眠”等异常情绪字眼。
表3是基于月份统计的联合概率密度结果,第2列到第6列是五种情绪的微博数目,可以看出2016年5月,user1, user 8, user 19, user 20这四个用户的数据联合概率密度值明显小于其他组,这些密度值远小于其他组的用户将被标记为疑似异常。
图6 验证异常情绪文本(用户12)
用户X1X2X3X4X5联合概率密度user11400001.41E-05user2120016.50E-04user3000103.21E-03user4000103.21E-03user5021112.71E-03user6120103.01E-03user7010004.72E-03user8102112.59E-05user9111102.09E-03user10000103.21E-03user11710003.21E-03
用户X1X2X3X4X5联合概率密度user12000103.21E-03user13031019.26E-04user14010004.72E-03user15010004.72E-03user16200007.15E-03user17100006.61E-03user18100006.61E-03user19511025.45E-05user208102202.13E-06user21200007.15E-03
图7是表3对应的异常微博文本,可以看出2016年5月,用户19,20出现“心酸,可怜,忘掉过去,甘愿放弃”等异常情绪状态字眼。
3.2 异常检测准确率
为了提高异常检测的准确性,本文将1 700组数据集继续划分为500组交叉验证集和1 200组测试集。根据批量计算得到所有数据集的联合概率密度,通过观察和分析,选择三个比较合适的阈值放在交叉验证集上实验。不同的阈值将得到不同的实验精度,而精度最高的对应的阈值将被选择出来用于测试集继续实验。
图7 验证异常情绪文本(2016年5月)
表4是基于用户的阈值选择,选取三个较合适的阈值在交叉验证集上进行实验: 1E-04, 4E-05,1E-05,当阈值是4E-05时,此时异常检测准确率最高,为88.89%;表5是基于月份的阈值选择,选取了三个较合适的阈值在交叉验证集上进行实验: 1E-05, 1E-06, 1E-07,从表5可以看出当阈值是1E-06时,此时异常检测准确率最高,为88.89%。从表4和表5也可以看出,阈值设定的越小,准确率不一定越高,阈值的选取是根据不同统计的结果来进行初步观察,交叉验证和筛选,最后选择合适的结果。本文通过交叉验证,最后基于用户和月份的异常检测选取的阈值分别是4E-05和1E-06。
表4 基于用户的阈值选择
表5 基于月份的阈值选择
表6是基于用户的异常情绪检测结果,基于不同的用户统计得到的结果可以判断出一个用户在哪一段时间内情绪出现异常。从表6可以看出,实验中109个数据集被标记为异常,通过和原始的微博情绪(半自动标记结果)比较,其中91条数据集是真阳性(检测正确)异常,18条为假阳性(检测错误),最终的准确率是83.49%。表7是基于不同的月份的异常情绪检测结果,基于不同的月份统计得到的结果可以判断出一段时间内哪些用户出现异常情绪。从表7可以看出,74条数据集被标记为异常,其中65条数据集是真阳性,9条为假阳性,最终的准确率是87.84%。
为了更好地对提出的模型进行评估,本文选取了前人相关的典型工作来进行比较,目前针对社交媒体上的用户情绪进行检测的研究较少,而针对一段时间内异常的检测的相关研究较多。如图8所示,基于NMF(nonnegative matrix factorization)的方法准确率较低,约为51%。基于微博的事件实时监测方法[8]达到了73.33%的准确率,基于SSDM[22]的检测方法准确率是85.20%,相对于前者有较大提高。但本方法是针对Twitter文本的垃圾信息检测,与中文微博的异常检测有一定不同。本文通过引入联合概率密度参数对异常检测进行量化,得到异常情绪检测的准确率为87.84%,取得了一定进步。由于网络事件异常多样,特征不明显,且具有意外性和偶发性,目前,异常检测的结果均不是太高,需要进一步研究。
图8 准确率比较
3.3 用户情绪建模
单个用户的微博异常情绪检测可以通过对该用户的微博数据进行分析,群体用户的异常情绪检测则可以通过对一段时间内所有用户的微博数据进行建模分析。假设用户每个月的五类情绪数据可以看成一个五维矩阵。假设每一维相互独立且服从高斯分布,可以使用K-S(Kolmogorov-Smirnov)检验[23]对每一维的数据是否服从高斯分布进行检测。原假设: 检验分布为正态分布。
K-S检验表格中的VAR1-VAR5分别代表“中性、开心、惊讶、伤心、生气”这五个情绪变量,N代表参与检测的样本数目。评价指标是即渐近显著性(双侧)值(P-value),一般P-value设定为0.05,当P-value >0.05时,不能拒原假设,即可以认为数据服从正态分布;反之拒绝原假设,即认为数据不服从正态分布。
表8 单个用户微博情绪数据的K-S检验
注: a. 检验分布为正态分布。b. 根据数据计算得到。
由表8可以看出 “中性、开心、伤心”情绪的P>0.05,则不能拒绝原假设,这也符合前面的假设。用户大部分正常的情绪是近似符合正态分布,而生气等情绪不符合正态分布。在对单个用户高斯建模的基础上,本文研究了群体用户的微博情绪模型,对群体的情绪分布是否满足高斯分布进行了检测: 表9是100位用户其中一个月的微博情绪K-S检测结果,发现P=0<0.05,即拒绝原假设。接着对100位微博用户的60个月的微博数据进行检测,发现P均小于0.05,进一步说明群体情绪并不服从正态分布。
通过实验,本文得出如下推论:
a. 微博的“中性、开心、伤心”情绪可近似为正态分布,其中“开心”类最具代表性。
b. “惊讶”和“生气”这两类情绪数据稀疏,且具有爆发性,也就是用户异常情绪,不服从正态分布。
c. 群体的情绪不满足正态分布,它更趋向于另一种指数分布: “幂律分布”[24]。
推论a,b在上述实验中已得到验证,为了验证推论c,即群体的微博情绪满足幂律分布,本文给出了如图9所示的检验过程。幂律分布的检验主要是使用matlab进行数据拟合,原始数据row data接近长尾分布(long-tailed)形状,经过取对数得到的log data近似一条直线,最后用“残差和”对原始数据进行计算并评估分布的合理性。“残差和”越小,可以认为该组数据越服从幂律分布。图9的数据得出残差和为0.03,可以认为该组数据近似服从幂律分布,为了实验的准确性,本文对群体用户所有月份的情绪分布进行幂律分布检验,均证实了推论的正确性,即群体用户的微博情绪满足“幂律分布”。
表9 群体用户微博情绪数据的K-S检验
注: a. 检验分布为正态分布。b. 根据数据计算得到。
图9 幂律分布检验
4 总结
本文结合多元高斯模型与联合概率密度,对用户微博异常情绪进行检测,从用户和时间两个角度统计并分析,将联合概率密度值作为用户异常情绪的判断指标,量化了异常检测。结合多元高斯分布和幂律分布对单个用户和群体用户的情绪进行建模。实验结果表明,按照用户和月份进行的异常检测准确率分别为83.49% 和 87.84%。实验还通过正态分布检验,发现单个用户的“中性、开心、伤心”情绪满足正态分布,而“惊讶、生气”情绪由于具有爆发性,不服从正态分布。通过对单个用户和群体用户的微博数据进行分析,发现群体的情绪总体服从幂律分布,而单个用户的情绪则不服从,与市场规律吻合。本文的不足之处在于当前的实验数据比较稀疏,当数据足够多时,可以对用户一个月、一周甚至一天的情绪进行建模,并检测异常情绪。本文提出了一个比较完整的基于社交媒体的用户情绪建模和异常情绪检测模型,该模型对于预防大众心理问题以及检测公共安全有一定意义,进一步还可以帮助企业根据用户对产品的评价和情感倾向,来做出正确的决策。
[1] 微博数据中心: 新浪微博.2016微博用户发展报告[R/OL].[ 2017-2-8]. http: //www.useit.com.cn/thread-14392-1-1.html
[2] 孙晓,何家劲,任福继.基于多特征融合的混合神经网络模型讽刺语用判别[J].中文信息学报, 2016, 30(6): 215-223.
[3] Yang F, Liu Y, Yu X, et al. Automatic detection of rumor on Sina Weibo[C]//Proceedings of the ACM, 2012: 1-7.
[4] 何跃,邓唯茹,张丹. 中文微博的情况识别与分类研究[J]. 情报杂志,2014,2: 136-139.
[5] Lin H, Jia J, Qiu J, et al.H. Detecting Stress Based on Social Interactions in Social Networks[J]. IEEE Transactions on Knowledge and Data Engineering, 2017,(99): 1.
[6] Zhang J,Zhu B,Liang L,et al. Recognition and classification of emotions in the Chinese microblog based on emotional factor[J]. Beijing Daxue XuebaoZiran Kexue Ban/acta Scientiarum Naturalium Universitatis Pekinensis, 2014,50(1): 79-84.
[7] Wang Z, Joo V, Tong C, et al. Anomaly Detection through Enhanced Sentiment Analysis on Social Media Data[C]//Proceedings of the IEEE International Conference on Cloud Computing Technology and Science. IEEE, 2014: 917-922.
[8] 李凌云. 基于微博的事件实时监测框架与系统[D]. 北京邮电大学硕士学位论文, 2014.
[9] Yin G, Zhang Y, Dong Y, et al. A boost factor based detection method for abnormal rank of microblogging[J]. Journal of Harbin Engineering University, 2013, 34(4): 488-493.
[10] 孙晓, 叶嘉麒, 唐陈意,等. 基于多策略的新浪微博大数据抓取及应用[J]. 合肥工业大学学报自然科学版, 2014(10): 1210-1215.
[11] Chang C C, Lin C J. LIBSVM: A library for support vector machines[J]. Acm Transactions on Intelligent Systems & Technology, 2007, 2: 27.
[12] Yuan S F, Wang S T. Multi-classification method applied to face recognition based on mixed Gaussian distribution[J]. Application Research of Computers, 2013, 30(9): 2868-2871.
[13] Diehl P U, Neil D, Binas J, et al. Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing[C]//Proceedings of the International Joint Conference on Neural Networks. 2015: 1-8.
[14] Liang J, Du R. Model-based Fault Detection and Diagnosis of HVAC systems using Support Vector Machine method[J]. International Journal of Refrigeration, 2007, 30(6): 1104-1114.
[15] Idé T, Lozano A C, Abe N, et al. Proximity-Based Anomaly Detection using Sparse Structure Learning[J]. SDM, 2009: 97-108.
[16] Ma S H, Wang J K, Liu Z G, et al. Density-Based Distributed Elliptical Anomaly Detection in Wireless Sensor Networks[J]. Applied Mechanics & Materials, 2012, 249-250: 226-230.
[17] Andrew Ng: Machine Learning. Week9,Anomaly Dection[EB/OL].[2017-4-21]. https: //www.coursera.org/learn/machine-learning
[18] Dang X, Serfling R. Nonparametric depth-based multivariate outlier identifiers, and masking robustness properties[J]. Journal of Statistical Planning & Inference, 2010, 140(1): 198-213.
[19] Huang G, Song S, Gupta J N, et al. Semi-supervised and unsupervised extreme learning machines[J]. Cybernetics. 2014, 44(12): 2405.
[20] Chen K, Lei J. Network Cross-Validation for Determining the Number of Communities in Network Data[J]. Journal of the American Statistical Association,2014, 178(5): 410.
[21] Yu H, Yang J, Han J, et al. Making SVMs Scalable to Large Data Sets using Hierarchical Cluster Indexing[J]. Data Mining and Knowledge Discovery, 2005, 11(3): 295-321.
[22] Hu X, Tang J, Zhang Y, et al. Social spammer detection in microblogging[C]//Proceedings of the International Joint Conference on Artificial Intelligence. 2013: 2633-2639.
[23] Eghbali H J. K-S Test for Detecting Changes from Landsat Imagery Data[J]. IEEE Transactions on Systems Man & Cybernetics, 1979, 9(1): 17-23.
[24] AaronClauset A, Shalizi C R, Newman M E J. Power-Law Distributions in Empirical Data[J]. Siam Review, 2007, 51(4): 661-703.
E-mail: ren2fuji@gmail.com