项目进展报告
电商产品评论数据的异常检测
数据获取及预处理
在项目提出报告中,我们拟采用Amazon review数据集(这是一个亚马逊网站评论的数据集,包括各种各样的产品的评论信息),但是经过调研发现,目前没有一个对评论信息的统一标注方法,使得某些评论数据在这个工作中是正常的,但在另一个工作中是异常的,导致最终对工作的评价也不够客观。因此,在经过调研后,我们更换了研究的数据集,选取了YelpCHI数据集,这个数据集包括在芝加哥地区的67395个酒店和餐馆的评论信息(类似我们国家的美团评论,也属于电子商务的一种)。和Amazon数据集不同的是,Yelp网站提供滤波算法用于识别假/可疑的评论并将其分为过滤列表,过滤后的评论也网站上公开(虽然这个结果是不够准确的,但是仍然作为后来研究者的基准)。 我们在http://odds.cs.stonybrook.edu网站上下载的YelpCHI数据集,该网站公开提供大量的、不同领域的离群点检测数据集,我们选取http://odds.cs.stonybrook.edu/yelpchi-dataset/的数据集下载。 下面简单介绍一下该数据集。该数据集有67395条数据,包括酒店和旅馆的评论信息,其中认为是虚假评论的评论占13.23%,该数据集有38063个评论人,其中20.33%认为是虚假评论发布者,该数据集有201个评价产品。 YelpCHI数据库包括用户和产品之间的关系信息外,在评论数据集中存在多种元数据,包括评论、时间戳的文本内容,和星级评定。Yelp有通用的滤波算法过滤出可疑评论,并在Yelp的业务页面显示推荐的评论。这个过滤的结果也作为我们检测虚假评论的基准,也就说我们的检测结果的评价是在该过滤结果的基础上做展示。 我们只选取了酒店的评论信息做虚假评论检测。
数据分析与可视化
每一条数据的属性有:评论的时间,评论的标识,评论人的标识,评论产品的标识,对产品的评级(1-5)和评论内容,以及附加的过滤结果(虚假评论和正常评论),全部是标称属性。首先进行初步分析,根据评论发生的时间、评级等行为分析虚假评论和正常评论。我们选取一些特征分析(下面只列了部分)。
①RD:星级评级分布
从图中可以看出,所有的评论评级都是好评居多(符合人们的消费习惯),但是对于虚假评论的极端评级较多(评级为1和5),而正常评论的好评居多。
②ToO:评论发生的时间(分布的年限和月份)
正常评论和虚假评论的分布基本类似,仅从评论的角度看很难得到有效信息。
③ISR :是否是该评论者唯一的评论(0表示非唯一,1表示唯一)
可以很明显的看出差别,正常评论者往往评论不止一次,而虚假评论者的评论很多的情况下是唯一的。 接下来进行进一步的探索评论的内容对于识别虚假分布的影响,选取下面关于文本的特征(只列了部分)。
①L:评论的长度分布(归一化后)
可以看出评论的长度分布类似,但是正常的评论的长度相对来说比较长。
②PP1:d第一人称出现的比例
正常评论的第一人称出现的频率相对较低,而虚假评论为了可信度,往往采用较多的第一人称。
③RES:感叹词出现的比例等
感叹词的分布(!等)类似,一般情况下使用较少。
上面选取了部分基于行为特征和基于内容的特征的分布情况,可以看出,虚假评论和正常评论一定情况下是可以进行区分的,这也是我们工作的可行性。
模型选取
最开始我们选择了朴素贝叶斯分类器和SVM分类器进行异常的检测,因为本身可以把异常评论当成一个类别,正常评论当成一个类别进行二分类任务,因此可以用分类器完成目标,同时可以看出,不同的类别的评论在某些特征上明显可区分,因此可以根据提供的特征完成分类任务。
挖掘实验的结果
我们的数据集中正常的评论有53400个,虚假的评论有8141个,为了训练的准确性,要求训练的数据正负样本平衡,因此,我们选取虚假样本的70%作为训练的负样本,选取同样数量的正常评论作为训练的正样本,因此最终的训练样本数为11396个(正负样本1:1),而剩下的所有的50145个样本作为测试样本。然后分别通过朴素贝叶斯分类器和线性SVM分类器完成分类任务,来检测异常。下面是我们的分类结果(多次随机划分样本,测试求平均值)。
方法 朴素贝叶斯 线性SVM
平均正确率 67.75% 59.02%
可以看出朴素贝叶斯的分类效果比线性SVM好。
存在的问题
问题1:样本分布不均匀,异常的评论相对较少,采用分类器的方法使得大量的正样本被浪费,可能学习不到正样本的内在规律,这使得在每次随机选择训练样本训练后的测试结果有较大的变化幅度。下一步的解决方法是采用异常点检测的方法,通过识别正常评论的数据内在规律和模式,将虚假评论视为异常点,进行异常检测,完成目标, 问题2:目前选取的特征都是以评论为主题的,其实有一些的异常信息存在于产品和评论人的信息中(例如评论是否是评论人的唯一评论这一特征),接下来选择的特征要考虑更加全面,进一步提升性能。
下一步工作
首先观察虚假评论关于评论人和产品的内在规律,选取更多的特征进行进一步学习;其次采用异常点检测的方法学习更多的数据的内在规律(利用更多的正常评论):先采用由多层感知器组成的自编码器只对正常时评论特征做降维操作,然后使用聚类方法将所有正常的数据聚类(因为正常的数据也有不同的类型),使用该方法可以有效地识别正常评论的模式,然后在测试时的离群点认为是虚假评论,可以有效地检测出异常。