2

一种简单的优质挖掘模型

 2 years ago
source link: https://iamhere1.github.io/2017/05/30/qualified_model/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

优质挖掘的意义

有助于找到有潜力的用户: 对于in这样基于内容的社交平台,能持续地沉淀优质的用户,将这些用户挖掘出来并有效利用,就意味着可以持续地产出优质内容、有助于更好的社交体验。通过自动化的方式对用户优质度进行建模,不仅有助于挖掘有潜力的用户,也能对现有达人做更加科学的评估,有助于达人运营的效率提升。

更好地服务内容推荐:对于in这样的内容社交平台,每个用户都可以自由地发表图片,创建话题,发起直播等。然而,这些内容如果不经过任何过滤,而通过个性化推荐的方式直接推荐给来消费内容的用户,会带来非常不好的的体验。对于那些到in来消费内容的用户而言,更希望看到的是一些优质、有趣、能吸引个人兴趣的内容。如果不对内容进行优质建模,而直接根据推荐算法为用户推荐内容,不可避免地会为用户推出质量不好的图片、话题、直播等,导致用户体验下降。

优质挖掘模型

为方便说明,我们以优质用户挖掘为例进行说明,对图片、话题、直播等优质挖掘模型类似,不同之处在于特征不同、以及针对具体的应用可能有对应的特殊规则处理。

用户是否优质反应在多个方面。如发图在质量较高、图片等点击率高、粉丝多等。通过其中任何一个特征ii,我们都能建立该特征和优质得分之间的关系。其中特征ii的的取值越大,我们认为该用户越可能是优质用户,对应的优质得分越大。根据分析,我们建立模型如式1所示:

pi=⎧⎩⎨⎪⎪1,0,xi−TlowTup−Tlowifxi>Tupifxi<Tlowelse(式1)pi={1,ifxi>Tup0,ifxi<Tlowxi−TlowTup−Tlowelse(式1)

其对应的几何意义如图1所示,当特征值落在TlowTlow左边时,用户为非优质用户(得分为0),落在TupTup右边时,为优质用户(得分为1);当落在TlowTlow和TupTup之间时,用户对应的得分取值为0到1之间,具体取决于其具体的位置,越靠近TupTup, 其对应的得分越高。

图1: 特征与优质的关系图

通过一个特征进行优质用户的确定,往往有比较大的偏差。如有的用户A,虽然粉丝数量不多,但是其发图的点击率很高;而另一部分用户B可能粉丝数量较多,但是其图片的点击率却一般。如果只通过一个特征来进行优质用户建模,不仅容易导致个别特征异常导致准确率低,也会存在较多的用户优质无法召回。我们采用的方法是,对每个特征计算用户的优质得分,最后将多个特征得到的得分进行加权,使得模型更加鲁棒,提升优质用户挖掘的准确率和召回率。 如式2所示:

scorei=∑kwkpi,k(式2)scorei=∑kwkpi,k(式2)

其中scoreiscorei表示第i个用户的得分,wkwk表示第kk个特征得分对应的权重,pi,kpi,k表示第ii个用户的第kk个权重的得分。
由式1和式2得知,我们在模型训练阶段,得到每个特征对应的阈值TlowTlow, TupTup, 以及每个特征对应的权值ww,在预测阶段,直接根据式2计算得到用户的优质得分。

特征提取主要包括数据清洗、数据预处理、特征生成三部分。
数据清洗:过滤日志中的非法数据,异常数据等,如日志非法数据、运营号、异常点数据等。
数据预处理:对清洗后对数据进行预处理。如针对用户点击大于pv的情况,将pv设置为点击的值,点赞、评论等可以做类似的处理。
特征生成:在预处理结果基础上进行特征提取,如数值特征包括发图数、pv,click、点击率、点赞数、点赞率、评论数、评论率,收藏数、收藏率、好友数、关注数量、粉丝数等;非数值特征数值化,如用户级别、是否达人等。

样本生成:
正样本: 筛选发优质图超过一定数量的用户,再经过人工审核最终确定正样本集合。
负样本: 从total集合里过滤正样本,剩余的所有样本作为负样本。严格来说,负样本中可能包括一些正样本,但对于我们所采用的模型,只要保证大部分样本都是负样本,就基本不受影响。这是因为该模型在每个特征维度,得分都是和正负样本中的特征均值相关的,即使负样本包含一定数量的正样本,其均值依然会被真正的负样本主导而不会有太大影响。

模型训练
模型训练的目的,就是通过计算得到每个特征对应的阈值TlowTlow, TupTup, 以及每个特征对应的权值ww。训练步骤如下所示:

step1: 对于所有特征,初始化Ti,lowTi,low,Ti,upTi,up,其中Ti,lowTi,low为所有负样本对应特征ii的均值ui,lowui,low,Ti,upTi,up为所有正样本对应特征ii的均值ui,upui,up

step2: 根据如下公式计算特征ii的权重wiwi.
wi=ui,up−ui,lowui,upwi=ui,up−ui,lowui,up

step3: 调整不同阈值T,使得准确率和召回率大于一定值,并取f1最高的阈值作为当前最优参数。

step4: 调整步骤3得到的参数,允许每个参数分别向上和向下波动一定幅度,对于每种参数组合,分别执行步骤2和步骤3,根据f1指标,选择最优的参数组合,作为最终的训练结果。

优质预测和挖掘

对于测试用户,首先提取用户相关特征,然后利用式2进行优质得分预测。将所有得分大于阈值T的用户作为优质用户的挖掘结果。

本文提出了一种优质用户的挖掘方法,该方法的优势在于模型简单、训练速度快;只需要将特征转化为数值特征即可(而不需要进一步处理);同时该模型对于正负样本的构造成本较低,允许有一定的噪声样本混入而不受较大影响;允许正负样本的数量不均衡。 该方法的缺点是没有考虑特征之间的关联,没有对多个特征直接进行建模,如果将多个特征之间的组合关系考虑进去,可能会有更好的效果


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK