基于自然语言识别下的流失用户预警


沙韬伟,苏宁易购高级算法工程师。
曾任职于Hewlett-Packard、滴滴出行。
数据学院特邀讲师。
主要研究方向包括风控、推荐和半监督学习。目前专注于基于深度学习及集成模型下的用户行为模式的识别。


在电商运营过程中,会有大量的用户反馈留言,包括吐槽的差评,商品不满的地方等等,在用户运营生态中,这部分用户是最有可能流失也是最影响nps的人群,通过对其评价的语义分析,每日找出潜在的流失人群进行包括"电话回访","补券安慰","特权享受"等行为,有效的降低了用户的流失。根据实际的业务营销效果,在模型上线后,abtest检验下模型识别用户人群进行营销后的流失率比随意营销下降9.2%,效果显著。


当前文本文义识别存在一些问题:


(1)准确率而言,很多线上数据对特征分解的过程比较粗糙,很多直接基于df或者idf结果进行排序,在算法设计过程中,也是直接套用模型,只是工程上的实现,缺乏统计意义上的分析;


(2)文本越多,特征矩阵越稀疏,计算过程越复杂。常规的文本处理过程中只会对文本对应的特征值进行排序,其实在文本选择中,可以先剔除相似度较高的文本,这个课题比较大,后续会单独开一章进行研究;


(3)扩展性较差。比如我们这次做的流失用户预警是基于电商数据,你拿去做通信商的用户流失衡量的话,其质量会大大下降,所以重复开发的成本较高,这个属于非增强学习的硬伤,目前也在攻克这方面的问题。


首先,我们来看下,整个算法设计的思路:


1、通过hive将近期的用户评价hadoop文件下载为若干个text文件
2、通过R语言将若干个text整合读取为一个R内的dataframe
3、利用R里面的正则函数将文本中的异常符号‘#!@¥%%’,英文,标点等去除 (这边可以在hive里面提前处理好,也可以在后续的分词过程中利用停顿词去除)
4、文本分词,这边可以利用R中的Rwordseg,jiebaR等,我写这篇文章之前看到很多现有的语义分析的文章中,Rwordseg用的挺多,所以这边我采用了jiebaR
5、文本分词特征值提取,常见的包括互信息熵,信息增益,tf-idf,本文采取了tf-idf,剩余方法会在后续文章中更新
 6、模型训练      这边我采取的方式是利用概率模型naive bayes+非线性模型random forest先做标签训练,最后用nerual network对结果进行重估 (原本我以为这样去做会导致很严重的过拟合,但是在实际操作之后发现,过拟合并不是很严重,至于原因我也不算很清楚,后续抽空可以研究一下)


下面,我们来剖析文本分类识别的每一步。


定义用户属性


首先,我们定义了已经存在的流失用户及非流失用户,易购的用户某品类下的购买周期为27天,针对前60天-前30天下单购物的用户,观察近30天是否有下单行为,如果有则为非流失用户,如果没有则为流失用户。提取每一个用户最近一次商品评价作为msg。


文本合成


通过hive -e的方式下载到本地,会形成text01,text02...等若干个文本,通过R进行文本整合:


#先设置文本路径 path <- "C:/Users/17031877/Desktop/Nlp/answer/Cmsg" completepath <- list.files(path, pattern = "*.txt$", full.names = TRUE) #批量读入文本 readtxt <- function(x) {    ret <- readLines(x)                   #每行读取    return(paste(ret, collapse = ""))     #通过paste将每一行连接起来   }   #lappy批量操作,形成list,个人感觉对非关系数据,list处理更加便捷 msg <- lapply(completepath, readtxt)   #用户属性 user_status <- list.files(path, pattern = "*.txt$") #stringsAsFactors=F,避免很多文本被读成因子类型 comment <- as.data.frame(cbind(user_status, unlist(msg)),stringsAsFactors = F)   colnames(comment) <- c("user_status", "msg")


基础的数据整合就完成了。



数据整理


也可以看到,基础数据读取完成后,还是很多评论会有一些不规则的数据,包括‘#¥%……&’,英文,数字,下面通过正则、停顿词的方式进行处理:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值