当前位置: 首页 > news >正文

多维度数据统一线性处理的常见方案

先说业务背景吧
  • 这是一个类似于「番茄小说」的项目,要做用户的首页推荐列表
  • 数据源是小说的SubscribeNum(总订阅量)、SearchNum(总搜索量)、WeekSubNum(最近一周订阅量)、MonthSubNum(最近一个月订阅量)
  • 如何设计计算小说的热度分数才能使这四个维度精准地表达自身影响力,而不被绝对量级绑架?

再来进行具体分析

可以肯定的是,直接将四个字段值相加作为热度分数是不行的。

这里详细分析一下原因,知其然知其所以然嘛😁:

直接相加会出现以下问题:

  1. 1. 四个字段的“单位”虽然都是“次数”,但它们的统计口径不同:
    • SubscribeNum、SearchNum:全生命周期累积量,随时间单调递增,量纲是“总量”。
    • WeekSubNum、MonthSubNum:最近 7 天 / 30 天的增量,量纲是“速率”。
    • 直接相加相当于把“总路程”与“瞬时速度”混为一谈,物理意义不一致。
  2. 2. 数值范围差异巨大(尺度问题):
      设某头部小说:SubscribeNum = 10 000 000SearchNum  = 5 000 000WeekSubNum   = 10 000MonthSubNum  = 40 000直接相加:score = 10 000 000 + 5 000 000 + 10 000 + 40 000 = 15 050 000

    其中 WeekSubNum 仅占 0.066%,几乎被淹没;任何小说的分数都由 SubscribeNum 主导(且与订阅榜冲突),WeekSubNum 与 MonthSubNum 对排序结果的影响趋近于 0。

  3. 3. 分布长尾导致权重失衡

    累积量呈幂律分布:

    • 90% 小说的 SubscribeNum < 100 000
    • 1% 头部 > 10 000 000

    直接相加后,分数分布同样呈幂律:

    • 头部小说:15 000 000 ± 1%
    • 腰部小说:100 000 ± 1% 相对差距被放大,排序结果几乎等价于“按 SubscribeNum 排序”,失去了多维度融合的意义。

一句话总结:直接相加会把不同尺度、不同分布、不同含义的数值强行叠加,结果被最大量级的字段垄断,其他维度失去话语权,从而无法反映“综合热度”。

这类问题属于 “特征尺度统一(Feature Scaling / Normalization)”,目标是把不同量纲、不同分布、不同取值范围的原始指标转换成 “可比、可加、权重可控” 的数值表示,使每个维度都能精准地表达自身影响力,而不被绝对量级绑架。

如何解决这类 特征尺度统一问题呢?

业界已经有非常成熟的方案了,常见方案、优缺点与适用场景:

(了解即可,表格是 AI 给的)

方案数学公式优点缺点适用场景
Min-Max 归一化(x−min)/(max−min)简单、可解释、保序对异常值敏感、需定期更新 min/max分布有界、无极端离群
Z-Score 标准化(x−μ)/σ对异常值鲁棒、无量纲结果可负,不易解释近似正态或需机器学习
Log / Log1p 变换log(x)压缩长尾、保序不能处理零值、需平移幂律/长尾分布
RobustScaler(x−median)/IQR对极端异常值极鲁棒不保证固定区间离群点多、数据脏
Box-Cox / Yeo-Johnson幂变换族可矫正偏态、近似正态需拟合 λ,复杂统计建模、ML 特征
Ranking / 分位数桶先排序再分桶完全消除量纲、保序信息损失、不可微排序类业务、解释性要求低
时间衰减权重x·e^(−λΔt)直接建模时效性需调 λ强时间敏感场景
向量归一化x/‖x‖保留方向、用于相似度结果非线性、难解释文本、Embedding

这里重点结合 Log1p 变换+Min-Max 归一化 两种方案解决当下问题(其他方案不涉及哟)

分析解决业务需求

先来看看我们的业务特点:

  1. 1. 累积量(SubscribeNum、SearchNum)呈幂律长尾;
  2. 2. 时效量(WeekSubNum、MonthSubNum)相对平稳;
  3. 3. 需要可解释、可实时更新、可人工调权。

因此采用 “Log1p + Min-Max 归一化 + 加权融合”。

  1. 1. SubscribeNum、SearchNum:
  • 处理方式:log1p(x) → Min-Max → [0,1]
  • 理由:先压缩长尾,再线性映射,兼顾可解释与抗异常
  1. 2. WeekSubNum、MonthSubNum:
  • 处理方式:Min-Max → [0,1]
  • 理由:本身范围可控,无需对数
  1. 3. 融合:
  • 处理方式:score = Σ w_i·norm_i(就是求 4 个字段 归一化后的值与权重的乘积 之和)
  • 理由:权重可人工或 A/B 调参,结果直观

因为这四个字段是已经落地到数据库中的,不需要实时计算,所以实现方法很简单,直接定时任务查询每本小说的字段信息然后计算热度值即可。

完结🎉

http://www.xdnf.cn/news/1479781.html

相关文章:

  • 鸿蒙libxm2交叉编译
  • (2)桌面云、并行计算、分布式、网格计算
  • LeetCode5最长回文子串
  • 基于Spark的中文文本情感分析系统研究
  • 空间配置器
  • 【STM32HAL-----NRF24L01】
  • leetcode LCR 159 库存管理III
  • Qt网络通信服务端与客户端学习
  • 第5章递归:分治法
  • Qt文字滚动效果学习
  • MySQL 高可用方案之 MHA 架构搭建与实践
  • 常用配置文件
  • 去中心化投票系统开发教程 第三章:智能合约设计与开发
  • [网络入侵AI检测] docs | 任务二分类与多分类
  • 算法题-链表03
  • react native 出现 FATAL EXCEPTION: OkHttp Dispatcher
  • LeetCode 2841.几乎唯一子数组的最大和
  • AI智能体架构全流程全解析
  • [光学原理与应用-432]:非线性光学 - 既然光也是电磁波,为什么不能直接通过电生成特定频率的光波?
  • 打造一款高稳定、低延迟、跨平台RTSP播放器的技术实践
  • 基于FPGA的电梯控制系统设计(论文+源码)
  • 动态内存分配
  • DeepSeek辅助在64位Linux中编译运行32位的asm-xml-1.4程序
  • Day22_【机器学习—集成学习(1)—基本思想、分类】
  • leetcode 215 数组中的第K个最大元素
  • Jupyter Notebook与cpolar:构建跨地域数据科学协作平台
  • 正态分布 - 计算 Z-Score 的 无偏估计
  • 计算机主板上的那颗纽扣电池的作用是什么?
  • OSG中TerrainManipulator(地形适配操纵器)
  • STM32CubeProgrammer软件安装