本篇是「标签画像系列」的第四篇,此前我们已经介绍过了标签画像体系建设方法论、标签体系设计与加工、标签加工与落库,这次我们来介绍一下「标签评分」。
标签评分是标签治理的一个重要措施,通过给标签打分,可清晰直观的从各个维度评估标签,掌握标签真实使用情况,进行标签持续优化,助力业务运营。同时,也能帮助数据团队判断哪些标签更应该投入计算与存储资源,合理规划集群资源。
经过前期标签体系设计、标签加工,标签终于可以上线,让业务人员使用,发挥价值了!
随着标签上线一段时间后,我们开始关心每天占用计算资源与存储空间,跑出来的上百个标签,业务同学真的用到了多少,业务收益是否能覆盖数据成本呢?标签上线后,其质量怎么样,是否存在老规则不适用、需要持续优化的情况?
带着这一问题,我们需要用一种方法来评估标签上线后的使用情况,标识各个标签的价值。参考电影评分、花呗评分等形式,我们决定也给标签打个分、排个序,简单明了。
标签评分模型,经过考虑我们选取了5个维度作为评分入参:

标签总评分= a * 标签使用度评分 + b * 标签关注度评分 + c * 标签质量评分 + d * 标签持续优化读评分 + e * 标签安全度评分
其中标签使用度、标签关注度、标签质量、标签持续优化度作为核心维度,标签安全度可根据实际情况考虑是否纳入。a、b、c、d、e是权重,总和为100%。
标签使用度,用以评估标签被分析、外部系统的使用情况。
在袋鼠云标签产品中,标签有这几种使用场景:
• 标签引用:如原子标签被衍生标签应用、衍生标签被组合标签引用等,基于该场景,计算“标签引用次数”指标。
• 标签分析:标签在标签圈群、群组画像、群组对比、显著性分析等画像分析功能中被分析的情况,计算“标签分析次数”指标。
• 标签调用:标签通过数据API被外部应用查询的次数,计算“标签调用次数”指标。
基于以上3个指标,我们首先采用Sigmoid函数将指标转化为评分,再将各个指标的评分加权汇总成标签使用度评分。


标签关注度,用以评估被搜索、查看、收藏的情况。
袋鼠云标签产品中,标签关注度与以下场景有关:
• 标签搜索:标签在标签市场被用户搜索的情况,计算“标签搜素次数”指标。
• 标签查看:标签被点击查看基础信息、分析页面等的次数,计算“标签查看次数”指标
• 标签收藏:收藏该标签的用户数,计算“收藏用户数”指标
以上3个指标可反映标签的关注热度,我们依然采用Sigmoid函数将指标转化为评分,再将各个指标的评分加权汇总成标签关注度评分。

标签质量,用以评估用户被打标情况,反映标签规则的合理性。
当我们定义了标签和标签值,经过计算之后,标签值打在用户身上的很少,那说明我们的规则执行不合理。比如我们定义了“活跃度”这个标签,分为“高活跃、中活跃、低活跃度”等,但真实被打上的这个标签的用户,低于70%,还有很大一部分比例是空值,未打上该标签,说明我们制定的标签值规则有漏洞,需要完善。
系统将计算每个标签的“标签覆盖度”,将覆盖度归一化为分数,转化成评分。

持续优化度,用以评估标签上线后,是否后续再去优化该标签。
在客户的生命周期中,不断有新用户流入、沉默用户流失。公司战略调整、产品发布等都会影响客户行为,这些变化我们需要以数据的方式呈现,所以我们需要不断根据业务调整、客户变化调整我们的标签策略,以追求可通过标签直接地、迅速地反映客户情况,指导业务运营。
持续优化度,我们通过“标签优化次数”指标来评估,指标签上线后标签被编辑再次发布的的次数。我们同样采用Sigmoid函数将指标转化为评分。

标签安全度,不能反映标签的热度,但也将其作为了标签评分的一个维度,可根据企业情况考虑是否纳入。
在袋鼠云标签产品中,标签安全相关的策略有:
• 标签的可见度:标签可编辑、可查看的用户范围
• 标签使用是否需要申请授权:标签发布后,其他人使用该标签,是否需要申请审批
• 标签是否进行行级权限控制:上面我们控制了标签的列权限,行级权限反映该标签是否设置了行级权限
• 标签是否脱敏:标签是否进行脱敏
根据标签的安全度策略配置情况,我们也采用评分的方式来评估。

基于以上5个维度的评分,我们根据前面提的公式加权汇总,得到总评分。

基于标签评分,为了更加直观的让标签管理员、业务人员查看热门标签、沉默标签等,通过排行榜的方式呈现:
基于标签的使用度、关注度、持续优化度3个角度来计算标签的热门评分,展示TOP N的热门标签。

热门的标签的反向排序便是沉默标签,沉默标签说明这些标签使用率很低,可考虑定期下线,节省集群资源。

综合排行榜便根据标签的综合评分进行排序,从标签使用度、关注度、持续优化度、质量、安全等几个维度评估,全面评估标签。

用户可根据自己更加关注的维度,查看标签使用度、关注度、持续优化度、质量、安全各个子维度的排行榜。同时,可查看各个标签的具体指标,如使用度维度,可查看各个标签的当前引用次数、分析次数、调用次数,针对具体指标具体分析,满足不同的标签分析场景。

标签评分模型上线后,我们需要根据实际情况调整不同维度的权重,符合自身实际情况。当经过一段时间的应用,大家认可这套评估逻辑之后,便可以将静态化的评分展示转化为动态化的告警、自动化治理等,可设置标签质量告警、评分告警,自动通知标签管理员、责任人等。
以上便是在产品中应用的评分逻辑,希望对大家有所帮助,也可提出不同思路优化评分模型,达到更好的标签治理效果。
袋鼠云开源框架钉钉技术交流qun(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack/Taier
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/