You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带低值惩罚的购买分布均匀度计算指标技术问询

针对购买日期分布均匀度+购买天数惩罚的指标设计

看起来你需要的是一个双维度复合指标——既要量化购买日期的分散均匀性,又要对购买天数不足的情况进行惩罚。之前尝试的Wasserstein距离和熵只解决了第一个问题,完全没考虑第二个维度,所以才会出现你说的“对分散和集中的3个1得分相同”的问题。下面给你几个针对性的方案,分二进制数组(有无购买)和每日销量数组两种场景:

一、针对二进制购买数组的方案

核心思路:均匀度得分 × 购买天数占比,通过乘法把两个维度的需求绑定——均匀度高但购买天数少的,得分会被拉低;购买天数多但集中的,得分也不会高。

1. 基于分布方差的复合指标

计算步骤:

  • 第一步:提取所有购买日的索引(比如数组[0,1,0,0,0,0,1,1]的购买日索引是1,6,7)
  • 第二步:计算购买日索引的方差——方差越大,说明购买日分布越分散(均匀度越高)
  • 第三步:将方差归一化到[0,1]区间:用实际方差除以该k个购买日在n天内的最大可能方差(即购买日尽可能分散时的方差,比如n=8、k=3时,最大方差对应索引0,3,7的情况)
  • 第四步:乘以购买天数占比(k/n,k是购买天数,n是总天数),得到最终得分

示例对比:

  • 数组A(分散3个1):方差≈6.88,归一化均匀度≈0.837,购买占比=3/8=0.375 → 最终得分≈0.314
  • 数组B(集中3个1):方差≈0.666,归一化均匀度≈0.081,购买占比=0.375 → 最终得分≈0.03
  • 数组C(分散2个1):方差=12.25,归一化均匀度=1,购买占比=2/8=0.25 → 最终得分=0.25(比数组A低,实现了对购买天数少的惩罚)

2. 基于熵的复合指标

如果你更习惯用熵,可以调整为:

  • 计算购买日分布的熵(比如将时间轴划分为等长bin,统计每个bin内的购买次数占比,再计算熵)
  • 将熵归一化到[0,1](除以该k个购买日能达到的最大熵,即完全均匀分布时的熵)
  • 同样乘以k/n得到最终得分

可调优化:惩罚权重

如果想更侧重惩罚购买天数少的情况,可以把购买占比改成**(k/n)^α**,α是大于1的参数(比如α=2),α越大,购买天数少的得分被压得越低。

二、针对每日销量数组的方案

如果用实际销量代替二进制标记,思路类似,只是把“购买日分布”换成“销量分布”:

方案:Wasserstein距离+非零销量占比

计算步骤:

  • 第一步:计算理想均匀销量分布:总销量S除以总天数n,得到每天的理想销量S/n
  • 第二步:计算实际销量数组与理想数组的Wasserstein距离(距离越小,销量分布越均匀)
  • 第三步:将距离归一化:用实际距离除以最大可能距离(即所有销量集中在一天时的距离,等于S*(n-1)/n)
  • 第四步:用1 - 归一化距离得到均匀度得分(值越接近1,分布越均匀)
  • 第五步:乘以非零销量天数占比(非零天数/n),得到最终得分

这个方案既考虑了销量在时间上的均匀分配,又惩罚了大量零销量的情况——比如两个总销量相同的商品,一个每天少量销售(非零天数多),另一个集中几天销售(非零天数少),前者得分会远高于后者。

为什么之前的方法不行?

Wasserstein距离和熵只衡量了“分布的均匀性”,完全没有引入“购买天数/非零天数”的权重。比如你说的两个二进制数组,它们和全1数组的Wasserstein距离相同,是因为两者的1的数量相同,距离只衡量了“移动1到全1所需的代价”,但没考虑1的总数本身的多少。而复合指标通过乘以购买占比,把“数量”和“分布”两个维度绑定,正好解决了你的问题。

内容的提问来源于stack exchange,提问作者blastoise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:17:52