热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Engagement衡量用户活跃度(转载)

Engagement(参与度)是一个特殊的度量,Avinash认为Engagement不应该作为网

Engagement(参与度)是一个特殊的度量,Avinash认为Engagement不应该作为网站分析的一个度量,它更像是不愿意去寻求衡量网站是否成功的真正指标时使用的一个借口。他列举了Engagement存在的几个缺陷:

  • Engagement对于不同网站而言是不同的,它不是一个统一的度量,难以用一个统一的标准去定义它;
  • Engagement更多的是从定性的角度来定义的,很多用户参与行为不能很好地量化,因此难以准确地度量;
  • 没有一个评判标准,对于一个网站而言用户参与度到底多少算是好;
  • 因为没有标准的定义,存在不固定性,因此不能作为衡量网站整体表现的参考指标。

 

所以,我们可以认为Engagement是一个非标准化的度量,但绕开Avinash所提及的那些误区之后,也许Engagement也并非一无是处,至少它可以作为网站自身的分析指标,衡量用户的活跃度。

 

如何合理地定义Engagement

 

如果你要用Engagement来衡量网站用户的活跃度,并且把它作为一个长期的指标进行趋势分析,那么首先在定义时必须确定那些被归为Engagement的行为是相对固定的, 在短期内不会发生变化。如对于一个论坛而言,“发帖”和“跟帖”行为是持续不变的交互行为,这些可以作为识别用户是否参与的标准;而网站中的一个活动按钮 或推广链接则不能作为识别Engagement的标准,因为推广活动一般是有期限的,在下线后用户的Engagement就会相应的降低,这样就会导致 Engagement的不稳定性,也就失去了分析的意义(或者你只是为了单独分析该次推广活动的用户参与度,那另当别论)。

 

这里先举两个例子,显示电子商务网站定义Engagement的例子:

 

  • 用户的注册行为;
  • 用户放入购物车或购买行为;
  • 用户的售前和售后的反馈行为;
  • 用户对商品的评价。

 

再来看一下微博中可以定义为Engagement的一些行为:

 

  • 用户注册行为;
  • 发布新微博或转发微博;
  • 发表对微博评论;
  • 关注新的用户。

 

non-standard可以看到电子商务网站的Engagement的定义与微博大相径庭,这也是为什么说Engagement是一个非标准化的度量的原因,网站间无法比较各自Engagement的优劣。所以Engagement应该作为网站内部分析指标,只用于衡量网站本身用户的活跃度变化趋势。

 

即使是一个网站的Engagement也有不同的定义方法,比如我也可以在微博的Engagement定义 中加入“收藏微博”的动作,所以我的建议是对于Engagement的定义,一个网站应该在一开始就形成一个标准,如果网站的性质没有发生大的变化就不要 轻易修改定义,不然即使是作为网站自身的评价指标,它也不能很好的发挥作用。

 

需要注意的是,Engagement只是用户的一系列动作或行为(Actions),并非网站的产出结果(Outcomes)。只能用于衡量网站用户活动的频繁度,进而分析网站用户近期的活跃程度,而不能用于衡量网站的效益

 

基于Engagement Index的分析

 

这里首先推荐一篇Eric T. Peterson在Web Analytics Demystified上的文章——How do you calculate engagement? ,里面提供了关于Engagement的十分全面和精彩的分析。

 

分析最好结合实例,所以这里还是以我的博客为例,假如我定义我的博客的Engagement包括以下的行为:

 

  1. 用户发表评论;
  2. 收藏或分享我的文章;
  3. 订阅我的博客或关注我;
  4. 停留时间(Time on site)超过3分钟。

 

首先涉及到数据获取的问题,其实通过点击流+事件追踪,大部分用户的行为还是可以跟踪得到的,这里就不再详细展开了。

 

接下去就是如何衡量Engagement。衡量Engagement的指标叫做参与度指数(Engagement Index),既然我们已经定义好了Engagement,我们就可以通过一些方法计算Engagement Index。这里建议Visit(或者叫Session)为单位计算用户一次访问是否Engaged,而不是计算每个Visit中Engage的次数,因为我们无法对某些行为精确定量它的次数,也许发表评论数可以计算次数,但是停留时间的长短就无法用次数来衡量,所以这里统一只判断一个Visit是否发生了上述的任何一类行为,发生则认为这次访问为Engaged,我们可以用一段形象的代码来解释:

 

帮助
1
2
3
4
5
boolean isEngaged(Visit) {
         if ( comment || share || feed || follow || time_on_site>=3min )
                  return true;
         else
                 return false; }

 

通过调用上面的“函数”我们可以获取到哪些Visits是Engaged Visits,就可以计算出总的Engaged Visits的数量就是Engagement Index的值。但是单纯的一个Engagement Index似乎没有对比的价值,我们可以通过计算跟网站总Visits的比值获取用户的参与率(Engagement Rate)

 

Engagement Rate = Engaged Visits / All Visits

 

也可以用下图来对比Engaged Visits与总Visits的关系:

 

engaged-visits

 

也可以分析定义Engagement中各类行为发生的比率:

 

engaged-visits-piechart

 

这里需要注意的是这个饼图中Visits的总和并非上面计算得到的Engagement Index,因为一个Visit可能既发表了评论,也订阅的博客,那么这个Visit就会被重复记录到两种行为的比例中。根据Engagement进行细 分来源的的分析上面推荐的Eric T. Peterson的文章中已经介绍的非常详细,有兴趣的朋友可以自己去看下。

 

如果你觉得还意犹未竟,认为那些用户参与的行为并非同等重要的,或许那些订阅了博客的用户或者在博客发表了评论的用户应该显得更加活跃,那么可以给这些行为赋予不同的权重,Sidney的博客中有过相关的介绍——网站分析的最基本度量(8)——Engagement,如果你想让权重显得更加客观和精确,可以使用我之前介绍过的层次分析法(AHP)来计算每个行为的权重,那么Engagement Index就是相应的加权和(定义每个Engaged Visits的数量为Ei,每个Engagement行为的权重为Wi):

 

engagement-index-wtd

 

分析Engagement的意义

 

有时我们需要细分,而有时我们需要将指标进行聚合来评价总体表现。所以建议不要试图使用次数去计算每个Visit的Engagement Index是多少,次数会由于网站设计上的变化(页面布局、交互按钮的设计等方面的变化)及行为实现的多样性(如果你要发条微博,那实现的途径太多了)而 呈现不稳定状态,使用Visits来度量的Engagement更具可比性,最总我们只是进行汇总来衡量整个网站的Engagement情况。

 

那么Engagement对于网站来说到底有什么用呢?这里有个最简单的例子,当一个电子商务网站发现近几天的订单量并无发生显著的变化,但是 用户活跃度却大幅上升,原因是某款商品的质量存在问题,大量的用户向网站反馈和抱怨,这时如果网站通过分析Engagement监控着用户的活跃度,那么 就可以迅速地发现并作出反应。其实这个例子也说明了对于某些网站来说Engagement越高,网站的绩效不一定越好,两者没有直接的联系。

我们已经步入WEB2.0的时代,用户与网站间的交互更加频繁,网站需要更多活跃用户来增加自身的活力,用户的参与有效地提升了网站与用户之间 的信息互通,为网站带来活力的同时也为网站创造着更多的信息,而且很多都是网站本身忽略的或者无法提供的有价值信息,而这些“用户智慧”的注入无疑可以为 网站带来更多的关注。


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
author-avatar
虚伪小仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有