本次要分享的论文是 cikm2014论文 Modeling Paying Behavior in Game Social Networks,本论文由 腾讯公司和 清华大学联合出品,深入探讨了 如何挖掘 游戏数据中的 高潜付费玩家,详细分析了 免费玩家 向 付费玩家转化规律。虽然本论文所提模型比较简单,但是其中的数据分析和实验分析过程,对业务而言,具有一定的参考价值。

文章目录

  • 论文动机
  • 数据分析
    • 数据集
    • 特征设计和分析
      • 一些基础特征
      • 社会影响特征(Social Effects)
        • Social Influence(周围付费邻居个数 与转化率关系)
        • Strong/Weak Tie(与周围付费邻居关系强弱与转化率关系)
        • Status(周围付费邻居付费金额与转化率关系)
      • 结构多样性(Structural Diversity)
  • 特征与模型
    • 特征
      • User attribute features
      • Social effect features
      • In-game behavior features
    • 模型
      • Factorization Machines (FM) Model
      • Local Consistent FM (LCFM) Model
        • 算法介绍
        • 模型学习
  • 实验分析
    • 实验设置
    • 离线表现
    • 线上表现
  • 个人总结
  • 参考资料

论文动机

  • 在线游戏是互联网上最大的产业之一,每年产生数百亿美元的收入。网络游戏的一个核心问题是:如何将免费用户并将其转化为付费用户,这对于几乎所有网络游戏的可持续发展都具有重要意义。尽管已经进行了大量的研究,但仍有一些基本上没有解决的挑战:触发用户付费的根本因素是什么?在游戏社交网络中,用户的付费行为是如何相互影响的?如何设计一个预测模型来识别那些可能付费的潜在用户?
  • 传统的研究在于分析 游戏动机 与 年龄、世代、使用模式等个人属性特征的关系,而近些的调查发现,社会属性特征越来越影响玩家的游戏动机,例如 游戏Zynga 1年收入的80%来自Facebook用户,因此研究 社交活动 如何 影响 玩家付费 变得十分重要了。
  • 本论文以两款大型网络游戏为基础,研究了用户在游戏中如何成为新的付费用户。特别的,研究了在游戏社交网络中,用户的付费行为是如何相互影响的。我们从强弱关系、社会结构多样性和社会影响等多个社会学视角来研究这一问题。基于发现的模式,论文提出了一个学习框架来预测潜在的付费用户。该框架可以使用与用户相关联的特征来学习模型,然后使用用户之间的社会关系来改进所学习的模型。
  • 本论文研究的目的就是 了解触发免费用户付费的根本因素是什么? 为了达到这一目标,面临几个挑战
    • 稀疏性:相对于推荐系统或者搜索排序场景,游戏场景中的付费行为和非付费行为是非常 不均衡的,例如游戏 Zynga 每个月有超过200亿的活跃玩家,但是仅仅有3%的玩家在游戏中有付费行为。
    • 社会效应(Social effects):社交活动已经成为网络游戏设计中最重要的因素之一,用户的朋友和社会结构如何影响用户的付费行为是未知和必须深入研究的部分。
    • 预测模型(Predictive models):为了有效地识别潜在付费用户,开发能够结合用户属性和社会效应的方法和模型是非常重要的。

数据分析

数据集

本论文 是基于 QQ飞车, DNF 两款流行的在线游戏数据进行分析和实验的。

  • QQ飞车:是一款赛车游戏,用户可以参加赛车比赛,与其他用户进行比赛。这款游戏是中国最大的在线赛车游戏(2014年),2013年吸引了超过2亿用户。游戏中的用户可以以个人身份与其他用户竞争,也可以组成一个组一起竞争。游戏提供商通过在游戏商店中销售虚拟物品来赚钱,包括不同类型的车辆和配件。
    QQSpeed数据集包含2013年6月20日至2013年8月20日期间游戏中抽样用户的各种用户活动,总共有来自760万用户的447亿个活动日志。

  • NDF:一款格斗类游戏,2013年,这款游戏吸引了全球超过4亿用户。游戏中的用户可以单独与敌人作战,也可以组成一个团队一起作战。
    DNF数据集包含了2013年4月1日至2013年6月30日期间游戏抽样用户的各种用户活动。用户活动包括用户金钱的减法、用户等级的改变、游戏中的杀戮等,总计有来自34.7万用户的57.1亿条活动日志。

一个简单的结论:用户之间确实存在对支付行为的强烈影响。一个拥有5个强关系付费邻居的用户成为新付费用户的可能性是普通用户的5倍。同时,当用户意识到他的朋友已经在游戏中支付了很多钱时,他的支付意愿会很快降低了下来。

论文中,根据用户的付费日志,将用户分为三类:

  • 免费用户
  • 付费用户
  • 新付费用户

以QQSpeed为例。将2013年6月20日之前有付费行为的用户归类为付费用户。对于2013年6月20日之前没有支付行为,但在2013年6月20日至2013年8月20日期间支付的用户,我们称其为新付费用户。而其余没有任何付费行为的用户则被视为免费用户。

用户间相互关系定义:

  • co-player:在QQSpeed中,如果两个用户加入同一个组来共同竞争,我们认为这两个用户是连通的。我们称这种关系为合作(co-player)关系。此外,我们还考虑到这种关系的强弱。如果两个用户在一起玩了5次以上,我们称这种关系为强关系,否则称为弱关系
  • co-guild:两个用户在同一个公会系统。

基于以上方法,我们在DNF中构建了一个拥有263万用户、730万个co-player关系和5200万个co-guild关系的游戏网络,在QQSpeed中构建了一个拥有354万用户、1.34亿个co-playe关系和6670万个co-guild关系的游戏网络。

注意:为了简单起见,下面的关于 relationship的分析,只考虑co-player 关系

特征设计和分析

首先在设计特征前,明确下特征设计的目的:

  • 人口统计(Demographics):用户的人口统计属性(性别、年龄、等级等)如何影响他们的付费行为?
  • 社会效应(Social effects):存在关联关系的用户是否倾向于有相似的付费行为?

一些基础特征

  • 性别(Gender):女性 or 男性

  • 等级(Level):代表用户总体技能和经验的数字。提高等级 需要完成任务、参与比赛。通过获得一个等级,一个用户的能力将得到提高,同时他可以在更高的水平与用户玩。在QQSpeed中,用户的级别从1到200不等。我们使用基于密度的离散化方法将用户分为三组:低层、中层和高层。

  • 登录天数(Login):表示两个月内用户登录游戏的天数。我们将游戏用户分为两类,分别代表登录频率较低和较高的用户。

  • 关系(Relation):表示用户是否与其他用户至少有一种co-player关系。

  • Guild:表示用户是否与其他用户至少有一种co-guild关系。

  • 中心性(Centrality):在网络分析中,节点的中心性度量其在图中的相对重要性。使用PageRank算法计算所有用户的中心性得分,并选择PageRank得分最高的前10%用户2作为中心性用户,其余用户作为普通用户。

    PageRank最开始应用在网页搜索排序上,本质上是一种以网页之间的超链接个数和质量作为主要因素粗略地分析网页的重要性的算法。其基本假设是:更重要的页面往往更多地被其他页面引用(或称其他页面中会更多地加入通向该页面的超链接)。 其将从A页面到B页面的链接解释为“A页面给B页面投票”,并根据投票来源(甚至来源的来源,即链接到A页面的页面)和投票对象的等级来决定被投票页面的等级。简单的说,一个高等级的页面可以提升其他低等级的页面。

  • SH(structural hole 结构洞):在社会网络中,结构洞代表 连接不同社区的用户,论文中用HIS算法 估计 用户节点的 结构洞 得分。

    其中 C={C1,C2,....,Cl}C=\{C_1, C_2,....,C_l\}C={C1​,C2​,....,Cl​} 表示有lll 个 社区,I(v,Ci)∈[0,1]I(v,C_i) \in [0, 1]I(v,Ci​)∈[0,1] 表示节点vvv 在社区 CiC_iCi​ 的重要性。H(v,S)∈[0,1]H(v,S) \in [0,1]H(v,S)∈[0,1] 表示 S中v的结构洞得分,即v跨越S中所有群落的结构洞的可能性。其中lll 个社区 是由 Clauset-Newman-Moore 算法识别。

#mermaid-svg-ueg5OwzlTmEWbbhH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .label text{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .node rect,#mermaid-svg-ueg5OwzlTmEWbbhH .node circle,#mermaid-svg-ueg5OwzlTmEWbbhH .node ellipse,#mermaid-svg-ueg5OwzlTmEWbbhH .node polygon,#mermaid-svg-ueg5OwzlTmEWbbhH .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-ueg5OwzlTmEWbbhH .node .label{text-align:center;fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .node.clickable{cursor:pointer}#mermaid-svg-ueg5OwzlTmEWbbhH .arrowheadPath{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-ueg5OwzlTmEWbbhH .flowchart-link{stroke:#333;fill:none}#mermaid-svg-ueg5OwzlTmEWbbhH .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-ueg5OwzlTmEWbbhH .edgeLabel rect{opacity:0.9}#mermaid-svg-ueg5OwzlTmEWbbhH .edgeLabel span{color:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-ueg5OwzlTmEWbbhH .cluster text{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-ueg5OwzlTmEWbbhH .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-ueg5OwzlTmEWbbhH text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-ueg5OwzlTmEWbbhH .actor-line{stroke:grey}#mermaid-svg-ueg5OwzlTmEWbbhH .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-ueg5OwzlTmEWbbhH #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .sequenceNumber{fill:#fff}#mermaid-svg-ueg5OwzlTmEWbbhH #sequencenumber{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH #crosshead path{fill:#333;stroke:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .messageText{fill:#333;stroke:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-ueg5OwzlTmEWbbhH .labelText,#mermaid-svg-ueg5OwzlTmEWbbhH .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-ueg5OwzlTmEWbbhH .loopText,#mermaid-svg-ueg5OwzlTmEWbbhH .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-ueg5OwzlTmEWbbhH .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-ueg5OwzlTmEWbbhH .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-ueg5OwzlTmEWbbhH .noteText,#mermaid-svg-ueg5OwzlTmEWbbhH .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-ueg5OwzlTmEWbbhH .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-ueg5OwzlTmEWbbhH .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-ueg5OwzlTmEWbbhH .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-ueg5OwzlTmEWbbhH .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .section{stroke:none;opacity:0.2}#mermaid-svg-ueg5OwzlTmEWbbhH .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-ueg5OwzlTmEWbbhH .section2{fill:#fff400}#mermaid-svg-ueg5OwzlTmEWbbhH .section1,#mermaid-svg-ueg5OwzlTmEWbbhH .section3{fill:#fff;opacity:0.2}#mermaid-svg-ueg5OwzlTmEWbbhH .sectionTitle0{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .sectionTitle1{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .sectionTitle2{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .sectionTitle3{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-ueg5OwzlTmEWbbhH .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .grid path{stroke-width:0}#mermaid-svg-ueg5OwzlTmEWbbhH .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-ueg5OwzlTmEWbbhH .task{stroke-width:2}#mermaid-svg-ueg5OwzlTmEWbbhH .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .taskText:not([font-size]){font-size:11px}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-ueg5OwzlTmEWbbhH .task.clickable{cursor:pointer}#mermaid-svg-ueg5OwzlTmEWbbhH .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-ueg5OwzlTmEWbbhH .taskText0,#mermaid-svg-ueg5OwzlTmEWbbhH .taskText1,#mermaid-svg-ueg5OwzlTmEWbbhH .taskText2,#mermaid-svg-ueg5OwzlTmEWbbhH .taskText3{fill:#fff}#mermaid-svg-ueg5OwzlTmEWbbhH .task0,#mermaid-svg-ueg5OwzlTmEWbbhH .task1,#mermaid-svg-ueg5OwzlTmEWbbhH .task2,#mermaid-svg-ueg5OwzlTmEWbbhH .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutside0,#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutside2{fill:#000}#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutside1,#mermaid-svg-ueg5OwzlTmEWbbhH .taskTextOutside3{fill:#000}#mermaid-svg-ueg5OwzlTmEWbbhH .active0,#mermaid-svg-ueg5OwzlTmEWbbhH .active1,#mermaid-svg-ueg5OwzlTmEWbbhH .active2,#mermaid-svg-ueg5OwzlTmEWbbhH .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-ueg5OwzlTmEWbbhH .activeText0,#mermaid-svg-ueg5OwzlTmEWbbhH .activeText1,#mermaid-svg-ueg5OwzlTmEWbbhH .activeText2,#mermaid-svg-ueg5OwzlTmEWbbhH .activeText3{fill:#000 !important}#mermaid-svg-ueg5OwzlTmEWbbhH .done0,#mermaid-svg-ueg5OwzlTmEWbbhH .done1,#mermaid-svg-ueg5OwzlTmEWbbhH .done2,#mermaid-svg-ueg5OwzlTmEWbbhH .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-ueg5OwzlTmEWbbhH .doneText0,#mermaid-svg-ueg5OwzlTmEWbbhH .doneText1,#mermaid-svg-ueg5OwzlTmEWbbhH .doneText2,#mermaid-svg-ueg5OwzlTmEWbbhH .doneText3{fill:#000 !important}#mermaid-svg-ueg5OwzlTmEWbbhH .crit0,#mermaid-svg-ueg5OwzlTmEWbbhH .crit1,#mermaid-svg-ueg5OwzlTmEWbbhH .crit2,#mermaid-svg-ueg5OwzlTmEWbbhH .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-ueg5OwzlTmEWbbhH .activeCrit0,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCrit1,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCrit2,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-ueg5OwzlTmEWbbhH .doneCrit0,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCrit1,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCrit2,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-ueg5OwzlTmEWbbhH .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-ueg5OwzlTmEWbbhH .milestoneText{font-style:italic}#mermaid-svg-ueg5OwzlTmEWbbhH .doneCritText0,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCritText1,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCritText2,#mermaid-svg-ueg5OwzlTmEWbbhH .doneCritText3{fill:#000 !important}#mermaid-svg-ueg5OwzlTmEWbbhH .activeCritText0,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCritText1,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCritText2,#mermaid-svg-ueg5OwzlTmEWbbhH .activeCritText3{fill:#000 !important}#mermaid-svg-ueg5OwzlTmEWbbhH .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-ueg5OwzlTmEWbbhH g.classGroup text .title{font-weight:bolder}#mermaid-svg-ueg5OwzlTmEWbbhH g.clickable{cursor:pointer}#mermaid-svg-ueg5OwzlTmEWbbhH g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-ueg5OwzlTmEWbbhH g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-ueg5OwzlTmEWbbhH .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-ueg5OwzlTmEWbbhH .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-ueg5OwzlTmEWbbhH .dashed-line{stroke-dasharray:3}#mermaid-svg-ueg5OwzlTmEWbbhH #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH .commit-id,#mermaid-svg-ueg5OwzlTmEWbbhH .commit-msg,#mermaid-svg-ueg5OwzlTmEWbbhH .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-ueg5OwzlTmEWbbhH g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-ueg5OwzlTmEWbbhH g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-ueg5OwzlTmEWbbhH g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-ueg5OwzlTmEWbbhH .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-ueg5OwzlTmEWbbhH .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-ueg5OwzlTmEWbbhH .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-ueg5OwzlTmEWbbhH .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-ueg5OwzlTmEWbbhH .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-ueg5OwzlTmEWbbhH .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-ueg5OwzlTmEWbbhH .edgeLabel text{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-ueg5OwzlTmEWbbhH .node circle.state-start{fill:black;stroke:black}#mermaid-svg-ueg5OwzlTmEWbbhH .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-ueg5OwzlTmEWbbhH #statediagram-barbEnd{fill:#9370db}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-state .divider{stroke:#9370db}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-ueg5OwzlTmEWbbhH .note-edge{stroke-dasharray:5}#mermaid-svg-ueg5OwzlTmEWbbhH .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-ueg5OwzlTmEWbbhH .error-icon{fill:#522}#mermaid-svg-ueg5OwzlTmEWbbhH .error-text{fill:#522;stroke:#522}#mermaid-svg-ueg5OwzlTmEWbbhH .edge-thickness-normal{stroke-width:2px}#mermaid-svg-ueg5OwzlTmEWbbhH .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-ueg5OwzlTmEWbbhH .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-ueg5OwzlTmEWbbhH .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-ueg5OwzlTmEWbbhH .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-ueg5OwzlTmEWbbhH .marker{fill:#333}#mermaid-svg-ueg5OwzlTmEWbbhH .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-ueg5OwzlTmEWbbhH {color: rgba(0, 0, 0, 0.75);font: ;}

D
A
B
C

上图中我们可以得知 AB,AC, AD之间都有连边,即它们存在关系,而当我们只关注BC之间的关系时,我们发现它们之间没有直接的连边。这时候的A就充当了一个B与C之间的结构洞,同理,A也是B与D,C与D之间的结构洞。所以,我们可以说与节点A关联的结构洞的个数是3,当然节点A在这个小网络中间就是最重要的节点。

下面分析下,每个基础特征 与 转化率(免费用户 转化为 付费用户) 的关系,如下图:


上图中,横坐标为 Relative Risk,其计算公式如下:

PPP:表示免费用户转为付费用户的转化率,显然RR越大,则该特征iii 对转化率越有帮助。
纵坐标表示:单个特征

由此可以得到 一些 基础特征结论:

  • 男性用户成为新付费用户的概率是女性用户的1.2倍,这表明男性用户比女性用户更容易付费。
  • 中层等级用户比其他人更容易成为新的付费用户。这听起来很合理,因为低级别用户可能不熟悉游戏,而高级别用户可能已经在游戏中玩得很好,因此没有动机在游戏中付费。
  • 对于登录频率,登录顶部组成为新付款人的概率是登录底部组的五倍。
  • 在relation 和 guild属性上,与他人有关系的用户成为新付费用户的概率是与他人没有关系的用户的3倍,加入公会的用户成为新付费用户的概率几乎是未加入公会的用户的3倍。
  • 对于中心性和结构洞,中心性用户成为新付费用户的概率比其他用户高300%,而结构洞跨越用户成为新付费用户的概率比其他用户高250%。中心性和结构洞 属性都与用户的付费行为呈正相关。

社会影响特征(Social Effects)

Social Influence(周围付费邻居个数 与转化率关系)

这里面 分析的是 一个用户的游戏行为是否与 其周围朋友的行为越来越相似, 其付费行为是否会被 周围其付费用户所影响?

上图 显示了一个免费用户成为新付费用户的概率,取决于他在游戏网络中拥有的付费邻居的数量。简单地说,当一个免费用户与5个付费用户玩游戏时,他会付费的可能性会增加到不与任何付费用户玩游戏的可能性的3倍。可以了解到的另一个趋势是,当用户有更多付费邻居时,转换可能性(从免费用户到付费用户)继续增加。

上面结论是准确的吗? 当用户与周围付费邻居 关联强弱时呢?

Strong/Weak Tie(与周围付费邻居关系强弱与转化率关系)

论文也进一步研究了强关系和弱关系对用户付费行为是否有不同的影响,如果两个用户一起玩 超过5次,我们称这种关系为强关系,否则称为弱关系。


从上图可以看出:强关系确实对支付行为有较强的影响,而弱关系的影响相对较弱。

Status(周围付费邻居付费金额与转化率关系)

论文中进一步分析了 免费用户周围的付费邻居的付费金额 与 用户转变为新付费用户概率的关系,如下图所示:

当支付邻居消费金额 平均值为200时,概率比零高出300%。然而,随着付费邻居消费金额的平均数增加,成为新付费者的概率下降。这可能是因为这类用户可以从他们的“有钱朋友”那里得到比其他用户更多的礼物道具。

结构多样性(Structural Diversity)

论文中还研究分析 用户的社交圈结构如何影响他的付费行为,是否不同的社交圈结构会对用户付费行为有着不同的影响。

从上图可以看出:

  • 转换概率(从免费用户到新付费用户)通常随着断开连接的组件的数量增加而增加。

    当一个用户有多个(例如4个)付费邻居时,如果所有邻居都不认识,那么该用户受影响成为新付款人的概率几乎是四个邻居相互认识(的两倍。这在某种程度上是违反直觉的,但在某种程度上是可以解释的.

  • 当用户是付费邻居弱连通的例外情况,比如A与B、B与C、C与D(第三个)是弱连通的,对中心用户付费行为的影响很大,但方差也很大。

特征与模型

特征

User attribute features

  • 性别(Gender):类别特征
  • 等级(Level):类别特征
  • 登录时长(Login time):数值特征
  • 关系(Relation):类别特征,用户是否与其他用户至少有一种co-player关系。
  • Guild:类别特征,表示用户是否与其他用户至少有一种co-guild关系。
  • 中心性(Centrality):类别特征,是否为中心性节点
  • SH:是否是结构洞节点。

Social effect features

  • 周围邻居付费用户个数
  • 周围邻居付费用户强关系的个数
  • 周围邻居付费用户弱关系的个数
  • 周围邻居付费用户平均付费金额
  • 两个整数值特征分别表示付费邻居的个数和付费邻居形成的连通分量的个数。

In-game behavior features

这类特征是从用户的游戏行为日志中提取出来的,包括一系列统计摘要特征,如购买物品的数量和虚拟货币消费的总和。还提取了一些特定领域的特征,如用户缺失项的最大值和用户参与特定比赛的次数。

模型

为了精确地表示模型,论文中定于了一些必要的符号。设
G=(V,E,W,X)G=(V,E,W,X)G=(V,E,W,X)
是一个soical network,其中VVV 表示所有用户的集合,EEE 表示所有关系的集合,ei,j∈Ee_{i,j} \in Eei,j​∈E 表示节点viv_ivi​ 和节点vjv_jvj​ 之间的关系。每个关系ei,j∈Ee_{i,j} \in Eei,j​∈E 都与一个权重Wi,j∈WW_{i,j} \in WWi,j​∈W 相关联,它表示关系的强度。XXX 是所有用户的特征向量集。每个用户viv_ivi​ 具有特征向量 xi∈Xx_i \in Xxi​∈X;yi∈[0,1]y_i \in [0,1]yi​∈[0,1] 表示用户viv_ivi​ 的付费潜力。

模型很简单,就是在FM模型的基础上进行了一些改进,并且针对时间复杂度过高,在训练上进行了一些优化。

Factorization Machines (FM) Model

简单回归下FM模型,对于每个样本特征xix_ixi​,都可以通过如下公式计算预测:

其中 WWW 的shape 为 [d,1][d, 1][d,1]的参数矩阵,ppp 的shape为[d,k][d, k][d,k] 参数矩阵。

引入FM的目的:旨在解决稀疏数据下的特征组合问题。优势:高度稀疏的数据场景具有线性计算复杂度。
这里引入 FM模型对实际业务理论上是有契合的,例如可能存在 男性 & 年纪大 付费能力 大于 女性 & 年纪小,这种特征交叉对发现潜在规律是有帮助的。

论文中采用 square loss 作为损失函数,并且利用L2正则化 防止过拟合,因此损失函数为:

这里面的参数 θ={w0,w1,...,wd,p1,1,p1,2,...p1,k,,,.,pd,1,...,pd,k}\theta = \{w_0,w_1,...,w_d, p_{1,1}, p_{1,2},...p_{1,k},,,.,p_{d,1},...,p_{d,k}\}θ={w0​,w1​,...,wd​,p1,1​,p1,2​,...p1,k​,,,.,pd,1​,...,pd,k​}

Local Consistent FM (LCFM) Model

算法介绍

由于标准的FM模型不能利用未标记用户之间的网络信息,本文提出了一种局部一致性FM(LCFM)模型,该模型通过局部一致性来融合网络信息。其基本思想是假设网络中的邻居节点应该是相似的,并且这种趋势取决于它们之间关系的强度。形式上,基于强度权重Wi,jW_{i,j}Wi,j​,我们定义了一致性程度:


上式中的 NB(vi)NB(v_i)NB(vi​) 表示 与节点viv_ivi​ 有relationship(这里是指co_player) 的邻居用户。我们认为 关系越强(ci,jc_{i,j}ci,j​越大)的两个用户付费行为上越相似。因此损失函数如下:

其中目标函数中右侧第三项为local consistency term(局部一致性约束),即具有越强关系的用户应具有相似的付费行为;μ>0μ>0μ>0 为可调参数,以平衡目标函数中局部一致性因子的影响。

模型学习

显然上面改进的损失函数时间复杂度达到了O(∣E∣kd)O(|E|kd)O(∣E∣kd),时间复杂度过高,几乎不具备落地可行性。因此论文中将训练过程分为两步:

  1. 首先在 training data训练FM模型,该模型的损失函数为上面的 Eq(4),其中并没有 局部一致性约束,该过程循环 T1T1T1 个 epoch,由此得到优化后的参数 θ∗\theta^*θ∗。 这一步是 learning过程。

    因为training data必然存在类别不平衡问题,论文中采用下采样得到样本进行第一步训练

  2. 在第一步得到的FM模型,对test data 每个节点 viv_ivi​ 进行预测得到 yi^\hat{y_i}yi​^​ 作为该样本的初始付费概率,为了优化 local consistency term, 论文中采用传播策略来更新 viv_ivi​ 的付费概率 yi^\hat{y_i}yi​^​。这一步是 inference 过程。

    上式中 γ∈[0,1]\gamma \in [0,1]γ∈[0,1],其中NB(vi)NB(v_i)NB(vi​) 表示 节点viv_ivi​ 的付费邻居。

详细的训练过程如下:


注意上面红色方框标注的部分,第二步是在第一步的基础上进行。

时间复杂度分析:

  • 标准FM时间复杂度:O(kd)O(kd)O(kd)
  • 第一步(learning)时间复杂度:O(∣V∣T1kd)O(|V|T_1kd)O(∣V∣T1​kd)
  • 第二步(inference)时间复杂度:O(∣E∣T2)O(|E|T_2)O(∣E∣T2​)
  • 第一步第二步合在一起时间复杂度:O(∣V∣T1kd+∣E∣T2)O(|V|T_1kd+|E|T_2)O(∣V∣T1​kd+∣E∣T2​)

实验分析

实验设置

依然采用 QQ飞车和DNF两款流行在线游戏数据,实验任务是根据用户的网络信息和活动日志,预测一个免费用户是否会成为新的付费用户。我们按时间将数据集分为训练集和测试集。

数据集 训练集 测试集
QQ飞车 20130620-20130719 20130720-20130820
DNF 20130401-20130530 20130601-20130630

对比算法:

  • Factorization Machines (FM)
  • Logistic Regression (LRC)
  • SVM
  • Random Forest (RF)
  • Gradient Boosted Decision Tree (GBDT)

评测指标:

  • precision
  • recall
  • AUC
  • F1 score

离线表现


上表列出了离线数据集中不同方法的结果。可以看到,所提出的LCFMLCFMLCFM 模型明显优于baseline方法(F1为+3-11%,AUC为+1-3%),LCFM模型的优点在于以下几个方面。

  • LCFM捕捉变量之间的相互作用,因此它比LRC和SVM等只对单个变量的影响建模的模型估计得更准确。
  • LCFM通过隐向量间的点积来模拟变量间的相互作用,平滑了强变量的影响,避免了过拟合。
  • LCFM利用网络信息的局部一致性假设,更好地拟合数据。

此外,可以看到,DNF数据集的预测结果比QQSpeed数据集的预测结果要好,这可能是由于QQSpeed数据集中新的付费用户更稀疏的原因。

特征重要性分析

上面讲到过将 特征分为:user attribute fea- tures (A), social effect features (S) and in-game behavior features(B)
论文中,分别只对模型输入 A、S、B类特征,对比看对实验结果(F1 score 和 AUC)的影响。


从上图可以看出:相对于LCFM,忽略每一类特性,性能上都有明显下降。这表明我们的方法结合了不同类别的特征,并且每个类别的特征都有助于提高性能。

论文中也深入研究了 social effect features 对模型性能的影响,如下表:

线上表现

将上述训练好的LCFM模型部署在QQ飞车和DNF游戏线上,并定期的利用最新的数据对模型进行更新。为了得到模型的有效性检测,线上采用A/B test,一部分样本采用之前线上策略,另外一部分样本采用LCFM模型预测。采用 Lift_Ratio 来评测结果:


上式中CR是LCFM的转换率,CRpriorCR_{prior}CRprior​是之前线上策略的转换率。

那么线上是如何进行推荐呢?

对于每个在线测试,使用不同的方法来选择一组测试用户和一组控制用户。一个用户可能属于多个组,
例如测试组和控制组。然后,我们向所有选定的用户发送邀请消息。即使用户属于多个组,也只会收到一条消息。
消息的内容是邀请用户参加一个促销活动,用户只需支付一定金额的钱,然后用户就可以参加抽奖获得QQSpeed中的道具。

论文中,线上做了两组实验,分别是online Test1, online Test2,实验线上结果如下:

Online Test 1:

利用LCFM模型计算候选用户集中每个用户的付费潜力得分。我们选择top60万名用户组成 test group,使用之前线上策略选择20万名用户组成control group,实验结果如上图 Online Test 1 所示。可以看出:与之前线上策略相比,LCFM转换率相对提高了196%,这验证了LCFM方法在在线场景中的有效性。

Online Test 2:

test group :LCFM模型所推荐的高薪潜在用户。
control group:去掉了social effect features 后训练得到的模型型预测的高分用户。
prior group:之前线上策略选择的用户。
显然LCFM模型表现最好。

个人总结

  • 该论文在算法模型上创新略不足,只是在FM基础上加了个 local consistency term。
  • 但是在 对数据特征的全方位分析,以及在工程上的落地讲解非常详细,对实际业务操作有一定的参考性。

参考资料

  • https://keg.cs.tsinghua.edu.cn/jietang/publications/cikm14-fang-et-al-modeling-paying-behavior.pdf

论文分享 --> 数据挖掘相关推荐

  1. 预告 | 4月22日,CVPR 2021论文分享会详细介绍,学术新星云集!

    国际计算机视觉与模式识别会议(CVPR)是人工智能领域最有学术影响力的顶级会议之一.根据 CVPR 2021 官方公布的论文收录结果,今年一共有 1663 篇论文被接收,接收率为 23.7%,相较于去 ...

  2. CVPR 2021论文分享会日程公布!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale学术 活动:CVPR 2021论文分享会 随着人工智能的火热,AAAI.Neu ...

  3. CVPR 2020最佳学生论文分享回顾:通过二叉空间分割(BSP)生成紧凑3D网格

    机器之心发布 机器之心编辑部 在近日举行的 CVPR 2020 大会上,最佳论文.最佳学生论文等奖项悉数公布.加拿大西蒙弗雷泽大学陈之钦(Zhiqin Chen )等人的「BSP-Net」相关研究获得 ...

  4. 4个Keynote、12篇论文分享、40个Poster,CVPR 2021论文分享会全日程公布

    随着人工智能的火热,AAAI.NeurIPS.CVPR 等顶级学术会议的影响力也愈来越大,每年接收论文.参会人数的数量连创新高.但受疫情影响,近两年国外举办的学术会议都转为了线上,无法满足学者们现场交 ...

  5. dbscan论文_论文分享 :Linkage Based Face Clustering via GCN

    本文要解决的问题是人脸聚类,这类任务的目的是将一批无标记的人脸通过聚类使得自同一个人的人脸聚在一起.作者将这个问题转换为链路预测的问题,当两个人脸属于同一个人时,那么他们之间存在一条边.作者发现特征空 ...

  6. 新星云集!CVPR 论文分享会圆桌论坛:计算机视觉科研​之“路”

    微软亚洲研究院 2021 CVPR 论文分享会各个主题已分享完毕 CVPR 2021 目标检测.跟踪和姿态估计最新进展分享 CVPR 2021 机器学习及多模态最新进展分享 CVPR 2021 3D视 ...

  7. CVPR 2021 图像生成最新进展,论文分享会回放

    微软亚洲研究院 2021 CVPR 论文分享会已完美结束.今日起,CV君将根据不同类别的分享主题进行逐一分享,欢迎查收! 首先分享的主题为:图像生成 论文名称 论文一:Information Bott ...

  8. 预告|CVPR 2021 论文分享会日程公布!与计算机视觉领域学者一起收获“立体”参会体验...

    微软亚洲研究院 2021 CVPR 论文分享会将于 4 月 22 日 9:00 至 18:00 在线上举行,对计算机视觉领域感兴趣的你是否已经安排好时间等待各位"大佬"的分享了呢? ...

  9. CVPR 2021 论文分享会预告

    CVPR 2021 还有2个月开幕,目前已经有592篇论文公布,占近1/3. 52CV 持续跟踪仓库: https://github.com/52CV/CVPR-2021-Papers 微软亚洲研究院 ...

  10. 计算机视觉研究那些事 |CVPR 2020 论文分享会

    本文转载自微软学术合作. 在以下链接查看 CVPR 2020 线上论文分享会全程回放: https://space.bilibili.com/110487933/channel/detail?cid= ...

最新文章

  1. it行业php,什么是IT行业
  2. Eclipse文档注释快捷键以及自定义文档注释内容
  3. 375. 猜数字大小 II
  4. eclipse--android开发环境搭建教程
  5. Java零基础并发编程入门
  6. VSAN常见故障2018-11-06
  7. Linux平台安装go并配置go环境
  8. 2.5.1.2、ImportBeanDefinitionRegistrar 注册BeanDefinition
  9. 挂载程序在我的第一台阿里云服务器上
  10. mysql交叉编译 cmake_cmake交叉编译参数toolchain
  11. 全球及中国CT机产业营销渠道现状与投资机遇研究报告2022版
  12. 腾讯课堂视频回放下载(Edge浏览器+猫抓+夸克浏览器)
  13. apk软件去广告 傻瓜教程
  14. 统计检测(statistical tests)
  15. android快速充电实现_手机充电ic介绍以及怎么用充电IC实现手机快速充电
  16. 前一阵子闹得沸沸扬扬的IP归属地,到底是怎么实现的?
  17. 苹果新款笔记本_微软为Bing桌面体验也带来了语音搜索功能_苹果 新款MacBook Pro 13英寸_笔记本新闻...
  18. 【编译原理】构造产生如下语言的上下文无关文法各一个:
  19. Luogu P2129 小Z的情书
  20. 卢卡奇总体性原则_卢卡奇的“总体性”原则探析

热门文章

  1. 用3-sigma原则处理DataFrame中的异常值
  2. 基于对WalkGIS 的地形数据建库处理模式的探讨 来自建筑工程与设计 2015(15)
  3. Java的异常捕捉(Exception)
  4. (转)Windows远程登陆Linux桌面的方法
  5. python特性高移植性_Python特性图文盘点|微胜教育《九大编程语言全解析》系列...
  6. Java绝地求生—Spring AOP面向切面编程
  7. 给你灵感的23个优秀线框原型图示例
  8. 如何批量修改文件名中的一部分?
  9. centos7下mysql卸载
  10. pygame之连连看