首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法应对电商的各种满减活动

本文会先通过两个非常经典的动态规划问题模型,展示动态规划存在的意义及动态规划解法是如何演化的,学会后即可举一反三。 《动态规划理论》,我会总结动态规划适合解决的问题的特征,以及动态规划解题思路。...除此之外,我还会将贪心、分治、回溯、动态规划这四种算法思想放在一起,对比分析它们各自的特点以及适用的场景 《动态规划实战》,我会教你应用第二节讲的动态规划理论知识,实战解决三个非常经典的动态规划问题,加深你对理论的理解...,states[1][2]=true,states[1][4]=true 考察完所有物品后,states状态数组计算完毕 0表false,1表true,只需在最后一层,找一个值为true的最接近w(这里是...动态规划这个名字的由来:把问题分解为多个阶段,每个阶段对应一个决策。记录每个阶段可达的状态集合(去掉重复的),然后通过当前阶段的状态集合,推导下一个阶段的状态集合,动态地往前推进。...现在要找的是≥200(满减条件)的值中最小的,所以不能设置为200+1。 若要购买的物品的总价格超过200太多,如1000,那这个羊毛“薅”得就没有太大意义了,可限定x值为1001。

62130

Youtube的value-based强化学习推荐系统

训练阶段,训练集可以看做是一个个的元祖,而上式的是根据当前的Q函数,输入状态以及所有待选动作,最后选出来的Q值最大的动作。...问题分析 在动作空间中,包含k个物品的推荐列表就有种可能,这个运算符在youtube这种k值一般在几十(刚才去数了一下,首页50+)的网站就很离谱,更不要提前面的了。...如何找到Q最大的物品组合,这是一个组合优化问题。如果不另加结构性的假设或近似,这个问题会难以求解,无法满足线上服务时延要求。...看了这个推导,给人的感觉就是作者在思考问题并写这些11式的公式时发现时间复杂度太大,然后顺其自然的想到了这两条假设。...最终这样一个优化目标可以被看做一个分数线性规划问题,并且可以在多项式时间内解决: ? 这里代表用户对一个物品的未正则化的点击概率。

79540
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    01背包问题详解

    # 01背包问题的另一种风格描述 假设你是一个小偷,背着一个可装下4磅东西的背包,你可以偷窃的物品如下: 为了让偷窃的商品价值最高,你该选择哪些商品?...本文恰是解决了我这方面长久以来的困惑!) 背包问题的网格如下: 网格的各行表示商品,各列代表不同容量(1~4磅)的背包。所有这些列你都需要,因为它们将帮助你计算子背包的价值。 网格最初是空的。...因此这个单元格包含吉他,价值为1500美元。 下面来填充网格。 与这个单元格一样,每个单元格都将包含当前可装入背包的所有商品。 来看下一个单元格。这个单元格表示背包容量为2磅,完全能够装下吉他!...你可能认为,计算最后一个单元格的价值时,我使用了不同的公式。那是因为填充之前的单元格时,我故意避开了一些复杂的因素。其实,计算每个单元格的价值时,使用的公式都相同。这个公式如下。...在下一个单元格中,你可装入iPhone和吉他。 对于第三个单元格,也没有比装入iPhone和吉他更好的选择了。 对于最后一个单元格,情况比较有趣。

    43430

    使用 Python 来解决慈善机构的业务问题

    在我这一系列的 第一篇文章 里,我描述了这样子的一个问题,如何将一大批的救助物资分为具有相同价值的物品,并将其分发给社区中的困难住户。...我也曾写过用不同的编程语言写一些小程序来解决这样子的小问题以及比较这些程序时如何工作的。 在第一篇文章中,我是使用了 Groovy 语言来解决问题的。...因此,使用 Python 来创造一个相同的解决方案应该会很有趣且更有意义。 使用 Python 的解决方案 使用 Java 时,我会声明一个工具类来保存元组数据(新的记录功能将会很好地用于这个需求)。...你需要在单元列表中随机选择一个位置,然后从该位置开始,遍历列表,直到找到一个价格允许的且包含它的单元,或者直到你用完列表为止。 当只剩下几件物品时,你需要将它们扔到最后一个篮子里。...另一个值得一提的问题是:这不是一种特别有效的方法。 从列表中删除元素、极其多的重复表达式还有一些其它的问题使得这不太适合解决这种大数据重新分配问题。 尽管如此,它仍然在我的老机器上运行。

    87330

    ACM一年记,总结报告(希望自己可以走得很远)

    算法(algorithm):在算法头文件下包括了好多函数,下面列出常用的。 count:把标志范围内的元素与输入值比较,返回相等元素个数。 find:对指定范围内的元素与输入值进行比较。...当匹配时,结束搜索,返回该元素的一个迭代器。...upper_bound: 返回一个迭代器,指向在有序序列范围内插入value而不破坏容器顺序的最后一个位置,该位置标志一个大于value的值,即返回第一个大于value的位置 unique(可用于离散化...(2)含有最优子结构: 如果问题的一个最优解包含了其子问题的最优解,则称该问题具有最优子结构。 适用题型 1.活动选择问题。...省赛最后拿牌我是真的没想到,比赛过程一波又三折,出第一个题的时候一个半小时了,貌似wa了5发,再后来的四道题wa了两发。

    52620

    什么是算法?从枚举到贪心再到启发式(上)

    因此我们接下来的展开都需要围绕一个问题展开,那么我就用最简单的0-1背包问题( 1-0 knapsack problem)来给大家讲讲吧。 你手头上有个背包,背包的容量有限,只能装 kg的物品。...作为一名优秀的大学生 这个问题不会有人看不懂的吧 不会的吧 ★好了,现在我们遇到了一个问题,得想想办法来解决它! 在此之前我们再讲一点东西,观察上面的问题,能发现什么特点呢?...当然 Benchmark概念的引出 只是为了方便我们对算法的效果进行一个对比 比如说小明同学选了第1个物品和第2个物品,获得的价值为1+4=5,那么小明就可以用他的解决方案和别人的benchmark进行对比...同时,这些算例也提供了一个benchmark⬇️ ↑ 从左到右依次为:算例ID,物品个数,选择物品的总价值,选择决策(1选择该物品,0不选)。...N个物品我们就可以用一个N维的数组x进行表示,当: 此外 我们还得用个变量表示目标值 由于约束的存在 我们还得标识该解是否满足所有约束了……等等 那么就把这堆东西集成到一个class里面吧!

    58930

    【论文】eALS

    解决了两个问题: 缺少负面反馈数据。大部分MF是基于正面反馈建模的,用户交互过才会有数据记录。然而,用户没有交互过的数据,可能是他还没看过该数据,也可能他不喜欢,看到了也没查阅该数据。...image.png 4. eALS 4.1 缺失值处理 提出了以下公式: ? ci表示没用户点击的item i是true negative的概率。ci如何表示,是一个问题。...4.1.1 流行程度相关的权重策略 上文的ci可以表达为以下公式,该公式考虑了被观测item的流行程度: ? fi的表达如下: ?...它对于每个缺失位置都进行了填充,只是其权重不是固定值,而是一个与对应item的流行度相关的值。物品越流行,则其不被某用户点击时,施加的"惩罚"越大。...我觉得还是没把"未被观测"和"未被点击"的人所区分开。一个很流行的物品没有被某个user购买,没准是因为这个user真的没见过这个物品,但公式会因为物品很流行,强行认为user不喜欢该物品。

    98060

    推荐系统召回四模型之全能的FM模型

    如果你对算法敏感的话,会发现这里有个潜在的问题,如果召回路数太多,对应的超参就多,这些超参组合空间很大,如何设定合理的各路召回数量是个问题。...虽然这个模型看上去貌似解决了二阶特征组合问题了,但是它有个潜在的问题:它对组合特征建模,泛化能力比较弱,尤其是在大规模稀疏特征存在的场景下,这个毛病尤其突出,比如CTR预估和推荐排序,这些场景的最大特点就是特征的大规模稀疏...参考这个模版,算法选择版应该是这样的:“一个算法工程师一直犹豫不决该选哪个模型去上线,他有三个优秀算法可选,一个算法理论优雅;一个算法效果好;另外一个算法很时髦,实在太难做决定…..三天后当我再遇见他的时候...但是其实多路召回分数不可比会直接引发一个问题:对于每一路召回,我们应该返回多少个Item是合适的呢?如果在多路召回模式下,这个问题就很难解决。...我们以目前不同类型推荐系统中共性的一些召回策略来说明这个问题,以信息流推荐为例子,传统的多路召回阶段通常包含以下策略:协同过滤,兴趣分类,兴趣标签,兴趣Topic,兴趣实体,热门物品,相同地域等。

    2.5K70

    推荐系统--完整的架构设计和算法(协同过滤、隐语义)

    物品的热门程度:如果用户对一个很热门的物品产生了行为,往往不能代表用户的个性,因为用户可能是在跟风,可能对该物品并没有太大兴趣,特别是在用户对一个热门物品产生了偶尔几次不重要的行为(比如浏览行为)时,就更说明用户对这个物品可能没有什么兴趣...如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度? 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?...按照这样的输入和输出就可以训练出排序算法了。详细模型见:2. 逻辑回归 GBDT 使用梯度提升决策树(GBDT) 的方案也可以解决这个排序的问题,只是模型与 LR 不一样。...8.2 物品冷启动 物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题。解决方法参考以下: 利用物品的内容、分类信息。 利用专家标注的数据。...8.3 系统冷启动 系统冷启动主要解决如何在一个新开发的网站上(还没有用户,也没有用户行为,只有一些物品的信息)设计个性推荐系统,从而在产品刚上线时就让用户体验到个性 推荐服务这一问题。

    1.6K50

    WWW2023 | 如何设置温度系数?用于推荐的自适应调节表征模长的方法

    同时针对其存在的温度系数敏感的问题,本文提出一种自适应、个性化策略以解决推荐系统中的实际问题。...然而与此同时,但我们也揭示了在推荐中应用归一化时的一个严重缺陷——模型性能对温度系数的选取极其敏感。 为了充分发挥归一化的优点,同时规避其局限性,本文研究了如何自适应地设置适当的。...在这里,我们遵循[1],并根据物品受欢迎程度将物品分为十组。组ID越大,表示该组包含的热门物品越多。(2)我们还报告了不同流行度物品组的性能(图右上)。...四、方法 为了解决这个问题,在本节中,我们提出了Adap-,它能够自适应地自动调节推荐系统中的表征模长。...4.1 Adap-:实现自适应温度 根据引理,我们深入研究了使梯度值最大化的温度系数计算方式: 直接优化上式子存在复杂的计算(用户-物品相互影响),因此我们采用一个估计的方式进行近似计算。

    53620

    ACM之贪心算法

    一般对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可以做出判断。...对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。...实际上,这个问题很简单,就是按照单价从大到小来装就行了,对吧? 以上本质上借助的就是贪心算法。结合这个例子,我总结一下贪心算法解决问题的步骤,我们一起来看看。...第二步,我们尝试看下这个问题是否可以用贪心算法解决:每次选择当前情况下,在对限制值同等贡献量的情况下,对期望值贡献最大的数据。...大部分情况下,举几个例子验证一下就可以了。严格地证明贪心算法的正确性,是非常复杂的,需要涉及比较多的数学推理。 实际上,用贪心算法解决问题的思路,并不总能给出最优解。 我来举一个例子。

    76220

    背包九讲——背包问题求具体方案

    背包问题涉及到了三种基础的背包:01背包、多重背包、完全背包,我们要根据在这几个背包的基础上去计算在获得最大价值的情况下,有几种方案,并输出具体的方案,是求背包问题方案数的进阶版,这个需要打印具体方案了...输出格式 输出一行,包含若干个用空格隔开的整数,表示最优解中所选物品的编号序列,且该编号序列的字典序最小。 物品编号范围是 1…N。...i+1转移过来的,因为我们定义从第i个物品到最后一个物品,第i+1个物品到最后一个之间的数量是不是比第i个物品到最后一个物品少。...因为我要在所有f[i][j]当中选择一个最大值,所以前面我管不管的先初始化为不选,往后如果背包容量大于体积,那我再看看是选了这个物品总价值是否增大,如果增大就更新,不增大就保持原来。...最后那一段就是查找最优路径了。首先我先初始为背包容量,面对第i个物品时,若背包剩余容量大于体积并且从上一个状态转移过来,选了第i个物品,那它一定是最优解,并且是字典序是最小的,因为我是正序遍历的。

    11110

    推荐广告系统中的特征

    分桶(bucketized_column):我们经常会用分桶的方式来解决特征值分布极不均匀的问题。...归一化和标准化只能解决分布方差大的问题,不能解决偏态严重的问题截断的方法损失了大量信息,损失了这部分特殊用户的区分度为了解决这些问题,我们针对部分需要进行预处理的特征,采用如下公式进行转换:图片这样做的目的是尽可能不损失区分度的情况下...经过多次离线实验,采用该变换公式解决收敛性和稳定性问题的同时,并未导致 AUC 降低,真是一个好办法!...当 CTR 作为特征使用时,表示这个商品完全没有点击,不太符合日常推断,通常是赋一个大于 0 的初始值。以上两个问题可以使用平滑技术来解决。...如果某商品的点击量和曝光量都是 0,那么该商品的 CTR 就是这个经验初始值;如果商品 A 和商品 B 的曝光量差别很大,那么可以通过这个经验初始值来修正。贝叶斯平滑就是确定这个经验值的过程。

    2.4K40

    推荐算法三视角: 矩阵, 图, 时间线

    到这里,我们就建立了基本的矩阵视角,推荐问题转化成了如何补上那些空格子。 ? 用户对物品的评分等于相似用户对该物品评分的加权平均值,这就是user-base的协同过滤了。...行(后面的不影响计算了),每一列代表一个物品向量,用户和物品向量的内积也就是矩阵相乘后对应矩阵的值,也就是空缺处的评分,将向量索引起来就可以推荐了。 ?...中该物品向量内积的和,这就是FISM算法。相比SLIM的稀疏处理,变为分解降维。最后再附上一张图,说明MF,SLIM和FISM之间的关系。 ?...GraphSAGE通过RandomWalk采样,解决了这个问题,用在推荐领域就是PinSage算法。从某顶点出发,深度优先走k步,得到多个子图,组成一个batch进行训练,。...用户和物品都是一个高维度空间里的点,空间里点之间的距离越近,代表着物品和物品越相关,用户对物品越偏好,推荐问题转化成了如何将用户和物品嵌入到高维空间里。典型的主题如Metric Learning。

    72520

    手把手教你从零起步构建自己的图像搜索模型

    物品表征是另一个解决办法,那就是基于内容的推荐系统,这种推荐系统并不会受到上面提到的未被浏览的新物品问题的影响。...我们同样会在模型迭代的过程中碰到一个大问题就是模型的输出包含太多的类,导致模型的正确优化极端困难。这的确是一个很快的方案,但是在可扩展性上有限制,不能扩展到比较大的数据集上。...最后,如果我们设法为我们的图像和单词找到常见的嵌入,我们可以使用它们来进行文本到图像的搜索! 由于其简单性和高效性,第三种方法将成为本文的重点。 我们该怎样实现这个过程?...我们基于 GloVe 模型加载了一组预先训练的矢量,这些矢量是通过爬取维基百科的所有内容并学习该数据集中单词之间的语义关系而获得的。 就像之前一样,我们将创建一个索引,这次包含所有 GloVe 向量。...最后的结果(tuesday)也表明这个模型远非完美,但它会让我们有一个好的开始。现在,让我们尝试在我们的模型中包含单词和图像。

    66430

    高频手撕算法合集来了!

    例题1 用数组判断链表中是否有环 在上面我们介绍了最后一个节点指向空,可是你有没有想过如果链表的最后一个节点不是空地址而是指向链表中的一个节点,这不就是环了?...假设nums[mid]这个值已经是最后一个元素了,那么它肯定是要找到最后一个值。...那么容斥原理就是解决这个问题。 容斥原理是什么? 先不考虑重叠的情况,先将所有对象数目计算出来,然后将重复计算的排斥出去,是的,计算的结果不仅不遗漏也不重复。...我们根据三步走的方式来阐释解决兔子的这个问题。 f(n)表示n个月兔子的数量。 递推公式(第一个月合第二个月兔子的数量为1,到了第三个月即等于前面两个月之和)。...我的问题是,如何分配糖果,能尽可能满足最多数量的孩子? 对于一个孩子来说,如果小的糖果可以满足,那么就没必要用更大的糖果。

    75720

    推荐系统技术演进趋势:召回篇

    解决这个问题的方法包括比如训练数据对头部领域的降采样,减少某些领域主导,以及在模型角度鼓励多样性等不同的方法。...,现在我们需要一个函数Fun,这个函数以这些物品为输入,需要通过一定的方法把这些进行糅合到一个embedding里,而这个糅合好的embedding,就代表了用户兴趣。...在召回阶段,我们可以用用户兴趣Embedding采取向量召回,而在排序阶段,这个embedding则可以作为用户侧的特征。 所以,核心在于:这个物品聚合函数Fun如何定义的问题。...说到这里,有同学会问了:把用户行为序列拆分到不同的embedding里,有这个必要吗?反正不论怎样,即使是一个embedding,信息都已经包含到里面了,并未有什么信息损失问题呀。...另外,知识图谱还有一个普适性的问题,完全通用的知识图谱在特定场景下是否好用,对此我是有疑问的,而专业性的知识图谱,还有一个如何构建以及构建成本问题;而且很多时候,所谓的知识传播,是可以通过添加属性特征来解决的

    1.1K30

    【DP解密多重背包问题】:优化策略与实现

    在解决这个问题时,通常使用动态规划或贪心算法,具体取决于问题的约束条件。 在日常生活中,我们常常面临选择的困扰,如何在有限的资源下最大化收益?多重背包问题正是这种选择的数学模型。...举个例子: 物品标号 1 2 3 4 单个物品容量 1 2 3 4 物品个数 3 1 3 2 单个物品价值 2 4 4 5 以上面这个为例子,假设背包的容量是5,可以选择的物品个数是4,我们该如何选择呢...是不是最后还剩下一一个,这个不能划分为2的幂次方的我们单独讨论即可,我们将每个物品分好组之后然后进行一次01背包问题即可。 在处理多重背包问题时,我们可以使用二进制拆分的方法来简化问题。...这个策略的有效性源于数学上对整数的分解性质,确保了每个可能的选择都能够被覆盖。...多重背包问题不仅在计算机科学中有着重要的应用,还在现实生活中为资源分配、库存管理等问题提供了有效的解决方案。掌握这一算法思路,可以为解决更复杂的组合优化问题奠定基础。

    17810

    我用Spark实现了电影推荐算法

    前言很久之前,就有人问我如何做一个基于大数据技术的xx推荐系统。当时对于这个问题,着实难倒我了,因为当时只是知道一个协同过滤,其他的也没有过于深度研究。最近,又有人私信问了我这个问题。...最后我选择了协同过滤算法,原因就是题目要求基于大数据技术,而Spark中恰好集成了协同过滤,同时Spark能与其他的大数据技术更好地联动,所以最后就是就基于Spark的协同过滤来实现一个推荐系统。...用户-物品矩阵的稀疏性是推荐系统中的一个常见问题,主要指的是在这个矩阵中,大多数用户和物品之间没有交互(如评分、购买等),导致矩阵中大多数元素为空或缺失,从而缺乏足够的数据来捕捉用户的偏好。...电影喜好推荐那么,如何使用Spark的ALS实现推荐算法呢?Spark官网文档中给出了一个电影推荐的代码,我们借着这个样例,就可以反向学习。...最后调用fit开始训练模型。3. 模型预测如何判断我的推荐模型是否过拟合,可以分别计算模型在训练集和验证集上的RMSE。正常情况下,如果训练集RMSE和验证集RMSE相近,说明模型具有较好的泛化能力。

    64240

    看看这些《经济学人》图表设计师也会犯的的设计错误,超有用~~

    上图显示了美国的商品贸易逆差和制造业就业人数。 该图表非常难以阅读。它有两个主要问题。首先,一个数据系列(贸易逆差)的值完全为负,而其他数据系列(制造业就业)的值都为正。...它们只是无法证明它们的存在是合理的——通常是因为它们被错误地形象化,或者因为我们试图在太小的空间里塞进太多东西。 错误:包含太多细节 多么绚烂的彩虹!...为了解决只将选择的国家叠加的问题,我添加了另一个类别(“其他”),包括所有其他欧元区国家。(重新设计的图表中的经常项目总余额低于原来的图表。这是因为欧盟统计局(Eurostat)对数据进行了修订。)...虽然这节省了页面上的宝贵空间,但它会产生一些后果 - 如该图表所示,从2017 年 3 月开始。这个故事是关于科学出版是如何由男性主导的。所有数据点都同样有趣且与故事相关。...经过深思熟虑,我决定不重新设计此图表。如果我要保留所有数据,图表就会变得太大而无法包含一个简洁的故事。在这种情况下,最好剪掉一些东西。

    60621
    领券