简单阐述一下自己的学习计划:
【每周一篇】更侧重于理论,希望尽量能够形成一个体系或者完整的脉络
当然,也不排除因为业务或者紧急需求,突然跳到某个领域的可能~
【每周代码】更侧重于代码实践,可能是fork一个优秀项目,分析核心代码和算法思路,也可能是自己实现一个小项目demo(如果是这个的话,可能会持续好几周都是同一个算法了hhhh)
因为具体工作的空闲时间不定,所以不能保证每周都能更新【一篇】和【代码】,但是尽量保证每周更新其中之一
仅以自勉~

参考的文章放在前面,主要是整理和归纳(因为自己的水平还没到可以原创的程度hhh)
会增加自己的解读或者补充

应用:推荐系统-威尔逊区间法

写这篇的原因是因为上一篇代码部分,reddit社区的评论排序部分使用了这个方法,因此对这个还挺感兴趣的,就去网上专门找了一下,把这个简单易用的方法全面的学习一下~

先做如下设定:
(1)每个用户的打分都是独立事件。
(2)用户只有两个选择,要么投喜欢’1’,要么投不喜欢’0’。
(3)如果总人数为n,其中喜欢的为k,那么喜欢的比例p就等于k/n。

这是一种统计分布,叫做"二项分布"(binomial distribution)(二项分布后面会补充一个文章)
理论上讲,p越大应该越好,但是n的不同,导致p的可信性有差异。
比如,100个人投票,50个人投喜欢;10个人投票,6个人喜欢,我们不能说后者比前者要好,所以需要同时考虑(p,n)两个参数
刚才说满足二项分布,这里p可以看作"二项分布"中某个事件的发生概率,因此我们可以计算出p的置信区间。
所谓"置信区间",就是说,以某个概率而言,p会落在的那个区间。
置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的测量值的可信程度,即前面所要求的“一个概率”,也就是结论的可信程度。
二项分布的置信区间有多种计算公式,最常见的是"正态区间"(Normal approximation interval)。但是,它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差。
这边,我推荐用t检验来衡量小样本的数据,可以解决数据过少准确率不高的问题。
这样一来,排名算法就比较清晰了:
第一步,计算每个case的p(好评率)。
第二步,计算每个"好评率"的置信区间(参考z Test或者t Test,以95%的概率来处理)。
第三步,根据置信区间的下限值,进行排名。这个值越大,排名就越高。
n为评价数,p为好评率,z为对应检验对应概率区间下的统计量

这里n为评价数,p为好评率,z为对应检验对应概率区间下的统计量
t-分布如图:

当n的值足够大时,这个下限值会趋向p,如果n非常小,这个下限值会大大小于p,更加符合实际。
这个算法也被应用于前一篇博客提到的reddit的评论算法

然后这个博客的主人补充了下面的内容

计算排名的时候,我们通常会考虑三个事情
1.上文讲到的,次数+好评率的分布,次数越多好评率越可靠,好评率越高该项越值得推荐
2.时间因素,如果一个项目是10天前推送的,一个项目是昨天推送的,很明显前者的次数远大于后者
3.影响权重,你这边只考虑了喜欢和不喜欢,其实所有的排序不可能只以1个维度考虑,通常会考虑多个维度,比如浏览次数,搜索次数等,你需要考虑每个的重要性或者说权重大小
1这里就不讲了,其他方法也有很多,比如贝叶斯平均的优化版本、再比如经典的Hacker公式:


2.时间因素:时间越久,代表之前的投票结果对当前的影响越小,这边有很多不同的影响方式,举几个例子:比如艾宾浩斯遗忘规律:

这里的c、k决定下降速度,业务运用过程中,c值一般在[1,2],k值一般在[1.5,2.5]
比如时效衰减:

这里就是比较常见的移动窗口式的,永远只看近期某一段时间,而且时间内呈线性下降,不过可以改变变化方式
3.不同种的属性对于结果的影响自然不同举个例子,用户主动搜索和用户浏览相比,用户主动搜索的情况下,用户的需求更为强烈
通常需要判断这些强烈程度都是通过:
相关性:看因变量与自变量之间的相关系数,如:cor函数importance:
看删除或者修改自变量,对应变量的判断影响大小,如:randomForest的重要性离散程度:
看自变量的数据分布是否足够分散,是否具有判断依据,如:变异系数或者pca
等等

额外知识补充:

为什么正态分布非常常见

整理内容来自这里→正态分布为什么常见

其实感觉自己很多问题都没有深入思考,有机会一定会再重新认真学习一边概率论与数理统计(真是对不起我的专业啊
之前就觉得正态分布很常见

直到John D.cook的文章

这里需要提到中心极限定理(central limit theorem)

在自然界与生产中,一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小时,总的影响可以看作是服从正态分布的。

可以看出,随着统计量个数的增加,它们和的平均值越来越符合正态分布。

正态分布只适合各种因素累加的情况,如果这些因素不是彼此独立的,会互相加强影响,那么就不是正态分布了。

如果各种因素对结果的影响不是相加,而是相乘,那么最终结果不是正态分布,而是对数正态分布(log normal distribution),即x的对数值log(x)满足正态分布。

也就是结果的对数值满足正态分布

(我觉得中心极限定理也是一个值得挖掘的坑~下周的内容暂定未中心极限定理分析(理论)和相关应用的代码)

【每周一篇】推荐算法之威尔逊区间法相关推荐

  1. 推荐系统 | 威尔逊区间法

    我推荐一种之前在惠普做过一种排序方法:威尔逊区间法 我们先做如下设定: (1)每个用户的打分都是独立事件. (2)用户只有两个选择,要么投喜欢'1',要么投不喜欢'0'. (3)如果总人数为n,其中喜 ...

  2. 威尔逊置信区间 php,应用:推荐系统-威尔逊区间法

    我推荐一种之前在惠普做过一种排序方法:威尔逊区间法 我们先做如下设定: (1)每个用户的打分都是独立事件. (2)用户只有两个选择,要么投喜欢'1',要么投不喜欢'0'. (3)如果总人数为n,其中喜 ...

  3. 推荐算法-聚类-层次聚类法

    层次聚类算法实际上分为两类:自上而下或自下而上.自下而上的算法在一开始就将每个数据点视为一个单一的聚类,然后依次合并(或聚集)类.直到所有类合并成一个包含所有数据点的单一聚类.因此,自下而上的层次聚类 ...

  4. 【每周一篇】常用推荐算法总结

    本文主要来源:阿里云天池技术圈常用推荐算法(50页干货) 部分进行总结和详细解释(原文属于比较精炼没有侧重点的提纲) 适合和我一样的推荐算法小白和入门者 主要内容 一.推荐系统简介 信息过载 从海量信 ...

  5. 基于用户投票的排名算法(五):威尔逊区间

    作者: 阮一峰 日期: 2012年3月20日 迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章". 但是,很多场合需要的是 ...

  6. 威尔逊置信区间 php,排序之威尔逊区间算法

    威尔逊排序算法在实际运用中,使用的比较多,目前像贴吧.知乎的评论等排序等都用到此算法,自己在实践中用的比较多的地方就是对酒店排序,下面就介绍本公众号的第一篇文章! 威尔逊区间迄今为止,这个系列都在讨论 ...

  7. 一篇关于youtube推荐算法的分享-基于用户行为的视频推荐

    本文的前提: (1)基于用户的的行为进行推荐 (2)本文只关注注册用户,只对注册用户进行推荐 (3)数据量级:Youtube每天 百万级别的视频 ,百万级别的用户,总的播放数量超过10亿 挑战: (1 ...

  8. 推荐系统系列教程之十一:那些在Netflix Prize中大放异彩的推荐算法

    编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十期,今天按约推出第十一期:那些在Netflix Prize中大放异彩的推荐算法.希望朋友们多点"在看" ...

  9. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法

    作者丨gongyouliu 编辑丨Zandy 来源 | 大数据与人工智能(ID: ai-big-data) 作者在<协同过滤推荐算法>.<矩阵分解推荐算法>这两篇文章中介绍了几 ...

最新文章

  1. virtual hust 2013.6.23 数学杂题基础题目 M - Quotient Polynomial
  2. java获取ua浏览器指纹_头条:如何获取浏览器指纹信息
  3. ubuntu20.04安裝迅雷
  4. 通过指针便利图像元素
  5. Python3——字典
  6. 如何使用CDR智能填充工具
  7. python 列表、字典多排序问题
  8. 17 redis -key设计原则
  9. 互联网日报 | 4月7日 星期三 | 雷军称小米首款汽车售价10至30万;携程通过港交所上市聆讯;深交所主板与中小板正式合并...
  10. php curl keep alive,php curl 保持长连接
  11. asp access物流基础信息查询平台毕业设计成品
  12. flex align-center:center多行垂直方向居中 align-items:center垂直方向单行居中
  13. 联想计算机无线网络设置密码,联想笔记本电脑wifi怎么连接
  14. 微信小程序之 swiper 的 tab 选项卡高度自适应问题解决方案
  15. 拼小圈营销群_拼多多拼小圈引流卖货全攻略
  16. Spring 配置数据库动态密码
  17. html5 高度 满屏,HTML5 全屏特性
  18. 更改计算机用户名批处理,修改计算机名批处理
  19. JMockit didn't get initialized
  20. 小能手英语口语学习笔记

热门文章

  1. (转)关于无良培训机构的恶意抹黑疯狂Java的反驳(v1)
  2. 为什么不建议在MySQL中使用 utf8?
  3. 企业创新系列之:天地不仁
  4. 魔方三阶玩法[图解]
  5. 红警ol服务器维护,红警OL基地升级条件汇总 腾讯红警OL手游基地升级表
  6. 赛昉科技 星光v1 使用笔记
  7. 装饰器模式——爱江山更爱美人
  8. cpm自动SEO写文章 关键词文本生成工具3.0版本
  9. linux centos安装wine qq,centos7下安装wine+QQ成功实例
  10. 部署-用Yum安装PHP7.4(CentOS 7.8)