用户画像建模:方法与工具

用户画像是啥?听起来很魁梧上的,反正你最清楚不过了。你的性别,年龄,喜好等等这些大都用户画像的维度。迅雷的产品总监blues认为,用户画像分析的维度,也可以按照人口属性和产品行为属性通过综合类分析,

人口属性:地域、年龄、性别、文化、职业、收入、生活习惯、消费习惯等;

产品行为:产品类别、亢奋频率、产品喜好、产品驱动安装、使用习惯、产品消费等;

这样的话问题又他来了,互联网公司凭借用户画像做啥呢?比较多是个性化营销和精准广告。

如果一个电商网站明白你是一个妹子,那你给你帮我推荐女性的商品,你更很可能去购买。

假如你是一个二十来岁的小伙子,在视频网站上再看英超比赛,此时给你定向投放一个体育用品的广告,哪怕你不是有会直接点击甚至连产生消费行为,但总比给你精准投放一个妇女用品的广告的效果要好。

完了,吹牛x到此结束吧。下面就开始从技术层面谈谈该如何理论和实践用户画像建模。

每个公司占据的用户信息不太同一,有些公司有用户的都是假的信息(比如年龄),那种情况很很有可能不不需要建模预估了,本文指出再讨论的是我们从用户行为上建模分析和预测各种用户画像维度。

说到分析和预测,肯定变会他知道机器学习的分类和回归算法(贝叶斯,决策树,逻辑回归,支持向量机等)。对,我们是采取措施这些有监督的学习方法,从标出好的训练数据去学习到一个预测模型,后再对未标注的数据并且分析和预测。

从中文姓名预测国家性别你说起

帮帮我一个名字,让我大家猜男还是女。哈哈哈哈,难免好像有点算八字的味道。

必须,有监督的学习方法,就要这样一批标注数据:大量的人名,以及其性别。

下面是某网站的数据,

在我的验证,上面的是真实的身份证数据,所以数据绝对靠谱不和真实。

随后,从上面爬了几百万条的数据另外我们的训练集和测试集。

其中,400w当成训练样本,100w当做测试样本。

分类算法:贝叶斯

特征提取流程:

1依据姓氏辞典把姓氏可以去掉,他留不带姓氏的名字;

2特征有三个维度,共有用X1,X2,X3(=X1X2)来表示。

如果是单字名,则X1为空格,X2为单字名,X3应该是前两者拼接X1X2,

诸如郭靖,X1=””,X2=”靖”,X3=”靖”。

如果没有是双字名,则X1为第一个字,X2为第二个字,X3由前两者拼接,

例如黄药师,则X1=”药”,X2=”师”,X3=”药师”

要是是三个字以上,则只保留结果两个字,当成双字名处理。

上古时代贝叶斯公式

工程基于中,上面公式的分母可以不去掉后。

所以才这对名字X1X2,

P(男|X1X2)=P(男)*P(X1|男)*P(X2|男)*P(X1X2|男)

P(女|X1X2)=P(女)*P(X1|女)*P(X2|女)*P(X1X2|女)

最重要的注意的是,P(X1|男)来表示的是特训样本中,男性用户中,名字那个字又出现X1的概率,假如第二个字再次出现X1,不算在这里。

举个例子,如何能判断谢霆锋男还是女?

P(男|霆锋)=P(男)*P(霆|男)*P(锋|男)*P(霆锋|男)

P(女|霆锋)=P(女)*P(霆|女)*P(锋|女)*P(霆锋|女)

P(霆|男)意思是的是特训样本中,男性用户第一个字再次出现霆的概率,

P(锋|男)来表示的是特训样本中,男性用户第二个字出现锋的概率,

P(霆锋|男)可以表示的是训练样本中,男性用户第一个字是霆且第二个字是锋字的概率。

工程实现程序中,在预测阶段,很可能会碰到一些特征在训练样本中没有,则要做一下光滑(比如说分子加一个很小的值),要不然男女概率都为0,无法预估。

关于这个模型,特征提取和采取贝叶斯模型,是建议参考了《设计和实现中文人名用字特征的性别不能判断方法》这篇论文来做的。有篇论文,是用条件随机场来做的,有兴趣的读者这个可以看看《基于条件随机场的中文人名性别识别研究》。

在实际应用中,这个模型适合于我们很清楚用户姓名可是还不知道性别的情况,比如说某电商网站,一般不用户订单中填的收货人姓名也是虚无飘渺的,注册信息中可能会类似性别但是不靠谱很可能是乱填的。

提起电商,不得已提淘宝,淘宝可是有用户的身份证信息的,但是我听说过淘宝会存放用户两个性别,一个是身份证信息的性别,一个是预测性别。也许是是他们实践过,差别的业务场景,两个性别的效果都一样。

好了,再讲讲从用户行为来建模预测。差别的产品的用户行为信息不太相同,提取的特征在内方法也不对应。是对视频用户,提取的特征常见是这个视频信息,比如说你再仔细看看了《小时代》,我们都会给你打上一个“杨幂“的标签另外你其中一个特征。这对微博用户,提取的特征来自于你发的微博内容和查哈的好友,比如说你参与了tfboys,或是你经常转发他们的相关的微博,我们是会给你打上”tfboys“和”小鲜肉“的特征。这对新闻资讯用户,提取的特征就是该新闻的主题,关键词等信息。提取的特征不知从何而来于结构化信息和非结构化信息。对于结构化信息(数据库表,xml,json等),很难吸纳。但是这对非结构化信息,就需要自然语言处理和文本挖掘的方式来吸纳,诸如最常见的tf-idf来其他提取关键词,lda算法来其他提取主题。

是对注入的这些信息,就也可以当作用户的基本上行为特征,其实也可以当做一部分用户画像的维度了。

然后,我们要如何凭借这些基本上行为特征,来进行其他用户画像维度的预测呢?

肯定采取什么措施分类的算法。相对于有监督学,当然了不需要男女,年龄等上标数据了。也可以跟第三方公司进行数据合作,也也可以人工标注。正常情况,也可以跟第三方广告公司并且数据交换,按照cookie-**pping方式接受用户关联。

好了,特征和上标数据都有吧了,这样这个可以建模了。分类划分算法一大堆,贝叶斯,逻辑回归,svm,gbdt,randomforest,神经网络等等。开源的算法库也有很多,现会介绍liblinear,xgboost,sklearn。

但,在实践的工程师都明白了,算法并非那用的。个好的模型,之外算法本身,数据质量,数据预处理,特征工程等等这些都很最重要。且外,还必须依据业务情况,进行随机应变。

下面多多分享一些工作中应用的奇技淫巧。

互联网数据,并不像学术研究中的数据这样完美,完全是“杂乱脏“。先不说业务不说,仅从数据上看,标出数据信息不全,特征数据稀落,类别不平衡等等。不过由于诸多问题,肯定导致我们模型不是什么这样的话清楚。一种管用的思路,那是我们不分析预测全体用户,只预测国家我们有把握预估的,是因为是对业务方来说,准确率对于召回率,对他们更重要。朝着远处这种思路,也有不少一段时间方案。.例如分群分析和预测,分群的方法是可以从业务上分,也可以从算法上分。从业务上分,比如说视频用户可以不可分电影用户和电视用户等等。从算法上分,是可以方式聚类的方法来分。分群完毕后,再对完全不同的群体接受建模,通过测试集预估,过滤处理掉准确率较低的群体,记录准确率较高的群体去掉。另外种尝试方案,那是特征选择和用户再次筛选特点站了起来,特征选择类型的算法也有很多,.例如信息增益,卡方测试等,剩余下有分类能力的特征,特征你选之后后,对用户并且过滤,是否需要记录这个用户取决于你这个用户是否强大加上多的有分类能力的特征。这个用户过滤环节,训练测试阶段和预测阶段都要参与。

那样最好,talknotcheap,funyourcode。下面正在介绍几个开放源代码算法工具库。

下面三点是我挑选工具的标准:

1支持什么类似libsvm格式的稀疏特征输入

2支持什么百万级别训练数据

3轻量级,快

libsvm和liblinear

在特征维度是几万以上级别的前提下,

libsvm只能训练训练几万条样本。

而liblinear这对百万级别的样本数量,速度很快,

千万级别有点儿沉重。

liblinear相对于libsvm的缺点就是,又不能建议使用核函数,libsvm也正是这也所以才耗性能。

数据文件格式:标准的libsvm格式,每一行是

labelindex1:value1index2:value2

的稀疏向量的格式。

liblinear最简单的训练和测试方式:

traintrain.txtmodel.txt

predicttest.txtmodel.txtpredict.txt

在用liblinear之前,

见意进行L2范式输入特征,利用简单啊,也可以减慢训练速度,很有可能会能提高准确率。

Xgboost

说过该工具,只好秀下这个工具的作者陈天奇大神。

xgboost是gbdt算法的实现,是可以做回归,分类,和排序。支持各种语言动态链接库,接受单机和分布式,允许libsvm的稀疏矩阵的数据格式,更加适合我于大规模行动数据集。

项目主页

dmlc/xgboost·GitHub

单机版的python全局函数例子:

《xgboost快速入门》

xgboost快速入门

sklearn

涵盖数据预处理,降维,分类,轮回,聚类,模型选择。

sklearn也支持libsvm的数据格式,

不过某些算法不当然支持,

诸如1.5版本的随机森林不支持什么稀疏矩阵,1.6就接受了。

1.6版本的gbdt也不允许稀疏矩阵。

kmeans的动态链接库例子

《sklearn特征选择类型和分类模型》

sklearn特征你选和分类模型

那样最好,情况了用户画像建模的这段经历,的确再体验到算法并不是万能的。所以我,我们出了把精力怎么学习那些神奇无比的算法原理,还必须在数据分析,数据处理,特征工程甚至于业务知识方面花功夫。特别是特征工程,在互联网中是永恒之光的主题。百度凤鸣谷在很久之前,始终沿称人肉特征工程+线性模型的方法,也是热门才语句深度学习来做特征。最近有篇Facebook的论文,是用gbdt提特征输入给lr预测,有时间我也会去学习看看。

行了,晚安好梦。

2015年11月25号夜

本文作者:linger

本文链接:用户画像建模:方法与工具

欢迎转载须注明出处

热情关注公众号:数据挖掘菜鸟【公众号ID:data_bird】

关注大数据,数据挖掘,机器学习,深度学习

扫码免费用

源码支持二开

申请免费使用

在线咨询