在第一篇[打分系统漫谈1 - 时间衰减]我们聊了两种相对简单的打分算法Hacker News和Reddit Hot Formula,也提出了几个这两种算法可能存在的问题,这一篇我们就其中的两一个问题进一步讨论:
- 如何综合浏览量和点赞量对文章进行打分期望效用函数->点赞率
- 如何解决浏览量较小时,点赞率不置信的问题wald Interval -> wilson
Reddit Hot Formula? 期望效用函数!
让我们从上一篇我们提到的Reddit Hot Formula来说起,抛开文章质量的惩罚项,只考虑点赞拍砖的低配版打分公式是
[ score = sign(U-D)* log_{10}{|U-D|} + seconds/4500 ]
Evan从经济学期望效用这个新颖的角度试图对上述公式进行复现,几个基本假设包括:
- 用户刷新界面的行为$ \sim Poisson(\lambda)$
- 每次刷新看到新/老文章的概率是(q/(1-q)), 喜欢/不喜欢的概率是(p/(1-p))
- 老文章效用为0,喜欢的新文章效用为1, 不喜欢的新文章效用为-1
上述概率p,q可以用已有数据进行估计:
- 在没有任何和文章相关的信息时,喜欢不喜欢的概率是一样的(p=\frac{1}{2}), 当我们获得一篇文章的点赞量和拍砖数时我们可以用点赞率对概率进行更新得到(p = \frac{U+1}{U+D+2})
- 概率q是一篇t时刻前发布的文章没有被作者读过的概率,换言之就是用户在t时间内没有刷新界面的概率(q = p(N_\lambda=0)= p(x>t)= exp(-\lambda t))
综上我们可以得到对数效用的表达式:
[ \begin{align} Utility & = p * q -(1-p) * q \ & = exp(-\lambda t ) *(\frac{U+1}{U+D+2} - \frac{D+1}{U+D+2}) \ &= exp(-\lambda t ) *(\frac{U-D}{U+D+2}) \ log(Utility ) & = log(U-D) - log(U+D+2) - \lambda t \ \end{align} ]
和上述Reddit Hot Formula对比我们会发现当U>D的时候,两个表达式是基本一致的,最大的不同是Reddit没有期望效用的第二个对数项(log(U+D+2))。换言之Reddit只考虑点赞量而没有考虑点赞量对应的基数,这个基数可以是点赞+拍砖或者是用户的浏览量。
我们举个例子你就会明白这种打分可能存在的问题,我们拿Stack overflow来举个例子,下图的两个问题获得了差不多的投票57 vs. 53,但是会发现第一个问题比第二个问题多一倍的浏览量4k vs. 2K, 所以从投票率来看反而是第二个问题的投票率更高。
点估计?区间估计!
这样看似乎我们应该使用点赞(投票)率而非简单的点赞量来对文章进行打分,但是点赞率真的永远可信么? 我们再看一个例子
单从投票率来看,第一个问题投票率高达50%但是浏览量只有2 ,而第二个问题投票率较低但是浏览量很高。如果但从投票率来看,似乎第一个问题排名更高,但是直觉告诉我们第二个问题应该排名更靠前。这就涉及统计学中点估计的置信度问题。
让我们来把用户点赞这个行为抽象一下,我们假设每一个用户要么点赞要么拍砖,每一个用户之间的行为之间独立,所以每个用户(\sim Bernoulli§), 其中p是点赞的概率。当样本量足够大的时候,根据大数定律用户点赞的频率会趋于点赞率$\lim\limits_{x \to \infty} P(|\frac{n_x}{n} - p| < \epsilon)=1 $
但是当用户量不够,样本比较小的时候,计算的点赞率会和总体概率会存在较大的偏差。一种解决方法就是使用区间估计而非点估计,我们给出点赞率估计的下边界而非点赞率的估计值。
最常用的二项分布的区间估计由近似正态分布给出。根据大数定律,参数为n,p的二项分布在(n \to \infty)的时候 (\frac{\hat{p}-p}{\sqrt{p(1-p)/n}} \sim N(0,1))。根据正态分布的置信区间我们会得到二项分布的近似区间估计如下
[ \begin{align} & p( | \frac{\hat{p}-p}{\sqrt{p(1-p)/n}} | < z_{\alpha/2}) = 1- \alpha \ & where , 置信度是0.95,\alpha = 0.05 \ &\hat{p}是根据每个用户点赞行为给出的点赞率的估计\ &n是样本量,可以是用户点赞+拍砖的总和,或者是用户浏览量\ &p是总体的点赞率是我们希望得到的估计\ \end{align} ]
Wald Interval 对上述近似区间用样本估计(\hat{p})替代总体p,给出了最常用的二项分布置信区间:
[ \begin{align} p_-,p_+ = \hat{p} \pm z_{\alpha/2}\sqrt{\hat{p}(1-\hat{p})/n} \end{align} ]
wald置信区间适用大多数情况,但是在下面三个情况下会存在问题:
- 样本不够,n太小时,(\hat{p})和总体的p相比会偏差较大
- (p \to 0) or (p \to 1)会导致方差趋于0,使得置信区间显著偏窄
- (p =0,1) 置信区间长度为0
而在估计文章点赞率这个场景下我们不可避免的会碰到上述3个情况,在这种情况我们往往会使用更加复杂的置信区间算法。来来来下面让我们说说其中一种高配版的置信区间- Wilson Interval
Wilson Score
Wilson对Walt置信区间做了修正, Wilson置信区间的上下界如下:
[ \begin{align} p_-,p_+ = \frac{\hat{p} + \frac{z^2_{\alpha/2}}{2n}} {1 +\frac{z^2_{\alpha/2}}{n}} \pm z_{\alpha/2}\frac{\sqrt{\frac{\hat{p}(1-\hat{p})}{n} + \frac{z2_{\alpha/2}}{4n2} }}{1 +\frac{z^2_{\alpha/2}}{n}} \end{align} ]
看着老复杂了,让我们来拆解一下你就会发现原理蛮好理解的。先说说对总体均值的估计,wilson对(\hat{p})进行了如下调整:
[ \hat{p} \to \tilde{p} = \frac{\hat{p} + \frac{z^2_{\alpha/2}}{2n}} {1 +\frac{z^2_{\alpha/2}}{n}} ]
当样本量足够大Wilson和Walt对总体均值的估计会趋于一致。当样本量很小的时候, 不同于walt,wilson给样本估计加了一个(\frac{1}{2})的贝叶斯前置概率(点赞和拍砖的概率各是50%),然后不断用新增样本来对这个前置概率进行调整。从而避免样本较小的时候样本估计过度偏离总体的问题。
[ \begin{align} when \lim\limits_{n \to \infty} \tilde{p} \to \hat{p} \ when \lim\limits_{n \to 0} \tilde{p} \to \frac{1}{2} \ \end{align} ]
方差部分也做了相同的处理, 当样本足够大的时候wilson和walt对总体方差的估计会趋于一致,但是当样本小的时候和上述样本均值的处理方法一样,会趋于贝叶斯前置概率对应的方差(\hat{p} \to \frac{1}{2} \Rightarrow \hat{p}(1-\hat{p}) \to \frac{1}{4})
[ \begin{align} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \to \frac{\sqrt{\frac{\hat{p}(1-\hat{p})}{n} + \frac{z2_{\alpha/2}}{4n2} }}{1 +\frac{z^2_{\alpha/2}}{n}} \end{align} ]
下面两张图片很直观的给出了不同样本数量(n=10 vs.100)下,样本均值的估计所对应的置信区间的长度(方差估计)。当样本大的时候Wilson和Wald几乎一样,当样本小的时候,随着p趋于0 or 1,Wilson置信区间会显著宽于Walt区间。
而Wilson打分就是取Wilson置信区间的下界:
[ \begin{align} score= \frac{\hat{p} + \frac{z^2_{\alpha/2}}{2n}} {1 +\frac{z^2_{\alpha/2}}{n}} - z_{\alpha/2} \frac{\sqrt{\frac{\hat{p}(1-\hat{p})}{n} + \frac{z2_{\alpha/2}}{4n2} }}{1 +\frac{z^2_{\alpha/2}}{n}} \end{align} ]
Wilson打分方式有几个很好的特性:
- 点赞率§一样,浏览量(n)越高得分越高
- 点赞率趋于0时, score = 0
- 点赞率趋于1时, score = (\frac{1}{1+z^2_{\alpha/2}/n}), 浏览量越高,得分越接近1,反之浏览量越小,得分越低,这样会对小样本点赞率高的问题进行调整
- 置信度越高,(z_{\alpha/2})越大,点赞率越不重要,而样本量n越重要
零基础如何学习大模型 AI
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型实际应用案例分享
①智能客服:某科技公司员工在学习了大模型课程后,成功开发了一套基于自然语言处理的大模型智能客服系统。该系统不仅提高了客户服务效率,还显著降低了人工成本。
②医疗影像分析:一位医学研究人员通过学习大模型课程,掌握了深度学习技术在医疗影像分析中的应用。他开发的算法能够准确识别肿瘤等病变,为医生提供了有力的诊断辅助。
③金融风险管理:一位金融分析师利用大模型课程中学到的知识,开发了一套信用评分模型。该模型帮助银行更准确地评估贷款申请者的信用风险,降低了不良贷款率。
④智能推荐系统:一位电商平台的工程师在学习大模型课程后,优化了平台的商品推荐算法。新算法提高了用户满意度和购买转化率,为公司带来了显著的增长。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~