我希望能够将新的“标记行”引入到一个向用户“随机”显示的数据库中(这些标记线显示为动画文本的介绍。)
根据这些标语所带来的销售量,我希望那些好的标语能慢慢地登上榜首,但其他的还是少一些。
我可以很容易地想出一个基本的算法,但是我想要一个更“统计精确”的算法。
我真的不知道从哪里开始我已经有一段时间没有做过比基本统计更重要的事情了。我的模型需要对公差敏感,但显然它不需要有博士学位。
编辑:我目前正在跟踪一个“转化率”,即每个订单的点击率这个值可能最好作为一个累积的“所有时间”转换率来计算,并输入到算法中。
最佳答案
考虑到你的问题,我会修改一下要求-
1)最受欢迎的一个应该经常展示。
2)标语应该是“年龄”,所以过去获得过很多选票(购买)但最近没有的标语应该显示得更少
3)全新的标语应在开始的几天内更频繁地展示。
如果你同意这些,那么一个算法可能是:
START:
x = random(1, 3);
if x = 3 goto NEW else goto NORMAL
NEW:
TagVec = Taglines.filterYounger(5 days); // I'm taking a LOT of liberties with the pseudo code,,,
x = random(1, TagVec.Length);
return tagVec[x-1]; // 0 indexed vectors even in made up language,
NORMAL:
// Similar to EBGREEN above
sum = 0;
ForEach(TagLine in TagLines) {
sum += TagLine.noOfPurhcases;
}
x = random(1, sum);
ForEach(TagLine in TagLines) {
x -= TagLine.noOfPurchase;
if ( x > 0) return TagLine; // Find the TagLine that represent our random number
}
现在,作为一个设置,我会给每一个新的标语10购买,以避免得到真正的大倾斜为一个单一的购买。
我会把一周以上的购买计算为每周购买0.8次。所以1周大的给0.8分,2周大的给0.8*0.8=0,64分等等……
你必须反复使用初始purhcases参数(在我的例子中是10)和老化速度(这里是1周)以及老化因子(这里是0.8),才能找到适合你的东西。