Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有威尔逊评分的未评级和负面评级的实体--如何处理?

有威尔逊评分的未评级和负面评级的实体--如何处理?
EN

Stack Overflow用户
提问于 2012-10-02 05:13:19
回答 1查看 367关注 0票数 3

读了如何不按平均评级进行排序之后,我想我应该试一试。

代码语言:javascript
运行
AI代码解释
复制
CREATE FUNCTION `mydb`.`LowerBoundWilson95` (pos FLOAT, neg FLOAT)
RETURNS FLOAT DETERMINISTIC
RETURN
IF(
    pos + neg <= 0,
    0,
    (
        (pos + 1.9208) / (pos + neg)
        -
        1.96 * SQRT(
            (pos * neg) / (pos + neg) + 0.9604
        )
        / (pos + neg)
    )
    /
    (
        1 + 3.8416
        / (pos + neg)
    )
);

通过一些测试,我发现pos=0neg>0的对象的分数很小,但不是负分数,而pos=neg=0对象的得分为零,排名较低。

我认为一个未评级的对象应该列在没有正面评级但有一些负面影响的上面。

我认为“个人评分都是偏离基线的表示,所以我会移动基线,我会给每个对象一个‘中性’的初始分数,”所以我想出了这样的结论:

代码语言:javascript
运行
AI代码解释
复制
CREATE FUNCTION `mydb`.`AdjustedRating` (pos FLOAT, neg FLOAT)
RETURNS FLOAT DETERMINISTIC
RETURN
(
    SELECT `mydb`.`LowerBoundWilson95` (pos+4, neg+4)
);

下面是一些AdjustedRating的示例输出

代码语言:javascript
运行
AI代码解释
复制
  \  pos  0       1       2
neg
 0   | 0.215 | 0.188 | 0.168
 1   | 0.266 | 0.235 | 0.212
 2   | 0.312 | 0.280 | 0.235

这更接近我想要的分数,作为一个数字黑客,我想这是可行的,但我不能数学证明它是正确的,

有没有更好的方法,“正确”的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 12:59:42

之所以出现这个问题,是因为这种近似(置信下限)实际上是为了识别列表中的最高等级项目。如果你对最低排名感兴趣,你可以选择更高的信心范围。

或者,我们使用贝叶斯统计,这正是您描述的第二种方法的形式化。埃文·米勒( Evan )实际上有一个后续员额,他在其中说:

我之前提出的解决方案--使用平均值周围置信区间的下限--是计算机程序员所称的黑客。它的作用并不是因为它是一个普遍的最佳解决方案,而是因为它大致符合我们的直觉,即我们希望在一个最好的列表中看到的东西:考虑到数据,最不可能坏的项目。 贝叶斯统计数据让我们把直觉正规化..。

使用贝叶斯排序方法,任何数据为零的点都会回到先前的平均值(您所称的初始分数),然后在收集数据时离开它。这也是IMDB用来计算他们的顶级电影列表的方法。https://math.stackexchange.com/questions/169032/understanding-the-imdb-weighted-rating-function-for-usage-on-my-own-website

你建议的具体方法是将每一目标记为4票、4票、4票,这相当于将平均票数为0.5,权重为8票。由于没有任何其他数据,这是一个合理的开端。拉普拉斯在“日出问题”中提出了著名的观点,认为事件应该归功于1次成功和1次失败。在项目排序问题中,我们有更多的知识,因此将先验均值设置为平均排序是有意义的。设置这个先验均值的权重(或将其作为数据函数(也称为先验方差)的移动速度)具有很大的挑战性。

对于IMDB的前250个电影排名,他们使用的平均电影排名为7.1,权重为25000票,这相当于将所有电影视为以25000张“免费”投票开始,评级为7.1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12690951

复制
相关文章
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1.2K0
何时使用MongoDB而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
4730
何时使用Kafka而不是RabbitMQ
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景
wayn
2023/08/28
4390
何时使用Elasticsearch而不是MySql
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析:
wayn
2023/08/09
8530
何时使用Elasticsearch而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/08/28
3740
何时使用Kafka而不是RabbitMQ
android推荐使用dialogFrament而不是alertDialog
DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。 在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。 2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且Dia
xiangzhihong
2018/01/29
2.5K0
android推荐使用dialogFrament而不是alertDialog
使用HSB而不是RGB来定义颜色
有多种方法可以在代码中定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。可以以更直观的方式使用 HSB 属性来创建颜色搭配良好的调色板。
韦弦zhy
2023/01/06
2.8K0
使用HSB而不是RGB来定义颜色
为什么建议使用你 LocalDateTime ,而不是 Date?
多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法
芋道源码
2019/10/23
1.7K0
html 转换为cshtml,使用Html而不是csHtml
我想使用纯HTML页面而不是使用MVC .net的cshtml . 但是当我通过右键单击索引添加视图时,我只能看到两个选项 .
全栈程序员站长
2022/09/10
2.6K0
JDBC为什么要使用PreparedStatement而不是Statement
前言 这篇博客不是我写的,是由刘志军大大翻译的,真心觉得很棒,而且是必学要掌握的东西,所以就转载过来了,我个人的第一篇转载文章。 开始 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时Prepar
roobtyan
2018/06/04
1.5K0
在不确定列号的情况下如何使用Vlookup查找
合计之外的每一个单元格 都需要引用 除了最基础的等于=引用 我们还有一种更加万能的Vlookup+Match的方法 这样无论日期怎么变化 无论日期顺序是否能对上 我们都不用更改公式
但老师
2022/03/22
2.7K0
在不确定列号的情况下如何使用Vlookup查找
cas 配置https改为ip而不是使用域名
cas注销时地址是https,提示Error is [java.security.cert.CertificateException: No subject alternative names present]
lovelife110
2021/01/14
1.6K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
1.1K0
JDBC为什么要使用PreparedStatement而不是Statement
为什么建议使用你LocalDateTime,而不是Date?
在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗?
良月柒
2019/10/28
1.5K0
为什么建议使用你LocalDateTime,而不是Date?
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还经常会在Java面试被提及,譬如:Statement与PreparedStatement的区别以及如何避免SQL
java达人
2018/01/31
3.8K0
为什么建议使用你 LocalDateTime ,而不是 Date?
来源:juejin.im/post/5d7787625188252388753eae
JAVA葵花宝典
2019/10/29
1.1K0
为什么建议你使用LocalDateTime而不是Date?
calendar是共享变量,并且这个共享变量没有做线程安全控制。当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。在多并发情况下使用SimpleDateFormat需格外注意SimpleDateFormat除了format是线程不安全以外,parse方法也是线程不安全的。parse方法实际调用alb.establish(calendar).getTime()方法来解析,alb.establish(calendar)方法里主要完成了
Bug开发工程师
2020/03/12
2.2K0
为什么建议使用你 LocalDateTime ,而不是 Date?
来源:juejin.im/post/5d7787625188252388753eae
用户1516716
2019/10/24
1.2K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
9970
JDBC为什么要使用PreparedStatement而不是Statement
在Android中使用枚举注解而不是枚举
很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。一般地,在一个文件中定义常量
阳仔
2019/07/31
1.4K0
在Android中使用枚举注解而不是枚举

相似问题

如何使用openpyxl返回列字母而不是列号?

111

如何使用列号引用Excel列而不是列字母

24

使用列号而不是列字母引用范围

10

如何添加列而不是openpyxl行?

25

使用列号而不是列名

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档