精华内容
下载资源
问答
  • 大规模动态图中标签约束的频繁子图Top-k查询
  • 主页中FSRobust_ALM代码的论文PDF,理论写的很详细!
  • 在这项工作中,我们研究了一种新颖的top-k查询类型,称为top-k,m查询。 假设 有一组组,每个组包含一组属性,每个 都与一个已排序的元组倒排列表相关联,其中每个元组都包含一个元组ID和分数。 所有倒排列表...
  • top-k-mallows:Mallows Kendall,一个适用于Mallows模型的python软件包,具有top-k和完整排名。 我们提出了与Mallows模型(MM)(排列最著名的分布)一起使用的方法。 此外,我们还考虑部分排名(前k位排名)以及...
  • Top-K修剪地标标签 Top-K修剪地标标记是一种快速算法,用于回答现实网络(例如社交网络和网络图)上的top-k距离查询。 用法 从CUI界面 $ make $ bin/construct_index sample/example.txt 16 0 sample/index_file #...
  • Top-k遇到深度学习

    千次阅读 2021-01-05 18:17:25
    点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!top-k操作(即从分数集合中找到k个最大或最小元素)是一个重要的机器学习模型组件,被广泛用于信息检索和数据挖掘中。但是,如果t...

    点击蓝字

    关注我们

    AI TIME欢迎每一位AI爱好者的加入!

    top-k操作(即从分数集合中找到k个最大或最小元素)是一个重要的机器学习模型组件,被广泛用于信息检索和数据挖掘中。但是,如果top-k操作是通过算法方式(例如使用冒泡算法)计算的,则无法使用现在流行的梯度下降算法以端到端的方式训练所得模型。这是因为这些计算方式通常涉及交换索引,无法用来计算其梯度。换句话说,从输入数据到该元素是否属于前k个集合的指标向量的对应映射是不连续的。

    为了解决这个问题,我们提出了一个平滑的近似操作,即SOFT top-k运算符。具体来说,我们的SOFT top-k运算符将top-k运算的输出近似为最优传输问题的解。然后,我们基于最优传输问题的KKT条件快速地估算SOFT运算符的梯度。我们将提出的算子应用于k nearest neighbors分类和beam search算法,并通过实验展示了性能的提高。

    谢雨佳:本科毕业于中国科学技术大学少年班学院,现为佐治亚理工学院CSE系第五年博士生,导师为查宏远教授和赵拓教授。她的研究方向主要为最优传输理论和端到端学习。

    一、动机:如何将Top K 嵌入到深度学习框架中?

    k nearest neighbors (kNN) classifier 是一个非常常见且实用的分类方法。具体来说,假设有很多已知label的template data,以及一个未知label的query data,我们可以将未知的query data与其他image相比,得到比较相似的k个图片,将其称为k nearest neighbors,并将这些 neighbors的label作为该未知data的label。对于image data,一个自然的做法是使用特征抽取网络(feature extraction)将这些image投影到一个embedding space里,并在这个embedding space中做kNN以得到对未知data的预测。然后我们最小化损失函数来更新特征抽取网络中的参数。但是,该模型框架的缺点在于:由于需要进行的top-k操作不可微,因此不能通过梯度下降法或者随机梯度下降法实现参数优化。

    图1  深度k近邻网络结构示意图

    为什么top-k 不可微?考虑一个top-k算法,比如,bubble,heap或者quick sort partition这些算法,实则是不断置换输入变量(input scores)的索引(indices),这个置换索引的操作是不可微的。从另一个角度出发,输入为“4 1 2 3 0 1 2”,然后得到排名第一的元素,若用一个identical director表示的话为“1 0 0 0 0 0 0”,当输入变为“5 3 1 0 2 2 1”时,输出不变。这说明,top k 操作本质上是一个分段常数映射(piecewise constant function),其梯度要么为0,要么不存在。这也进一步解释了,为什么该模型框架不能通过梯度下降法或者随机梯度下降法实现参数优化。基于此,讲者旨在设计一种能实现可微的top k operator。

    图2  研究top-k 的深度学习网络的目标

    二、如何使Top-K问题可微?

    首先,将实现可微的top-k operator问题看作是一个最优运输问题,即把一个分布的mass运输到另一个分布上,并使运输成本最小。比如,有两个分布和,以及成本矩阵,那么问题就转化成如图中所示的优化问题,就代表了最终的运输计划。

    图3  最优运输问题

    回到top-k的问题上,假设现在有六个输入值,希望求取top-2的元素。对此,我们可以构造这样一个最优运输问题,其中是输入值的经验分布(在这六个值上,每个值上分布1/6的mass),是参数为k/N的伯努利分布。也就是说,在0上放置2/3的mass,在1上放置1/3的mass。根据最优运输的规则,最优运输方案 (Optimal Transport Plan, OT plan)就是将较大的两个数运输到1的位置,将较小的四个数运输到0的位置。基于此,可得到最优运输方案的matrix,其第二行就是所求的指示向量(indicate vector),若向量元素为1则表示该数为top k elements,为0时则不是。

    图4  将top-k问题视作最优运输问题

    其次,怎样让top-k问题可微?讲者提出在上述的最优运输方案的基础上增加一项正则熵(entropy regularization)。主要是因为,最优运输问题是一个线性规划的问题,则其最优解几乎一定在可行域的顶点上,也就是说当输入(X)发生变化的时候,最优解会从可行域的一个顶点跳跃到另一个顶点上,这个过程是不可微的。增加了正则熵之后,得到最优解将是可行域的内点,当X发生变化时,也是平滑变化,这就可以使从X→的映射实现可微。

    图5  top k 问题可微——增加正则熵

    在很多应用中,不仅需要知道哪些元素是top-k,并且还需得知 top-k中k个元素的排序。因此,讲者做了如图6所示的修改,分布不再是伯努利分布,而是在0的位置上依旧分布2/3的mass,然后在1和2上分别分布1/6的mass。由此得到OT plan的matrices,并表示出哪一个得分最大,哪一个得分第二大。

    图6  top k 中k个元素的排序

    具体地说,如何求解带有正则熵的OT plan问题?讲者介绍了一种专门求解带有正则熵的OT plan问题的算法——Sinkhorn 算法,该算法可循环迭代且线性收敛,同时算法的迭代次数与N无关,这说明算法的时间复杂度是O(N)。另外,为了将top-k嵌入到深度学习框架中,并使其可微,就不仅需要求出top-k 的元素是什么,还需要知道如何求解top-k 的梯度。一般来说,求导就是进行误差向后传播(back propagation),可直接使用自动微分法。但由于Sinkhorn 算法是一个迭代算法,因此在forward pass中,需要将迭代的中间变量都存到内存中,这不仅对内存的负担很大,而且求梯度的过程也会比较慢。因此,这里直接使用梯度的闭式解来求解,即在forward pass中求得top-k之后,通过简单的矩阵操作可得到梯度。

    图7  梯度的 closed-form图解

    由于是一个优化问题的最优解,因此与X的关系被KKT条件约束,由图8的推导,可得到top-k operator的闭式解。

    图8  top k operator的梯度求解

    但是,增加正则熵后得到的最优解并不是准确的top-k operator(由于正则项引入了bias),那么该如何量化这个bias?讲者通过对比增加了正则熵的与没有加正则熵的,证明该差别受限于下述表示,且当系数越来越大时,得到的解会越来越平滑。

    图9  top k operator的梯度求解

    三、实验验证

    1)图像分类实验研究

    通过与baselines对比可知,该方法可以有效提高分类精度。相比于文章中采用的基于kNN的端到端训练,作者着重强调了两个baselines,即kNN+pretrained CNN以及CE+CNN,前者使用两阶段训练:先用交叉熵来训练一个神经网络来作为特征提取器,将image编码到embedding space中,然后在embedding space中做kNN以得到一个预测;后者是直接结合交叉熵与CNN实现分类,结果如图10所示。

    图10  图像分类结果对比

    2)自然语言生成实验研究

    在生成句子时(inference stage),需要模型一个字一个字生成(beam search),即从起始词开始,模型会选择前k个likelihood较大的词作为候选词,循环反复,最终选择likelihood最大的句子作为output。但在训练阶段,是利用ground truth sequence来训练模型,但问题是模型没有利用自己生成的词来进行训练,因此开始时模型生成的词如果有一点误差,在后续inference 阶段误差会被很快放大。

    图11  Beam search training 算法

    如果能够将beam search嵌入到training阶段,模型的training阶段和inference阶段就是完全一致的,这个问题就可以迎刃而解。然而由于beam search的每一步都需保留前k个likelihood最大的词,这是典型的top-k 操作,如何能将beam search嵌入到training阶段?

    采用讲者提出的可微top-k operator实现beam search,即在每一步有Nk个选择以及vector of likelihood,将vector of likelihood放到sorted top-k operator中取top-k得到matrixes,将这个matrixes与所有词的embedding matrix相乘得到下一步的input,循环进行以得到一个likelihood最大的sequence,与ground truth sequence进行比较,实现training。

    在WMT14的数据集上的实验,证明了加入beam search training的模型实现了不小的提高。

    图12  嵌入top-k 的beam search training 网络和

    基于beam search的实验验证

    相关资料

    文章下载二维码

    Full paper: Differentiable Top-k with optimal transport, NeurIPS 2020

    参考文献

    Cuturi M . Sinkhorn Distances: Lightspeed Computation of Optimal Transportation Distances. NIPS, 2013.

    https://dl.acm.org/doi/10.5555/2999792.2999868

    Cuturi, M., Teboul, O. and Vert, J.-P.:Differentiable ranking and sorting using optimal transport. NIPS,2019.

     

      e           m     t

    往期精彩

     AI                i

    整理:刘美珍

    审稿:谢雨佳

    排版:岳白雪

    AI TIME欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你!

    请将简历等信息发至yun.he@aminer.cn!

    微信联系:AITIME_HY

    AI TIME是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

    更多资讯请扫码关注

     

    (直播回放:https://b23.tv/qmP3rC)

    (点击“阅读原文”下载本次报告ppt)

    展开全文
  • 提出了TPN(Top-k-Patterns based on Nodesets)算法,该算法使用了节点集的概念,将数据压缩于Poc-tree,通过Top-k-rank表重新计算最小支持度限制生成候选模式的数量。实验通过与ATFP,Top-k-FP-growth算法比较,...
  • 对海量数据的高效Top-k检索
  • Tom Zu-search-topK-节省空间 链表实现的Top-K空间节省算法 2021/3 / 4-2021 / 3/5期间完成的工作 论文“数据流中频繁和Top-k元素的有效计算”中提出的算法 链接: : 运行程序 将所有数据放入名称为fname的.txt...
  • 滑动窗口上的近似连续Top-k查询
  • Top-k Reliability Search on Uncertain Graphs
  • 一种针对反向空间偏好top-k查询的高效处理方法
  • 本文介绍的交互式空间关键字Top-k检索方法,文章创新点新颖。
  • top-K 算法总结

    千次阅读 2020-09-08 21:21:52
    1000000)个数,求出其中的前K个最小的数(又被称作topK问题) 1 最基本思路 将N个数进行完全排序,从中选出排在前K的元素即为所求。有了这个思路,我们可以选择相应的排序算法进行处理,目前来看快速排序,堆排序和...

    问题描述:有 N (N>1000000)个数,求出其中的前K个最小的数(又被称作topK问题)

    1 最基本思路

    将N个数进行完全排序,从中选出排在前K的元素即为所求。有了这个思路,我们可以选择相应的排序算法进行处理,目前来看快速排序,堆排序和归并排序都能达到**O(NlogN)**的时间复杂度。

    2 优先队列

    可以采用数据池的思想,选择其中前K个数作为数据池,后面的N-K个数与这K个数进行比较,若小于其中的任何一个数,则进行替换。这种思路的算法复杂度是O(N*K).
    剩余的N-K个数与前面K个数比较的时候,是顺序比较的,算法复杂度是K。

    3 大根堆

    大根堆维护一个大小为K的数组,目前该大根堆中的元素是排名前K的数,其中根是最大的数。此后,每次从原数组中取一个元素与根进行比较,如小于根的元素,则将根元素替换并进行堆调整(下沉),即保证大根堆中的元素仍然是排名前K的数,且根元素仍然最大;否则不予处理,取下一个数组元素继续该过程。该算法的时间复杂度是O(N*logK),一般来说企业中都采用该策略处理topK问题,因为该算法不需要一次将原数组中的内容全部加载到内存中,而这正是海量数据处理必然会面临的一个关卡。

    4 快速排序

    利用快速排序的分划函数找到分划位置K,则其前面的内容即为所求。该算法是一种非常有效的处理方式,时间复杂度是O(N)(证明可以参考算法导论书籍)。对于能一次加载到内存中的数组,该策略非常优秀。

    代码实现:基于快排和堆排的TopK算法

    原文链接:https://www.jianshu.com/p/5b8f00d6a9d7

    5 “冒泡排序”获取TopK

    (1)可以避免对所有数据进行排序,只排序部分;
    (2)冒泡排序是每一轮排序都会获得一个最大值,则K轮排序即可获得TopK。

    6 局部淘汰法 – 借助数据结构"堆"获取TopK

    (1)堆:分为大顶堆(堆顶元素大于其他所有元素)和小顶堆(堆顶其他元素小于所有其他元素)。
    (2)我们使用小顶堆来实现。
    (3)取出K个元素放在另外的数组中,对这K个元素进行建堆。
    (4)然后循环从K下标位置遍历数据,只要元素大于堆顶,我们就将堆顶赋值为该元素,然后重新调整为小顶堆。
    (5)循环完毕后,K个元素的堆数组就是我们所需要的TopK。

    7 分治法 – 借助”快速排序“获取TopK

    (1)比如有10亿的数据,找处Top1000,我们先将10亿的数据分成1000份,每份100万条数据。
    (2)在每一份中找出对应的Top 1000,整合到一个数组中,得到100万条数据,这样过滤掉了999%%的数据。
    (3)使用快速排序对这100万条数据进行”一轮“排序,一轮排序之后指针的位置指向的数字假设为S,会将数组分为两部分,一部分大于S记作Si,一部分小于S记作Sj。
    (4)如果Si元素个数大于1000,我们对Si数组再进行一轮排序,再次将Si分成了Si和Sj。如果Si的元素小于1000,则我们需要在Sj中获取1000-count(Si)个元素的,也就是对Sj进行排序
    (5)如此递归下去即可获得Top-K。

    原文链接:http://www.mianshigee.com/question/12518zap

    展开全文
  • 无线传感器网络中基于用户偏好的多维Top-k查询处理,陈丁洁,陈红,Top-k查询在无线传感器网络中的应用十分广泛。在大规模无线传感器网络中,用户对于感知数据的偏好往往涉及多维属性,不同用户根据�
  • 前言 本篇博客出于学习交流目的,主要是用来记录自己学习后的理解,过程中遇到的问题和心路历程,方便之后回顾。...这篇学习笔记关于一种高效Top-k的频繁效用项集挖掘算法。 参考文献:Effic...

    前言

    本篇博客出于学习交流目的,主要是用来记录自己学习后的理解,过程中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!

    REMARK:本人菜鸟一枚,如有理解错误还望大家能够指出,相互交流。也是第一次以博客的形式记录,文笔烂到自己都看不下去,哈哈哈


    这篇学习笔记关于一种高效Top-k的频繁效用项集挖掘算法。
    参考文献:Efficient Algorithms for Mining Top-K High Utility Itemsets

    本博客介绍一些高效用频繁模式挖掘以及传统高效用top-k挖掘的基本概念,具体算法在Top-k高效用项集挖掘学习笔记(二) TKUTop-k高效用项集挖掘学习笔记(三) TKO 中详细记录,请手动跳转。

    正文

    Top-k挖掘算法研究意义:解决传统高效用模式频繁项集挖掘需要人为设置阈值的问题,太大或太小的阈值都不好,而重复计算不同阈值结果又造成多次无用重复执行。

    一些可能会涉及到的定义:
    高效用项集 (HUI):high utility itemset ,如果一个项集不小于用户自定义的最小效用阈值;
    有价值的交易效用 (TWU):transaction-weighted utilization,一种高效用频繁挖掘模型,也作项集的效用值上界值;
    高价值的交易效用项集 (HTWUI):high transaction-weighted utilization itemset ,TWU中效用值大于阈值的项集,由于TWU是效用值上界,所以HTWUI一定包含HUI;

    传统基于TWU的模型,包含两个步骤,phase I :获得所有HTWUI集合(由于TWU是效用值上界,所以HTWUI一定包含HUI);phase II:再基于HTWUI集合具体计算获得HUI;

    Top-k高效用项集挖掘即在考虑效用值场景下进行Top-k挖掘。

    Top-k高效用项集挖掘面临的主要挑战:
    1)高效用项集不具有单调性或反单调性,所以剪枝是很有难度的;
    2)怎么结合现有TWU算法和top-k概念。因为在phase I 时候如果确保所有HTWUI一定包含HUI,起始设置最小阈值为0,但这可能会带来一个很大的搜索空间;
    3)没有给定的阈值,随着算法的进行不断更新边界阈值, min_utilBorder m i n _ u t i l B o r d e r (border minimum utility threshold), min_utilBorder m i n _ u t i l B o r d e r 最初为0,如果不能高效的更新将面临巨大的计算时间和存储开销;
    4)如何在不丢失Top-k HUIs 的情况下高效的增大阈值 min_utilBorder m i n _ u t i l B o r d e r

    论文中提出了两种算法:
    (1)TKU (mining Top-K Utility itemsets) ;在Top-k高效用项集挖掘_学习笔记(二) TKU会介绍,其中还包括五种优化策略:PE、NU、MD、MC、SE
    (2)TKO (mining Top-K utility itemsets in One phase) ;Top-k高效用项集挖掘_学习笔记(三) TKO 中介绍,还包括三个剪枝策略:RUC、RUZ、EPB;请手动跳转。


    在开始正式算法之前,还是先看一堆枯燥的定义,我也很绝望,不过后面一直要用到,所以必须认真理解!!!大部分是我按自己的理解解释的,英语原版看原始论文。

    高效用项集基本定义
    总项集(distinct items) I={I1,I2,,Im} I ∗ = { I 1 , I 2 , ⋯ , I m } ;事务数据集(transactional database) D={T1,T2,,Tm} D = { T 1 , T 2 , ⋯ , T m } ;交易记录 TrD T r ∈ D I I ∗ 的子集, r r Tid;并且对于每个 IjTr I j ∈ T r 都有一个内部效用值 Q(Ij,Tr) Q ( I j , T r ) ,同时对于每个 IjI I j ∈ I ∗ 都有一个外部效用值 P(Ij,D) P ( I j , D ) ;一个项集 X={I1,I2,,IL} X = { I 1 , I 2 , ⋯ , I L } 共有 L L 个不同的项,L也称作项集 X X 的长度; Litemset表示项集长度为 L L

    Definition 1. 项的绝对效用值(Absolute utility of an item): EU(Ij,Tr)

    EU(Ij,Tr)=Q(Ij,Tr)×P(Ij,D) E U ( I j , T r ) = Q ( I j , T r ) × P ( I j , D )
    这个很好理解,给定项 IjI I j ∈ I ∗ 和交易记录 TrD T r ∈ D ,项的绝对效用值就是内部效用乘外部效用。

    Definition 2. 一条交易中某个项集的绝对效用值(Absolute utility of an itemset in a transaction): EU(X,Tr) E U ( X , T r )

    EU(X,Tr)=IjX(Ij,Tr) E U ( X , T r ) = ∑ I j ∈ X ( I j , T r )
    就是把交易记录 Tr T r 中求项集 X X 中各项效用值得累加和。

    Definition 3. 项集在整个数据集中的绝对效用值(Absolute utility of an itemset in a database):EU(X)

    EU(X)=TrDXTr(Ij,Tr) E U ( X ) = ∑ T r ∈ D ∧ X ⊆ T r ( I j , T r )
    同样,满足条件累加求和,面向整个数据集。

    Definition 4. 交易效用值和总效用值(Transaction utility and total utility): TU(Tr) T U ( T r ) and TotalUDB T o t a l U D B

    TU(Tr)=EU(Tr,Tr) T U ( T r ) = E U ( T r , T r )
    计算整条交易的效用值;
    TotalUDB=TrDTU(Tr) T o t a l U D B = ∑ T r ∈ D T U ( T r )
    计算这个数据集的效用值。

    Definition 5. 项集在整个数据集中的相对效用(Utility of an itemset in a database): U(X) U ( X )

    U(X)=EU(X)TotalUDB U ( X ) = E U ( X ) T o t a l U D B
    即项在整个数据集效用的占比

    Definition 6. 高效用项集(High utility itemset): HUI H U I
    项集 X X 被称为高效用项集,当且仅当U(X)min_util,或 EU(X)abs_min_util E U ( X ) ≥ a b s _ m i n _ u t i l abs_min_util=min_util×TotalUDB a b s _ m i n _ u t i l = m i n _ u t i l × T o t a l U D B

    Definition 7. 高效用项集挖掘(High utility itemset mining):
    设置参数 δ(0%δ100%) δ ( 0 % ≤ δ ≤ 100 % ) 为最小效用阈值,数据集 D D 中完整集合 HUIs H U I s fHUI(D,δ) f H U I ( D , δ ) 表示。HUI挖掘的目标就是挖掘 fHUI(D,δ) f H U I ( D , δ )

    看下面这个例子

    表1和表2分别给出了交易数据集和项对应的外部效值,根据上诉的定义,如果这设置 abs_min_util=30 a b s _ m i n _ u t i l = 30 ,我们能够计算得到HUIs完整集合为:
    {{BD}:30,{ACE}:31,{BCD}:34,{BCE}:31,{BDE}:36,{BCDE}:40,{ABCDEF}:30} { { B D } : 30 , { A C E } : 31 , { B C D } : 34 , { B C E } : 31 , { B D E } : 36 , { B C D E } : 40 , { A B C D E F } : 30 }

    由于考虑效用值后,项集与其超集之间不存在直接的单调性或反单调性,所以只能通过不断缩小搜索空间来剪枝。 transactionweighted downward closure property t r a n s a c t i o n − w e i g h t e d   d o w n w a r d   c l o s u r e   p r o p e r t y (TWDC property) 这个策略基于以下的定义可以实现,对!又是定义

    Definition 8. 有价值的交易效用值(Transaction-weighted utilization): TWU(X) T W U ( X )

    TWU(X)=TrDXTrTU(Tr) T W U ( X ) = ∑ T r ∈ D ∧ X ⊆ T r T U ( T r )
    计算这个数据集中包含 X X 项集的交易的交易效用值累加和。

    Definition 9. TWU值高的项 (High TWU itemset):
    如果项X满足 TWU(X)abs_min_util T W U ( X ) ≥ a b s _ m i n _ u t i l ,则 X X 是TWU值高的项。

    Property 1 (TWDC property):transactionweighted downward closure property,如果项 X X 不是高TWU值得项,那么X对应的所有超集的效用值都低。

    这个挺好理解的,原文给出了数学证明,有兴趣可以看,只要思想就是包含超集的项一定包含 X X ,所以超集的TWU肯定不大于X的TWU,而超集EU值又不大于TWU值,所以超级的EU肯定也小于阈值。

    Definition 10. Top-k高效用项集(Top-k high utility itemset): topk HUI t o p − k   H U I
    X X 是Top-k高效用项集,当且仅当存在少于K个项集的效用值大于EU(X)在过程 fHUI(D,0) f H U I ( D , 0 ) 中。

    Property 2: D D 中的完整 topk HUIs t o p − k   H U I s 集合为 KH K H KH K H 可能包含项集小于k个,当 |fHUI(D,0)|k | f H U I ( D , 0 ) | ≤ k ,也有可能大于k个项集,因为可能有些项集具有同样的效用值。

    Definition 11. 优化的最小效用阈值(Optimal minimum utility threshold): δ δ ∗
    参数 δ δ ∗ 成为优化的最小效用阈值,当且仅当不存在阈值 δ>δ δ > δ ∗ 使得 |fHUI(D,δ)|=|KH| | f H U I ( D , δ ) | = | K H | ;或者也可以认为 δ=min{U(X)|XKH} δ ∗ = m i n { U ( X ) | X ∈ K H } 。也就是当前KH中 X X 最小的效用值。

    Problem Statement:
    给定一个交易数据库 D 和想要挖掘出 HIUs H I U s 的数目 k k ,等价于发现那些在 D 中拥有效用值大于 δ δ ∗ 的项集集合。


    相关工作

    高效用项集挖掘
    创建的有两类,一类是two-phase:包括两个步骤,第一步获取候选项集,第二步计算实际高效用项集。常见算法有 IHUPIIDSUPGrowth I H U P 、 I I D S 、 U P − G r o w t h (这个目前最优,并且在第一阶段有四个优化策略,DGU、DGN、DLU、DLN,本篇TKU的基础);另一类是one-phase:不生成候选项集,直接生成最终高效用序列。常见的算法有 d2HUPHUMMiner d 2 H U P 、 H U M − M i n e r (用了 utilitylists u t i l i t y − l i s t s 结构本篇TKO的基础)。

    Top-k项集挖掘
    这个就是传统的了,但是都没有考虑效用值。

    Top-k高效用项集挖掘
    最先提出这个概念的是Chan,但是没有考虑定量的项,和这篇论文的概念有些不一样;Zihayat提出T-HUDS用于挖掘流数据的top-k HUIs;还有一些人的工作,对理解本篇论文没什么用,就不介绍了。

    总结

    这篇博客主要是一些概念,为了方便理解后面的TKU算法TKO算法,具体算法请手动跳转。

    展开全文
  • Top-K Off-Policy纠偏 推荐系统需要一次性推荐K个item。作者采用迭代采样k个item来实现。 在梯度更新的纠偏上又加入了一项因素lamba。 其他方差降低方法 代码 非官方开源 这份代码只能走个过程,和论文差别很大。 ...

    基础知识准备

    强化学习入门简单实例 DQN
    强化学习入门 第一讲 MDP
    随笔分类 - 0084. 强化学习

    目标函数

    首先需要定义目标函数来优化模型参数,此处使用的REINFORCE算法解决RL问题:
    在这里插入图片描述
    求导证明参考

    OFF-POLICY纠偏

    OFF-POLICY指的是要更新的策略和生成训练数据的策略并不是同一个策略,也就是除了存在一个RL算法外,还有其他算法也会产生推荐。那么这些策略混合在一起会生成训练数据,但生成的训练数据只在RL算法上用于更新。因此二者之间存在分布差异。作者引入 importance weighting 来解决该问题。
    在这里插入图片描述
    beta是混合策略,pai是RL策略。为解决bata策略与pai策略分布的差异,使用importance weight来纠偏。但是importance weight是一个链式乘法项。其会导致推测器的高方差。所以采用降低importance weight精准度(忽略项+一阶近似)来降低高方差。由公式(3)生成最终的梯度计算方法。

    模型化策略PAI

    policy gradient方法是输入状态S,输出动作A的分布。作者使用的chaos free rnn。
    在这里插入图片描述
    在这里插入图片描述
    简而言之,模型初始状态服从一个初始分布,然后根据每一步的action,由rnn输出新的状态,在预测时,使用新状态特征与action特征内积形式输入softmax来输出动作分布。在实验中初始分布为0,context包括页数、设备、时间差等信息。对于0-reward的行为将不会用于参数更新。

    混合策略beta的预测

    在off-policy中,梯度计算涉及到beta分布值。但是在实际情况中,很多策略是无法控制的或者就是一些规则策略。因此作者重用了RNN模型,对于RNN模型输出的状态添加一个额外的head来预测beta分布,并且block该head的梯度传播。
    在这里插入图片描述

    Top-K Off-Policy纠偏

    推荐系统需要一次性推荐K个item。作者采用迭代采样k个item来实现。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在梯度更新的纠偏上又加入了一项因素lamba。

    其他方差降低方法

    在这里插入图片描述

    代码

    非官方开源
    这份代码只能走个过程,和论文差别很大。

    Trick原理

    log-derivative推导:
    在这里插入图片描述
    一阶近似公式:
    在这里插入图片描述

    展开全文
  • 一个简单的top-k实现

    2018-09-18 16:26:37
    这是一个简单的实现top-k的算法,高效的获取前K个值。
  • 针对以上问题,提出了增量的Top-k高效用挖掘算法TOPK-HUP-INS。算法通过四个有效的策略,在增量数据的情况下,有效地挖掘用户所需数量的高效用模式。通过在不同数据集上的对比实验表明TOPK-HUP-INS算法在时空性能上...
  • 基于MapReduce的TOP-K查询问题的实现

    千次阅读 2018-01-15 10:13:07
    如何存储前K个数据是TopK问题的一大核心问题,这里采用Java中TreeMap来进行存储。TreeMap的实现是红黑树算法的实现,红黑树又称红-黑二叉树,它首先是一棵二叉树,它具体二叉树所有的特性,同时红黑树更是一棵自平衡...
  • Top-K问题的几种求解方法

    千次阅读 2018-05-05 11:14:31
    HeapSelect求解方法 使用这种方法求解,需要借助一种数据结构...最终的堆会是数组中最大的K个数组成的结构,小根堆的顶部又是结构中的最小数,因此把堆顶的值弹出即可得到Top-K。 public class TopKHeapSelect ...
  • 对模型给出的top-k结果进行precision、recall和f1-score进行评估:k>1和k=1相比,前者的precision一般会降低;recall一般会提高;f1-score的变化不一定,取决于precision和recall的综合变化。 原因:(1)...
  • 回答Top-k示例轨迹查询
  • 设计基于网格索引的Top-k偏好查询算法,提高Top-k偏好查询问题的解决效率.方法利用网格索引,采用概念划分的方法,实现基于范围查询和NN查询两种方式的 Top-k偏好查询算法.结果通过真实数据集测试结果表明算法能够...
  • PathSim: Meta Path-Based Top-K Similarity Search in Heterogeneous Information Networks.Proceedings of the VLDB Endowment. 4:992-1003. 定义3 . 元路径 是一个定义在图的网络模式 TG=(A,   R) 上的...
  • 虽然Top-k Skyline查询能够找到数据集中前k个最具代表性的信息,在获取代表性信息的同时又控制了结果规模,满足了上述要求,但是现有的Top-k Skyline查询在面对大规模数据集时效率较低,并不适用于大规模数据集。...
  • 采用cp-net进行 Top-k检索,陈武进,王红兵,本文研究采用CP-net进行Top-k检索。CP-net作为一种用于表示用户在多个相关属性上的偏好模型,对决策系统有很大的益处。然而,在如何利�
  • python numpy 求top-k accuracy指标

    千次阅读 2019-07-23 16:28:00
    top-k acc表示在多分类情况下取最高的k类得分的label,与真实值匹配,只要有一个label match,结果就是True。 如对于一个有5类的多分类任务 a_real = 1 a_pred = [0.02, 0.23, 0.35, 0.38, 0.02] #top-1 a_pred_...
  • f1, map, mrr, mndcg = evaluate_model_new(algo, test_user, test_item, test_rate, topK) eval_end = time.time() print('evaluate time:%.1f s' % (eval_end - test_end)) print("algorithm : %s" % rec) ...
  • top-K问题详解

    万次阅读 2016-04-09 17:03:28
    top-K 问题是一类经典的问题,它能解决许多海量数据处理相关的问题,例如在1亿个ip中找出访问次数前1000的ip,在海量搜索字符串中找出搜索频率排在前十的搜索字符串等等。下面我们由浅入深对其进行分析。 我们可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 354,891
精华内容 141,956
关键字:

top-k