python基于评论情感分析和回归、arima销量预测的购物网站选品

简介: python基于评论情感分析和回归、arima销量预测的购物网站选品

这是因为在线评论:与该网页上的产品销售有着直接相关,便于消费者了解产品信息和服务,并且消费者认为评论信息具有更高的可信度;对企业网络购物平台经营决策起作用,利于企业选择进入市场的时间,选择更受消费者青睐的商品,提高效益。

本文旨在为某公司客户提供线上销售策略,基于不同于以往的分析方式,分析在线评论内部各属性的特点以及他们之间的关系,并从动态的角度探究产品在网络平台上名誉的变化和发展潜力,从而提出有助于提高销量的建议。


解决方案


任务/目标

分析产品口碑的影响因素,从评论情感分析和销量预测两个角度对网站选择商品和网站运营给出建议。


数据源准备


以在线评论作为基础数据源(来自于亚马逊网站的)


数据预处理


数据处理的目的是为了去除掉数据集中的脏数据,从而确保数据质量,提高数据可用性与使用率,保证分析结果的准确性。因此,根据本文数据处理的需要,我们需要对数据集进行如下数据处理:

a、删除对应产品不属于我们要研究的品类的数据。本文只针对吹风机、微波炉、奶嘴,其他产品不具有参考价值。

b、删除评论星级不属于[1,5]的数据。商品的星级评分在亚马逊网站上都是1-5范围内,但是由于系统bug,会导致出现超出此范围的评分,超出了正常值域范围。

c、删除helpful votes大于total votes的数据。认为其为错误数据。

d、删除review title、review body均为空的数据。当这两个均为空时,这条数据没有传递任何评论信息,因此根据数据有效性原则。

e、基于本文产品预测的目标,我们需要按照时间维度对得到的产品信息进行划分,并且按照同一产品的ID在时间维度上进行汇总。对于评论总数小于20的产品、后几年的评论总数均为0的产品我们选择删除。数据显示为0可能是数据储存失败、存储器存在问题等原因,也可能是该产品退出了市场,对产品预测没有参考意义。


文本预处理

a、对评论文本数据进行规范化。浏览数据集中的评论数据,我们发现有很多评论中出现单词拼写错误、表情符号使用较多以及其他冗余信息,他们不仅不能提供任何有用信息,还会影响模型的运行效率。因此,我们需要过滤掉这些信息:

b、英文分词。

1)运用python对每一条评论进行英文分词。

2)去掉标点符号和停用词。冠词、介词、副词、连词等虽然在评论中出现的频率较高,但是它们无法表示评论信息的特征。

c、词性标注和词频统计。由于我们要对产品设计提出更好的建议,为了尽量符合消费者的需要,我们需要从评论中提取出相应的信息。标注产品属性和消费者情感中涉及到的名词、形容词、副词和否定词等。


点击标题查阅往期内容


主题挖掘LDA和情感分析图书馆话题知乎用户问答行为数据


01

02

03

04


建模


模型一:零膨胀负二项回归模型


以信息采纳理论和负面偏差理论为基础,结合情感分析和零膨胀负二项回归方法,从评论者信度、评论信息质量、评论极性三个方面探究评论有用性投票影响因素。

分析:

①评论有用性投票是一个计数变量,且不呈正态分布,不满足普通最小二乘回归模型,且数据较为分散,此种情况下采用泊松回归模型拟合效果不理想,因而采用负二项回归模型。

②评论有用性投票零值比例高,是因为消费者并不会浏览所有的评论,因此投票的评论为0,并不代表该评论没有用。建立逻辑回归模型对因变量中的零值进行解释。

模型:

逻辑回归模型(对因变量有用性投票数为0,做出解释)

变量类型 变量名 变量 变量解释
自变量 评论发表时间 time  评论已经发表的时间(距数据最后一天)
商品总评论数 reviewtotal

商品销售排名 rank 认为评论数反映了销售量
因变量 评论有用性投票数 helpfulvotes 评论获得的有用性投票的总数


负二项回归模型


变量类型 变量名 变量 变量解释
自变量 评论者有用性 reviewer_use 评论获得的有用性投票的数/得到的总票数
是否为资深评论员 vine 0:否 1:是
购买是否打折 discount 0:否 1:是
评论长度 length 评论所含单词的数量
星级极差 rateGap 星级评分与平均星级差值的绝对值
情感指数 emotion_rating 评论文本的情感倾向性指数
因变量 评论有用性投票数 usefulNum 评论获得的有用性投票的总数

模型改进 :修正星级

(1)星级评价是一种简单,易于操作的评价形式,但无法全面展示评论者的情感态度。例如:A觉得产品毫无瑕疵所以打了5星,B觉得产品有一点缺点,但总体满意还是打了5星。因此,我们在原有的评分系统上进行改进,依旧采用所有评论者评分均值的方法,但对每一条评论,使用评论情感指数修正星级评价,增加准确性。

符号说明:

变量属性 变量名 变量 变量说明
自变量 评论星级
第i个产品的第j个评论者评论星级 j=0,1…num
情感指数
第i个产品的第j个评论者评论文本情感指数
因变量 修正评分
第i个产品的修正评分

以微波炉的产品为例,将原来的产品总分与修正后的评分做对比:

发现,修正后的模型和原来的分数差距很小,只是将评价等级范围扩大。但可以很好的刻画评论者的评论极性和情感强度,能将极断的情绪放大,情感表达更强烈。同样修正模型也可以更加完整地展示评论者的态度。

 

(2)将产品综合情绪作为自变量,产品的评论总数作为独立变量,综合星级作为因变量,建立如下回归模型:

通过R语言进行回归,我们可以得到回归模型:

此外,rsqure为0.9901,很接近于1,说明回归效果很好。

 

将产品综合情绪作为自变量,产品的评论总数作为独立变量,综合星级作为因变量,建立如下回归模型:

通过R语言进行回归,我们可以得到回归模型:

此外,rsquare为0.9901,很接近于1,说明回归效果很好。

这种给产品打分的模式可以更好的刻画评论评价中蕴含的情绪,越准确的打分越能够了解产品在市场上的口碑以及产品的品质,从而使得顾客更直接获得对产品的感知,提高对购物网站的认同度。


模型二:网络口碑感知的动态内生模型

网络口碑量化指标的确定。在实际生活中,消费者对网络口碑感知是一个阶段的过程,是对一个时间段内产品的属性、质量、服务等的总和感知,因此,上诉分析的影响因素对网站口碑感知的印象是存在滞后性的,此时就产生了在线评论和网络口碑感知之间的动态均衡过程。

分析:

自变量:(与评论有关)

①     产品综合星级():是消费者对产品感受最直接的反应,认为星级越高,消费者对该产品的评价越好

②    在线评论的数量(cNum):评论数越多,说明参与评论的人越多,也反应出产品销量高,消费者对该产品的关注多

③    负面评价在线评价的比例 (nage):负面评论是影响口碑的重要因素,并且负面评论降低产品销量比正面评论所带来的销量上升的效果更佳显著。

④     综合情感指数():由评论文本分析得到的情感指数可以反映评论者对产品更全面的感知

控制变量:(与评论无关但可以度量的)

①    竞争者的数量(pnum),   还包括降价幅度②产品发布时间(time)

哑变量:(与评论无关且不可度量的因素)

①     品牌效应(brand):该产品资深评论者的星级评价平均值  

模型

基于上述分析的结果,建立网络口碑感知与各变量之间的线性模型来进行估计,为了避免异方差及偏态性的影响,公式中的部分变量以自然对数表示:

时间节点 t 控制各变量周期的时间节点
控制值 A,B,C 控制各变量是否起作用的布尔值(0或1)
各变量系数
各变量的系数
自变量、控制变量
t时段第i个产品的第j个自变量、控制变量、哑变量
产品销售排名
t时段的产品销量排名

为了证明在线评论对口碑感知的影响大小,构建两个模型进行对比:

当A=0,B=1, C=1,T=4时,得到模型一

当A=1,B=1,C=1,T=4时,得到模型二:

通过分析各变量对产品网络口碑感知的影响,为了防止出现多重共线性的问题,对相应的变量进行了中心化处理,处理之后,所有的方差膨胀因子VIF小于5,说明多重共线性问题被有效规避。

 

模型三:ARIMA时间序列预测模型

ARIMA模型是在ARMA模型的基础上加入了差分处理。模型公式:


选取了亚马逊网站上三种商品(吹风机、奶嘴、微波炉)的评论数据分别进行分析。在数据预处理之后,以奶嘴为例,得到23764条数据,时间跨度为2003年4月到2015年8月,每款商品的总体销量范围在0~833之间,所以本文以月为单位划分时间进行模型构建与验证,并预测之后5个月的销量。

观察时序图,可以看出销量整体走势是呈上升趋势的,但不太平稳,有一定的波动性,所以进行一阶差分处理,符合ARIMA模型。

模型一:

采用微波炉所有产品的数据,其中有用性投票最小为0,最大是814,有用性投票的分布比较离散,约41.14%的有用性投票数为0,适用于我们建立的模型。结合回归分析结果与描述性统计结果进行分析。

变量 estimate SE Z P
负二项 -


Intercept -1.065e+00 6.182e-02 -17.223 <2e-16
reviewer_use 2.809e+00 5.950e-02 47.207 <2e-16
vine 4.029e-01 4.037e-02 9.981 <2e-16
discount -1.134e-01 2.739e-02 -4.139 3.49e-05
review_length 3.212e-03 3.835e-05 83.746 <2e-16
emotion_rating 2.719e-01 1.634e-02 16.644 <2e-16
rate_gap 1.915e-01 1.387e-02 13.810 <2e-16
logistic



Intercept -3.583279 1.436305 -2.495 0.012603
time -0.006731 0.001543 -4.363 1.28e-05
rank 0.087540 0.051973 1.684 0.092115
review_total 0.012404 0.003479 3.565 0.000364

结果表明,评论者有用性,评论信息量,评论回复数,极端评分,评论文本消极倾向对评论有用性投票具有积极正向影响,评论者发表评论数,评论者是否打折购买对评论有用性投票数有负面影响。基于此,建议网站改善评论排序机制和商品推荐机制,方便消费者筛选高质量评论,重视负面评论,在选择商品时考虑网络口碑。


模型二

所建立的网络口碑动态内生模型可以展示一个产品随时间的名誉变化,由此网站可以更好的选择商品,优化网站质量。另外,影响口碑的因素还包括产品发布时间、产品质量、服务质量、降价幅度等因素。****

模型三:

a.微波炉各具体产品未来五个月的销量预测

由图可以看出2015年8月到2016年1月销量最高的是ID为423421857的商品,虽然在2015年9月份有所下降,但10月份又呈上升态势。771401205商品的销量在未来5个月不如其他商品销量平稳。因此优先选取423421857产品,其次为523301568产品,544821753产品。

b.吹风机各具体产品未来五个月的销量预测

未来5个月各产品销量排名不会改变,虽然732252283商品销量有所下降,但在9月后又继续上升;但486774008和694290590都呈下降趋势;其他都很平稳,并无增长的明显态势。因此推荐程度为:732252283>758099411>235105995。

 

b.奶嘴各具体产品未来五个月的销量预测

246038397明显销量遥遥领先,392768822有很大的增幅后趋于平稳并超过其他产品,虽然572944212销量领先于450475749,但其呈下降趋势,因此我们选择推荐:246038397>392768822大于450475749。

相关文章
|
13天前
|
数据采集 Web App开发 iOS开发
爬取B站评论:Python技术实现详解
爬取B站评论:Python技术实现详解
|
15天前
|
机器学习/深度学习 数据采集 自然语言处理
数据分享|Python酒店评论文本分析:tfidf、贝叶斯、逻辑回归,支持向量机SVM、K最邻近KNN、随机森林、LDA主题模型
数据分享|Python酒店评论文本分析:tfidf、贝叶斯、逻辑回归,支持向量机SVM、K最邻近KNN、随机森林、LDA主题模型
|
19天前
|
机器学习/深度学习 算法 Python
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
|
19天前
|
API vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列(上)
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
|
25天前
|
机器学习/深度学习 数据可视化 Linux
python用ARIMA模型预测CO2浓度时间序列实现
python用ARIMA模型预测CO2浓度时间序列实现
|
25天前
|
数据挖掘 vr&ar Python
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
|
25天前
|
vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列4
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
|
26天前
|
数据可视化 Python
Python用ARIMA和SARIMA模型预测销量时间序列数据
Python用ARIMA和SARIMA模型预测销量时间序列数据
|
26天前
|
机器学习/深度学习 数据可视化 Linux
ARIMA模型预测CO2浓度时间序列-python实现
ARIMA模型预测CO2浓度时间序列-python实现
|
27天前
|
数据可视化 jenkins vr&ar
python3用ARIMA模型进行时间序列预测
python3用ARIMA模型进行时间序列预测