上个月对一个小项目的效果进行改进,时间紧,只有不到一周的时间,所以思考了一下就用了最简单的方法来做,跟大家分享一下(项目场景用的类似的场景)

  项目场景:分析一个产品的竞品,譬如app的竞品、网站的竞品等等

  项目分析:简单来说就是竞品分析,竞品分析有很多比较成熟的方法,但是我认为,竞品分析其实和推荐有着很大的相关性。譬如我要分析一个技术网站的竞品有哪些,通俗点说,就是看一个用户经常访问哪些网站、不同类的用户访问网站的偏好是什么、在同类技术网站里与之定位想进,用户人群相似的网站有哪些等等。抽象来看,即可得出两个关键词:用户和物品(或者说物品和竞品)。这个关键词是不是很熟悉?在推荐里我们经常会遇到item和user之间的相似度,那么竞品分析其实也可以同类化于相似度的计算问题。

  具体做法:提到相似度计算,会想到很多方法,常见的欧几里得距离,余弦计算,皮尔逊距离等等,对于不同的距离计算,有不同的适用条件,之前总结过一个关于相似度计算的文章,只不过觉得不是很完善,所以一直没有发出来。这次做竞品分析的时候突然想起了Jaccard距离。那么Jacard距离是什么呢?简单说下公式:

  给定两个集合A和B,A和B的Jaccard相似度 = |A与B的交集元素个数| / |A与B的并集元素个数|

  那么这样一个公式是来应用到竞品分析中的呢?我们假设一个场景:

  喜欢博客园的用户也喜欢浏览知乎、CSDN、Github等,喜欢知乎的用户也喜欢浏览Github、InfoQ、V2EX、SegmentDefault、博客园等,假设我们根据浏览次数来进行排序,得到两个集合,那么我们可以简化为博客园和知乎的竞品分别为:

  博客园=[知乎、CSDN、Github]

  知乎=[Github、InfoQ、V2EX、SegmentDefault、博客园]

  此时,第一版计算结果:博客园与知乎的Jaccard相似度为= 1 / 7=0.14

  这是最简单的Jaccard相似度计算,然而我们发现,逛博客园的经常逛知乎,且知乎权重很高,但是他们俩的相似度却很低,只有0.14,看起来好像并不符合常理,于是,我做了点修改,将需要计算的竞品本身也加入集合,即:

  博客园=[博客园、知乎、CSDN、Github]

  知乎=[知乎、Github、InfoQ、V2EX、SegmentDefault、博客园]

  这样我们再来计算,得到第二版计算结果:博客园与知乎的Jaccard相似度 = 3 / 7 = 0.42

  为什么我们要将竞品本身考虑进去呢?其实很简单,以博客园为例,我们的目的是找到博客园的竞品,分析出经常浏览博客园的用户还会经常浏览哪些同类技术网站,那么博客园的用户肯定是经常浏览博客园的,这点显而易见,一个物品本身也是自身的竞品。将要分析的竞品本身加入集合后就可避免我们第一次计算时出现的不符合常识的结果。

  但是,还得思考一个问题,博客园对知乎的Jaccard相似度与知乎对博客园的Jaccard相似度应该是一样的吗?按照前两次计算,我们认为是一样的,因为只是考虑的交集的个数,并没有考虑集合中元素所处的位置因素。然而实际上,集合中的元素位置其实是有先后之分的,按降序排列,即竞品相关度是越来越低的。此时未考虑元素的位置因素似乎也有悖尝试。举个例子:一个经常看博客园的用户,也会经常看知乎,那么一个经常看知乎的用户是否也代表也会经常看博客园呢?这个结论与我们给出的条件是相悖的:一个经常看知乎的用户,相比于博客园,更偏好于Github。所以我们得到结论:两个竞品A和B,A对B的重要性不一定等于B对A的重要性。

  所以,我们对此进行进一步改进,

  博客园=[博客园、知乎、CSDN、Github]            ====》博客园 = [1.0,0.6,0.3,0.1]

  知乎=[知乎、Github、InfoQ、V2EX、SegmentDefault、博客园]  ====》知乎 = [1.0,0.55,0.15,0.14,0.11,0.05]

  (注:竞品本身加入集合我设定权重为1,其他竞品元素总分为1)

  此时,计算得到第三版计算结果:

      博客园对知乎的Jaccard相似度 = ( 两者交集的权重得分和/ 两者权重总和 ) * 知乎在博客园集合中所占的权重 = ( 1+0.6+0.1+1+0.55+0.05 / (2+2) )* 0.6 = ( 3.3 /4 )* 0.6 = 0.495

      知乎对博客园的Jaccard相似度 =  ( 两者交集的权重得分和/ 两者权重总和 ) * 博客园在知乎集合中所占的权重 =( 1+0.6+0.1+1+0.55+0.05 / (2+2) )* 0.05 = ( 3.3 /4 )*0.05 = 0.04

  由此可得,博客园与知乎的竞品相似度是不相同的,也符合常理

  总结:一开始我想到了很多方法来做,但是时间紧,又要有效果提升,所以尝试对最简单的计算公式做改进达到提升效果的目的,针对每一次计算的结果,结合常识,再来进行一步步改进,最后取得了不错的效果。其实最后的方案还可以做一些改进,如:如何设定权重,如何设定计算公式、是否可以用线性模型拟合等等,都可以去尝试,有兴趣的也可以去试一试。如果大家有更好的方法,也可以一起讨论一下:)

  

关于Jaccard相似度在竞品分析中的一点思考的更多相关文章

  1. Jaccard相似度在竞品分析中的应用

    上个月对一个小项目的效果进行改进,时间紧,只有不到一周的时间,所以思考了一下就用了最简单的方法来做,效果针对上一版提升了5%左右,跟大家分享一下(项目场景用的类似的场景) 项目场景:分析一个产品的竞品 ...

  2. 记账类APP竞品分析-挖财与随手记

    注:本文更新中. 一.概览 1.  产品名称及版本 l  挖财11.2.0.0 免费版(2016/9/6发布) l  随手记10.2.8免费版(2016/8/22发布) 2.  设备信息 设备型号:i ...

  3. TODO 竞品分析方法——关于导航评测的一些笔记

    参考:移动App性能评测与优化 chapter4讲了地图怎么测,虽然不测地图,但是里面有关竞品分析的部分写得非常好,很多解决方案真的很精彩.记录一下. 我之前的竞品分析测试,通常是很简单的竞品数据层面 ...

  4. 公有云厂商DDoS防护产品竞品分析——内含CC的一些简单分析,貌似多是基于规则,CC策略细粒度ip/url//ua/refer

    公有云厂商DDoS防护产品竞品分析 from:http://www.freebuf.com/articles/network/132239.html 行文初衷 由于工作关系,最近接触了很多云上用户,对 ...

  5. 同城速递 & 同城跑腿 & 竞品分析

    同城速递 & 同城跑腿 & 竞品分析 toC / toB 闪送 https://www.ishansong.com/ https://www.tianyancha.com/compan ...

  6. 竞品分析」项目协作管理平台-Teambition和CORNERSTONE--深度体验

    一.分析目的 通过分析2B产品中的团队协作管理软件的对比分析,用于为公司团队协作软件的选型做产考. 二.竞品归属市场概况 2.1.目标用户群及需求 主要面向企业用户,用于解决企业不同地域以及不同职能部 ...

  7. 天天果园,中粮我买网等生鲜APP竞品分析

    奈何对生鲜行业的品类,价格,供应链不熟悉,想先从APP开始来了解生鲜行业和各个生鲜企业,若有不足之处,还望海量,也请帮忙指正. 选取了以下竞品:天天果园,易果生鲜,一米鲜,中粮我买网,爱鲜蜂,每日优鲜 ...

  8. 【竞品分析】Android音乐播放器的竞品分析

    迄今为止最长的一篇博客,各位看官笑纳~~ 本次分析基于Android平台,选取了几款我体验过的播放器进行比较分析.主要分为两类,一类是大而全的,功能全面,可满足用户管理歌曲.导入导出歌单等多方面需求, ...

  9. AI体验类产品竞品分析

    1.业界状态 人工智能(Artificial Intelligence),简称AI.上个世纪50年代就有一批年轻的科学家提出了这一概念,经历过50多年的长足发展,信息化建设的脚步不断加快,机器人战胜人 ...

随机推荐

  1. 木棍分割[HAOI2008]

    题目描述 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小, 并且 ...

  2. 《奇思妙想》在JavaScript语言中floor和round方法在某种随机分配场景下对分配区间的公平性!!!

    前言 大欢哥的题目完成了,但是衍生出一个新的问题!上篇随笔中我和大欢哥采用的随机数生成方式,到底是谁的比较公平??? 正文 欢迎来到阿段博客<奇思妙想>!我们的口号是 “心有多大,bug就 ...

  3. Dapper入门教程(一)——Dapper介绍

    Dapper是什么? Dpper是一款.Net平台简单(Simple)的对象映射库,并且Dapper拥有着"微型ORM之王"的称号.就速度而言与手写ADO.NET SqlDateR ...

  4. React Native 系列(四) -- 布局

    前言 本系列是基于React Native版本号0.44.3写的.RN支持CSS中的布局属性,因此可以使用CSS布局属性,这里就不详细地讲解了,这篇文章的重点主要是讲述一下RN中的Flex布局. CS ...

  5. Unicode、UTF-8 和 ISO8859-1到底有什么区别

    说明:本文转载于新浪博客,旨在方便知识总结.原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 本文主要包括以下几个方面:编码基本知识, ...

  6. LGTB与序列 状压dp

    考试一看我就想到了状压dp.当时没有想到素数,以为每一位只有0~9这些数,就开始压了.后来发现是小于30,然后改到了15,发现数据一点不给面子,一个小点得数都没有,完美爆零.. 考虑到bi最多变成58 ...

  7. 对图像组成不了解?这样学习Matplotlib必走弯路!

    在学习Matplotlib的过程中,大家一定会遇到这样那样的问题,比如说,背景图怎么设置?坐标轴怎么设置?坐标轴上的刻度值怎么设置?怎样在PyQt中添加Matplotlib绘图模块? 其实想要学好用好 ...

  8. 【HOSTS相关】什么时候使用127.0.0.1

    什么时候使用127.0.0.1 在测试环境,如果想知道上线后服务发生异常中断的情况下界面会如何展示,这个时候有2种方式: 第1种是:由开发人员协助,比如后台开发人员在服务器上使这个服务停止,或者由前端 ...

  9. Android开发中小知识

    1. Eclipse中代码对齐的快捷键:Ctrl+Shift+F 2.API打开显示“已取消到该网页的导航”——解决办法:右键文件属性,点击解除锁定即可

  10. vue.js + ajax 数据加载(纯新手get)

    似懂非懂的感觉下撸了一个小demo .(只是单纯的引用vue.js的小demo.)在实践中进步吧! 首先肯定要先看vue的文档,并且知道超超基础的小知识!!!奉上代码: HTML 部分: js的引用: ...