最近,我们,Sbertech的数据科学大数据团队,完成了机器学习领域的一个有趣的试验:我们试图根据应用商店中的用户反馈文本,使用移动Sberbank Online识别移动Sberbank Online工作中的事件。 我们从Google Play收集了2014年10月至2017年10月期间的评论数据集(882,864条评论),过滤掉了92,711条负面评论(1-2星)并开始工作。 我们将根据削减情况告诉哪一个。

我们将立即回答一个可能的问题。 正反馈与负反馈之比与事件无关,因此需要更多狡猾的方法。 此外,我们想确定事件的主题。
为了识别异常,我们选择了自回归综合移动平均值的Arima模型。
非平稳时间序列
Xt的 ARIMA(p,d,q)具有以下形式:

其中
εt是固定时间序列;
c,ai,bj-模型参数; △
d是阶次
d的时间序列中的差的算子(依次从一阶序列中取
d阶的阶差-先从时间序列中取值,然后从获得的一阶差中取值,再从二阶中取等)。
我们在整个样本中训练了模型。 为了预测所选日期的负面评论的正常水平,使用了三个月的时间间隔。 该预测是在所选日期之前一周进行的,离散化为一天。
然后形成了置信度。 为此,将计算得出的置信区间值添加到每个日期的预测函数值中。 为此,在正常水平预测所基于的三个月时间间隔内,得出了预测函数与否定评论的实际数量的所有偏差的分布的第三分位数。
当负面评论的实际数量超过置信度水平(预测值+置信区间)时,记录异常。 这是图表上的样子:
红色为实际评论数。 黄色-具有置信区间的正常水平的预测值为了进一步分析,选择了5个不同的峰,分别出现在2017年2月27日,2017年3月15日,2017年9月14日,2017年9月18日,2017年9月20日。
通过将评论文本与两个基于BIGARTM和Word2Vec的模型一起使用内置的Kmeans聚类对事件文本进行聚类来进行事件识别。
BIGARTM库(主题模型)
主题模型表示集合
D的文档
d中术语(单词或短语)
w的条件分布
p(w | d)的表示形式:

其中T是各种主题;

-主题
t中术语的未知分布;

-文档
d中主题的未知分布。
专题模型的参数-矩阵

和

-通过解决最大化可能性的问题找到:

相对于其他概率模型的主要优点是可以使用用于平滑,稀化和去相关的正则化器。
使用Word2Vec进行建模
使用Word2Vec的模型基于张量代数。 它的下面是一本字典,里面有所有评论中的单词。 Word2Vec单词的矢量表示形式已成为群集的基础空间。
该算法的目的是使簇的点与这些簇的中心的总二次偏差最小化:
k是簇的数目,
S i是结果簇,
i = 1.2 ...
k ,
μi是来自簇
S i的所有向量
x的质心。 现在,让我们在特定示例上查看模型的结果。
异常时期见顶03/15/2017
BIGARTM :
集群号
| 标签
| 集群审查示例 (来源词汇)
|
1个
| 更新版本操作帐户工作错误无法安装删除转移退货
| “旧版本无法正常工作。 我不需要更新。 手机上没有空间! 还可以使用旧版本!
“我根本无法安装该应用程序,手机上有足够的内存,超过50%,但是该应用程序顽固地写道,无法安装,错误24! 更正错误,以前使用过,非常喜欢它!!!”
“升级后,它停止工作了! 出现一个带有消息的窗口:“”应用程序中发生错误“” Sberbank„“并告别。 该死的更新! 在更新之前,一切正常,完全满意。 一路上,我没有这样的废话!”
|
2
| 连接去写工作无法存储无法持续飞行可怕地删除问题
| “我无法输入应用程序,我输入代码,输入内容,我无法恢复安全连接! 你在干嘛!? 否则您将被强制更新! 我对旧的更新感到满意! 解决问题!”
“您对一个出色的程序做了什么? 露出和遗憾。 每2分钟弹出一个窗口,显示文本“”,与Sberbank的连接中断””。 我决定删除并重新安装。 现在它根本没有打开。 立即将其扔出程序。 伙计们,返回旧版本»
|
3
| 短信not_进入密码卡,您需要谢谢not_work输入not_也许可以飞出
| “ SMS没有通过密码进入电话”
“不注册,写短信会附带代码,什么也没有。”
“更新后,一条关于输入的短信进入了,但是阈值在4秒钟后消失了。 怎么做?”
|
Word2Vec + Kmeans:集群号
| 标签
| 集群审查示例 (来源词汇)
|
1个
| 更新连接登录使用更新
| “我无法输入应用程序,我输入代码,输入内容,我无法恢复安全连接! 你在干嘛!? 否则您将被强制更新! 我对旧的更新感到满意! 解决问题!”
“连接断开,连接到另一个网络-这是我想进入应用程序时最常看到的。 当它们发布时,我总是立即发布更新。 如果成功,一切都会很好。”
|
2
| 短信输入电话登录
| “更新后,一条关于输入的短信进入了,但是阈值在4秒钟后消失了。 怎么做?”
“ SMS没有通过密码进入电话”
“注册时,SMS没有提供密码...”
“无法输入。SMS代码不出现。请尽快更正所有内容。”
|
比格特姆
| Word2Vec + Kmeans
|

| 
|
群集期间发现的问题:
- 与版本升级有关的应用程序性能问题。
- 应用程序问题与与Sberbank的连接有关。
- 使用代码向用户发送SMS的问题。
| 群集期间发现的问题:
- 连接和版本升级的登录问题。
- 使用代码向用户发送SMS的问题。
|
从结果中可以看出,BIGARTM比Word2Vec + Kmeans更加突出主题。 对于Word2Vec + Kmeans模型,没有考虑简短的无信息的评论,这些单词没有矢量表示(带有错误,亵渎性词语的单词)。
有趣的是,在此期间,内部ServiceDesk系统中的事件未根据更新版本的问题进行分类,而是分别进行处理。 这意味着在这种情况下,模型比人更能应付任务。
早期认可
这是一个示例,演示了我们的模型主动工作的能力。 2017/9/18 ServiceDesk中注册了一个大问题,该问题与无法输入应用程序和无法向某些用户付款有关。 在Arima图表上,我们看到该日期的负面评论猛烈激增,四天前也出现了轻微爆发。

我们分析了这两个异常值。
2017年9月14日:比格特姆
| Word2Vec + Kmeans
|

| 
|
群集期间发现的问题:
- 资金转移问题。 界面问题。
- 更新后进入应用程序的问题。
- 登录到应用程序时出现问题。 用户对隐私策略不满意。
| 集群期间发现的问题:
- 更新后在应用程序中工作的问题。 用户对隐私政策不满意,资金转移也存在问题。
|
2017年9月18日:比格特姆
| Word2Vec + Kmeans
|

| 
|
群集期间发现的问题:
- 更新版本后输入应用程序的问题。 该应用程序向用户提供有关过时版本的消息。
- 登录到应用程序时出现问题。 用户多次输入密码,应用程序冻结。
- 与内置防病毒程序有关的应用程序性能问题。
|
集群期间发现的问题:
|
这些结果与ServiceDesk的数据进行比较的方式如下。
检测到日期异常
| 报告的SM问题
| 使用以下方法确定问题的性质 比格特姆
| 使用以下方法确定问题的性质 Word2Vec + Kmeans
|
2017-09-14 00:00-24:00
| 更新应用程序之后,形成了来自更新后的应用程序的增加的呼叫背景。
| 资金转移问题。 界面问题。
更新后进入应用程序的问题。 登录到应用程序时出现问题。
用户对隐私策略不满意。
| 更新后在应用程序中工作的问题。 用户对隐私政策不满意,资金转移也存在问题。
|
2017-09-18 00:00-24:00
| 在09:23之间 在莫斯科时间15:20之前,对于银行的一些客户来说,使用Sberbank Online进入和开展业务的时间有所增加。 事件几乎对使用iOS的客户的工作没有影响。 到银行联络中心的客户呼叫数量增加(在15分钟内最多可以增加1369个呼叫)。
| 更新版本后输入应用程序的问题。 该应用程序向用户提供有关过时版本的消息。
登录到应用程序时出现问题。 用户多次输入密码,应用程序冻结。
与内置防病毒程序有关的应用程序性能问题。
| 输入密码并输入应用程序的问题。 更新版本时出错。
|
显然,在9月18日,由于对9月14日增加的背景缺乏适当的反应,导致大量负面的客户评论和致电联络中心的电话。 此示例表明,该模型可以通过尽早识别模型来帮助避免质量问题。
同样有趣的是,该模型同时检测到另一个问题(使用内置防病毒软件),该问题在主要问题的背景下并未突出显示。 在此不存在ServiceDesk中的注册。
总结一下
机器学习在分析用户反馈方面做得很好。 有时甚至比手动处理更准确。 这将有助于减少解决移动应用程序事件的时间并使它变得更好。
也许这样的方法不仅适用于识别事件,还适用于分析中立和正面反馈,以便突出优先用户案例。 这将有助于根据客户的喜好开发应用程序的功能,而无需收集和分析额外的费用。 但是这个想法仍然需要检查...