spark 用户画像挖掘分析_CCF 搜狗用户画像挖掘 Top5方案分享

本文分享了在CCF搜狗用户画像挖掘大赛中的Top5方案,主要介绍了基于布尔模型的S-TFIWF算法,结合TFIDF和词向量提取特征,并探讨了样本不均衡、特征加权和深度学习方法在文本分类中的应用,最终在赛题中取得了优异成绩。
摘要由CSDN通过智能技术生成

比赛名称:大数据精准营销中搜狗用户画像挖掘

比赛链接:https://www.datafountain.cn/competitions/239

赛题简述

业务背景:用户画像,即:用户的属性及偏好。在广告的精准投放中,根据用户的历史行为来反推用户的属性是一项基础技术。

本次赛题即为根据搜狗用户在一段时间内的搜索词来预测用户的性别、年龄和教育水平

  • 复赛训练数据:10w个用户在某段时间内的搜索词以及相应的属性:性别、年龄和教育水平,注意有缺失值。
  • 复赛预测数据:10w个用户在某段时间的搜索词。
  • 性别、年龄和教育水平分别有:2、6、6个标签。

方案概述

首先对用户查询文本进行分词处理,然后从特征词与词向量这两个方面提取文本特征,最后结合集成模型stacking完成三个属性的训练与预测。

5a749a7d309646103e100524a0dec3af.png

基于布尔模型的S-TFIWF(Supervised TFIWF)

经典特征加权:TFIDF算法

TFIDF算法是经典的文本特征加权方法,它衡量了某一个单词在文档中的重要性。

TFIDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反相关。下面是TFIDF算法的公式:

  • : 词语w在文章d中的词语频率
  • :语料库中的文档总数
  • : 训练语料中包含单词w的文档数

TFIDF算法的优劣

TFIDF算法的优势:综合考虑了单词在文档中的词频和单词在整体语料库中分布的影响。

TFIDF算法的不足:

  • 单词在文档中的出现次数TF对于整体权重影响过大。
  • 没有考虑到单词在不同类间的分布差异。

改进算法:基于布尔模型的S-TFIWF

针对TFIDF的不足,我们认为用于文本分类的特征权重应该考虑以下内容:

抑制TF对整体权重的影响-布尔模型:只关心单词在文档中出现与否。引入单词在不同类间的分布差异,使用归一化的方差进行量化。

我们提出如下公式:

  • : 单词w在文章d中出现与否
  • :训练语料中所有词出现次数之和
  • : 训练语料中出现单词w的次数
  • : 单词w在类j中出现的概率
  • :单词w在所有类中出现的平均概率

对公式的解释:

  • : 在布尔模型下,当单词w出现在文档d中时即为1,反之为0
  • : 当单词在整体语料中出现多次时,该单词可能是常用词,对于类别判断帮助小,应该抑制
  • : 该项利用了单词在不同类间的概率方差,代表了单词w的类间分布信息。通过这个信息,我们可以判断,当某个单词在不同类中的方差很大时,这个单词更具有区分度,权重应该更大
模型线上结果
单分类器模型(SVM)0.6657
stacking模型0.6810

融合特征:词向量

word2vec简介

词向量研究的是如何把单词表示为实数向量。word2vec是其中的一种训练方法,它根据单词的上下文信息获得单词的分布式表达(Distributed Representation),word2vec(以下简称wv)是一个无监督的方法,这个比赛中,我们喜爱无监督的方法,因为可以把测试集的无标注数据利用上,在一定程度上缓解标签缺失带来的不利影响。

word2vec的应用

第一个问题:根据词向量,该如何表达一篇文档呢?假设某文档中含有N个单词,每个单词使用K维的词向量表示。有人可能会说,把词向量拼起来,将一个文档形式化为N∗K的向量不就ok了吗?这个策略本身没有问题,但是在一般的情况下(非一般情况,比如卷积神经网络,利用pooling层可以解决维度不一致问题)这种做法并不合适,因为无法解决不同的文档长度所导致的维度不一致问题 。

因此,我们采用了如下方法,把单词向量加和求平均,这种做法是有道理的:如果某一个单词表达能力越强,加和求平均得到的向量就越偏向该单词向量所指方向。

909e3be263c755c41db052868c9701fc.png

第二个问题:得到了文档在wv下的向量表达,又该如何使用呢?首先,我们认为把K维的WV向量直接拼接在S-TFIWF特征上不是一个好的策略,因为S-TFIWF特征具有高稀疏度、高维度的特点,与WV这种稠密的形式区别过大。回顾上文中介绍到的Stacking集成框架,我们把WV特征拼接在了stack的第二层中,举个栗子:如果第一层有20个分类器,WV的维度为K,那么第二层特征的维度就变为了:K+20。S-TFIWF+WV从特征词与词向量这两个角度完成了文档的表达。

做法线上结果
未融合WV0.6993
融合WV0.7049

最后经过参数调优,在A榜以0.71172的成绩排在第五名。

尝试过的方法分析

一元词与n-gram的组合

  • 动机:n-gram在一定程度上考虑了词组语义,可能有更强的表达能力
  • 做法:把一元词与2-gram词组合起来,作为特征字典
  • 效果与反思:线上不理想。可能因为我们没有找到更好的组合方式。

特征词加权改进:SS-TFIWF (SS:smooth-supervised)

  • 动机:尝试利用词频信息,同时通过平滑措施,使词频影响得到抑制。
  • 做法:在VSM模型下,对于词频项,我们使用tf/(tf+0.2)进行平滑,其他项与S-TFIWF相同。
  • 效果与反思:本地测试有提升,线上比布尔模型的S-TFIWF效果有略微下降(0.7090 vs 0.70914)。

LDA主题特征提取

  • 动机:相对于W2V特征,我们也提取过LDA主题特征,期待从更多的角度来增强特征表达
  • 做法:利用gensim工具包,训练并获取文档的主题分布向量,以此作为特征,融入到stacking模型的第二层中。
  • 效果与反思:相比于纯S-TFIWF特征有提升,但是不如W2V向量的融合效果好。

样本不均衡:进行欠/过采样

  • 动机:样本不均衡会影响分类器的性能
  • 做法:利用imbalanced-learn工具包,进行过采样,参数尝试过:线性、SVM。其中,在确定不同类的过采样比例时,我们根据2015年中国网民结构调查报告获取网民的先验分布,以此比例作为过采样比例。
  • 效果与反思:线上不理想。发现该做法其实陷入了一个误区,我们不应该强行改变原始样本的分布情况,因为基于独立同分布的假设会使得分类器学到的分布也随之改变,最明显的表现就是:预测的博士人数过多,而这明显不合理。

缺失标签的填补

  • 动机:填补缺失的标签,会增加可以利用的训练集规模,增强分类性能
  • 做法:使用训练好的模型对缺失的标签进行预测,填补训练集。然后基于新的训练集完成比赛任务。
  • 效果与反思:线上结果下降。由于分类器不可能完全做对,因此预测得到的标签有一部分是错误的,可能这些错误的样本使得重新训练的分类器性能下降。

使用卷积神经网络进行文本分类

  • 动机:卷积神经网络在计算机视觉领域有了成功的应用。
  • 做法:使用2014年的TEXT-CNN,输入为分词后的文件和label。
  • 效果与反思:初赛线上达到了0.64,但是限于设备条件,没有继续研究。但是可以看到CNN的强大,我们测试的CNN网络只有一个卷积层,几乎没有调参就跑出了0.64的成绩。

最后总结

使用TFIDF权重时的特征维度问题

其实我们使用的S-TFIWF是TIFDF的一个变种,是在特征加权上的优化,但是在特征选择问题上与TFIDF是没有本质区别的。一个很奇怪的问题是:我们尝试过卡方、信息增益、互信息等方法做特征词的筛选,但是从线上结果来看,使用简单的词频筛选效果更好,对此我们也没有更好的解释。

深度学习的威力

在比赛中期间我一直很好奇第一名的方案是怎么做的,因为人家线上超了我们1.5个百分点,在10w的测试集规模下,这绝对是本质的差别。

终于,在决赛领略到了高手的风采!前四名均在一定程度上的结合了神经网络(BPNN/CNN),这样做的一大好处就是可以通过设置神经网络的共享层学到年龄、学历这两种属性的关联,避免了人工设计特征。而我们的模型是没有考虑属性间的关联的,我们曾想过这个问题,但是没有解决。

两点细节

决赛第一名:大大黑楼,有两点做得很细腻

  • 如果三个属性中至少有一个属性缺失,那么就放弃该样本,因为他们认为这样的样本是不可靠的。
  • 提取TFIDF特征时,保留单个查询中的空格。

赛题难点

搜狗大数据技术总监高君老师在总结时提到:

  • 训练集部分标签缺失。这是为了模拟真实的业务情况,增加了难度。
  • 训练样本质量。想象一种环境:在家庭中,多人共用一个搜狗账号进行搜索,这会导致搜索文本的内容与用户属性有偏差,数据中的噪声很大。
比赛数据+Top5代码, 公众号回复【搜狗用户】领取 算法赛交流群已成立 学习数据竞赛,组队参赛,交流分享 若进群失败,可在后台回复【 竞赛群 】 如果加入了之前的社群不需要重复添加! f7d6a9ae8bf1c6d258cdd55495e6f322.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值