#1 - 2022-6-27 22:09
ζ*'ヮ')ζ 讀者諸孃へ (愛讀者諸孃は御賛成下さいまし)
众所周知,在我班讨论中已经提出过的作品排名方法已经有了 114 514 种,但是其中绝大多数都是基于作品本身的评分分布的。这一类的方法有一个很大的问题,就是无法处理由于作品评分群体差异而带来的评分差异,于是就经常会出现婆罗门神作和首陀罗神作之间的不可调和的矛盾。
那么,怎样来解决这一矛盾呢?在此,我们有一个原则,即“判断作品甲优于作品乙的依据,应当是同时给作品甲和乙评分的群体认为作品甲优于作品乙。”亦即,依据作品间重叠评分者的判断来判断作品之间的相对优劣。著名的“科学排名”的确就是根据这一原则来的,但似乎具体的排序方法又不必要地复杂了,以至于失之直观。作为更简单易懂的科学排名的一项测试,楼主利用了@Oalvay 提供的2021年2月份记录的Bangumi 全用户动画评分数据计算出了一个排行榜。同时鸣谢@Trim21 提供的 Bangumi Archive 数据,用于将作品 ID 与作品标题进行匹配。当然,单纯的两两比较会导致循环偏好的现象(即甲优于乙,乙优于丙,丙又优于甲等)的产生,因此有必要以统一的标准将上述两两比较的“偏序”转化为可以给所有作品一个单一排名的“全序”。具体算法如下。
1. 考虑作品 i 和作品 j。假设有 n 名用户同时对 i 和 j 进行了评分,其中 x 人对 i 的评分高于 j,y 人对 i 的评分低于 j,则:
(1) 如果 n≥10,则
(1.1) 定义 i 对 j 的“合计积分(Total Score)”为 (x-y) 分;
(1.2) 定义 i 对 j 的“比例积分(Percentage Score)”为 (x-y)/n 分,这个分数接近于科学排名中的“倾向性概率”;
(1.3) 定义 i 对 j 的“简易积分(Simple Score)”为 sgn(x-y) 分,其中 sgn 表示符号函数(即正数取值为 1,负数取值为 -1,0 取值为 0)。
(2) 如果 n<10,则三种积分一律记为 0 分。
2. 针对每一个作品 i,分别计算 i 相对于考虑范围内的所有其他作品 j (j≠i) 的积分,然后取对其他所有作品的平均分作为 i 的最终得分。
注:本贴的算法里仅仅考虑同一用户对不同作品的相对打分高低,而不考虑分数的绝对差。这件事本质上涉及到经济学上的序数效用与基数效用的区别问题;现代微观经济学的基础通常认为是建立在序数效用理论上的。基于重叠评分群体的的排名方法本身就是经济学偏好理论某种程度上的再现,因此应以仅考虑相对打分高低为宜。
这样一来,就可以得到每部作品的三种最终分值。然后分别以这三种分值对作品排名。
这三种分值之中,合计积分偏向作品受众规模,得分高的可理解为大众神作,亦即,总计最多人认为该作品比其他作品更优。
比例积分高的可以理解为“小众”神作,亦即,“要么不看,只要是看了的人都说好”。这里的“小众”加引号是因为这个得分也不是完全偏向小众作品,因为真正的小众作品与其他作品的受众重合度往往较低,容易产生较多零分,使得真正的小众作品排名仍然会趋向于中间。
最后一种简易积分高的表示“比大多数作品都好一点”。简易积分忽视了作品之间的绝对的优劣差异,因此简易积分高的作品或许可以理解为是“以大众口味而言相对来说最不坏的作品”,或者某种程度上说是“最能够被所有人接受的作品”吧,可能对回答“我应该用什么作品拉人入宅”这一经典问题有帮助。
依据现有的数据,我保留了“看过”和“抛弃”的评分,(剔除了“搁置”和“在看”的评分),并剔除掉与其他所有作品的共同评分人数都不超过十人的孤立作品,目前得到了截至 2021 年 2 月时共计 9 346 部动画的三种评分,楼下回帖中贴出了一部分靠前和靠后的作品。全部结果见:
链接: https://pan.baidu.com/s/11j6Znfpbg2upRswBKEx-Eg 提取码: hpxp
当然,这一算法最大的问题是极为耗费资源,原则上对作品进行一次排名就必须更新一遍全站的用户评分数据,因此可能仅适合以季度左右的低频率来更新排名。不过个人还是许愿@Oalvay 或其他有力人士能够拔冗更新更多数据,尤其是游戏区的数据。这是因为游戏区向来因“3A 游戏与电子小说混合排名”之类的理由而饱受诟病,相信作品评分群体的隔离程度会远大于动画区。因此在这一算法下游戏区排名将会呈现何种结果,值得期待。
那么,怎样来解决这一矛盾呢?在此,我们有一个原则,即“判断作品甲优于作品乙的依据,应当是同时给作品甲和乙评分的群体认为作品甲优于作品乙。”亦即,依据作品间重叠评分者的判断来判断作品之间的相对优劣。著名的“科学排名”的确就是根据这一原则来的,但似乎具体的排序方法又不必要地复杂了,以至于失之直观。作为更简单易懂的科学排名的一项测试,楼主利用了@Oalvay 提供的2021年2月份记录的Bangumi 全用户动画评分数据计算出了一个排行榜。同时鸣谢@Trim21 提供的 Bangumi Archive 数据,用于将作品 ID 与作品标题进行匹配。当然,单纯的两两比较会导致循环偏好的现象(即甲优于乙,乙优于丙,丙又优于甲等)的产生,因此有必要以统一的标准将上述两两比较的“偏序”转化为可以给所有作品一个单一排名的“全序”。具体算法如下。
1. 考虑作品 i 和作品 j。假设有 n 名用户同时对 i 和 j 进行了评分,其中 x 人对 i 的评分高于 j,y 人对 i 的评分低于 j,则:
(1) 如果 n≥10,则
(1.1) 定义 i 对 j 的“合计积分(Total Score)”为 (x-y) 分;
(1.2) 定义 i 对 j 的“比例积分(Percentage Score)”为 (x-y)/n 分,这个分数接近于科学排名中的“倾向性概率”;
(1.3) 定义 i 对 j 的“简易积分(Simple Score)”为 sgn(x-y) 分,其中 sgn 表示符号函数(即正数取值为 1,负数取值为 -1,0 取值为 0)。
(2) 如果 n<10,则三种积分一律记为 0 分。
2. 针对每一个作品 i,分别计算 i 相对于考虑范围内的所有其他作品 j (j≠i) 的积分,然后取对其他所有作品的平均分作为 i 的最终得分。
注:本贴的算法里仅仅考虑同一用户对不同作品的相对打分高低,而不考虑分数的绝对差。这件事本质上涉及到经济学上的序数效用与基数效用的区别问题;现代微观经济学的基础通常认为是建立在序数效用理论上的。基于重叠评分群体的的排名方法本身就是经济学偏好理论某种程度上的再现,因此应以仅考虑相对打分高低为宜。
这样一来,就可以得到每部作品的三种最终分值。然后分别以这三种分值对作品排名。
这三种分值之中,合计积分偏向作品受众规模,得分高的可理解为大众神作,亦即,总计最多人认为该作品比其他作品更优。
比例积分高的可以理解为“小众”神作,亦即,“要么不看,只要是看了的人都说好”。这里的“小众”加引号是因为这个得分也不是完全偏向小众作品,因为真正的小众作品与其他作品的受众重合度往往较低,容易产生较多零分,使得真正的小众作品排名仍然会趋向于中间。
最后一种简易积分高的表示“比大多数作品都好一点”。简易积分忽视了作品之间的绝对的优劣差异,因此简易积分高的作品或许可以理解为是“以大众口味而言相对来说最不坏的作品”,或者某种程度上说是“最能够被所有人接受的作品”吧,可能对回答“我应该用什么作品拉人入宅”这一经典问题有帮助。
依据现有的数据,我保留了“看过”和“抛弃”的评分,(剔除了“搁置”和“在看”的评分),并剔除掉与其他所有作品的共同评分人数都不超过十人的孤立作品,目前得到了截至 2021 年 2 月时共计 9 346 部动画的三种评分,楼下回帖中贴出了一部分靠前和靠后的作品。全部结果见:
链接: https://pan.baidu.com/s/11j6Znfpbg2upRswBKEx-Eg 提取码: hpxp
当然,这一算法最大的问题是极为耗费资源,原则上对作品进行一次排名就必须更新一遍全站的用户评分数据,因此可能仅适合以季度左右的低频率来更新排名。不过个人还是许愿@Oalvay 或其他有力人士能够拔冗更新更多数据,尤其是游戏区的数据。这是因为游戏区向来因“3A 游戏与电子小说混合排名”之类的理由而饱受诟病,相信作品评分群体的隔离程度会远大于动画区。因此在这一算法下游戏区排名将会呈现何种结果,值得期待。
很多n<10说明对于这个算法而言,bgm的评分基数还是有点小。或者说是动画太多了
当然之所以跑了这么久是因为我自己傻逼,光想着尽可能做inne join,规避full join,结果居然把合并数据的步骤丢到O(n^2)部分里去了
不太适合我这种二次元首陀罗