算法

600字简述ALNR算法

蹲街弑〆低调 提交于 2020-02-11 06:51:55
文章:Adaptive Local Nonparametric Regression for Fast Single Image Super‐Resolution Dec. 2015 一、研究目的 ALNR算法旨在通过其降级的低分辨率(LR)测量结果生成高质量高分辨率(HR)图像,同时算法复杂度要尽量降低。 二、实验内容 ALNR算法简述:利用字典学习和非参数回归的方法,学习低分辨率特征映射到其对应高分辨率特征的投影矩阵来快速实现图像SR。 实验可分为训练阶段和重建阶段: 2.1训练阶段 输入:含一一对应的 LR 图像和HR 图像的训练集。 输出:回归投影矩阵Mk和所有字典原子对应的投影矩阵组成的集合Fk。 训练步骤简述: (1)对训练集图像进行插值、PCA降维操作得到训练集的整个特征空间I={yiLs,yiHs }。 (2)通过计算LR特征字典中的每个原子dk与所有的LR特征yiLs的相关性,再经过归类、回归等操作得到回归投影矩阵Mk和所有字典原子对应的投影矩阵组成的集合Fk。 2.2 重构阶段 输入:一幅LR测试图像Y。 输出:重建的HR图像X。 重构步骤简述: (1)利用投影矩阵集合Fk得到HR图像块。 (2)对HR图像块进行整合得到重建的HR图像X。 3.3 实验结果 ALNR算法图像SR质量很好,有更清晰的边缘和更好的细节。 时间复杂度是出色的,相比于其他算法要小很多。

BF算法

人盡茶涼 提交于 2020-02-11 06:23:39
子串的定位运算通常称为 串的模式匹配 或串匹配。串的模式匹配设有两个字符串 S和T,设S为主串,也称正文串;设T为子串,也称为模式 。在主串S中查找与模式T相匹配的子串,如果匹配成功,确定相匹配的子串中的 第一个字符在主串S中出现的位置 。 著名的模式匹配算法有BF算法和KMP算法,先介绍BF算法。 BF算法是最简单直观的模式匹配算法,模式匹配不一定从主串的第一个位置开始,可以指定主串中查找的起始位置 pos,如果用顺序存储结构,可以写出不依赖于其他串操作的模式匹配算法。 【算法步骤】 用指针i,j指示主串S和模式T中当前正待比较的字符位置,i初值为pos,j初值为1. 如果两个串均未比较到串尾,即i,j均别小于S和T的长度,循环执行以下操作: S.ch[i]和T.ch[j]比较,若相等,则i和j分别指示串中下个位置,继续比较后续字符; 若不等,指针后退重新开始匹配,从主串的下一个字符( i= i - j + 2)起再重新和模式的第一个字符(j = 1) 比较 如果 j > T.length,说明模式T中的每个字符依次和主串S中的一个连续的字符序列相等,匹配成功,返回和模式T中第一个字符相等的字符在主串S中的序号(i - T.length);否则称匹配不成功,返回0. 【算法描述】 int index_BF ( SString S , SString T , int pos ) {

“猜你喜欢”实现策略?

旧巷老猫 提交于 2020-02-11 04:21:27
有没有想过自己在亚马逊眼中你是什么样子?答案是:你是一个很大、很大的表格里一串很长的数字。这串数字描述了你所看过的每一样东西,你点击的每一个链接以 及你在亚马逊网站上买的每一件商品;表格里的其余部分则代表了其他数百万到亚马逊购物的人。你每次登陆网站,你的数字就会发生改变;在此期间,你在网站上 每动一下,这个数字就会跟着改变。这个信息又会反过来影响你在访问的每个页面上会看到什么,还有你会从亚马逊公司收到什么邮件和优惠信息。 许 多年来,推荐系统的开发者试过用各种各样的方法来采集和解析所有这些数据。最近这段时间,多数人都选择使用被称为个性化协同推荐 (Personalized Collaborative Recommender)的算法。这也是亚马逊、Netflix、Facebook 的好友推荐,以及一家英国流行音乐网站 Last.fm 的核心算法。说它 “个性化”,是因为这种算法会追踪用户的每一个行为(如浏览过的页面、订单记录和商品评分),以此进行推荐;它们可不是瞎猫碰上死耗子——全凭运气。说它 “协同”,则是因为这种算法会根据许多其他的顾客也购买了这些商品或者对其显示出好感,而将两样物品视为彼此关联,它不是通过分析商品特征或者关键词来进 行判断的。 不同类型的个性化协同推荐系统最晚从 1992 年开始便已经出现。除了 GroupLens 计划,另一项早期的推荐系统是 MIT 的

基于投票的热门计数算法策略

拥有回忆 提交于 2020-02-11 03:05:22
类似基于投票的热门计数算法普遍应用在热门文章,热门评论等场景中, 典型的比如网易和今日头条的评论区,国外比如Hacker News和Reddit的主题排序。 一.Hacker News的排序算法 Hacker News是一个主题社区,用户可以为主题投票,根据得票数,系统自动统计出热门文章排行榜。 同时主题发表时间也会对排名产生影响,新发表的主题比旧的主题更容易得到好的排名。 Hacker News的排名算法是这样实现的: (p – 1) / (t + 2)^G 其中,   P表示帖子的得票数,减去1是为了忽略发帖人的投票。   T表示距离发帖的时间(单位为小时),加上2是为了防止最新的帖子导致分母过小(之所以选择2,可能是因为从原始文章出现在其他网站,到转贴至Hacker News,平均需要两个小时)。   G表示"重力因子"(gravityth power),即将帖子排名往下拉的力量,默认值为1.8。 从这个公式来看,决定帖子排名有三个因素: 第一个因素是得票数P。 在其他条件不变的情况下,得票越多,排名越高。 第二个因素是距离发帖的时间T。 在其他条件不变的情况下,越是新发表的帖子,排名越高。或者说,一个帖子的排名,会随着时间不断下降。 第三个因素是因子G。 它的数值大小决定了排名随时间下降的速度。 G值越大,排名下降得越快,意味着排行榜的更新速度越快。 二

推荐系统系列二:推荐系统的工程实现

大憨熊 提交于 2020-02-11 01:38:44
下面内容转自大数据与人工智能微信公众号,由于网络上推荐系统的相关学习资料太多太杂,东拼西凑学习很难摸出门道,同时我也在学习推荐系统,因此我将该系列内容摘录到我的博客,方便大家直接在博客中查看,大家一起学习进步,后面我也会阅读推荐系统相关的论文,并在本博客记录笔记,希望大家一起进步哈。 在我更新第一篇《推荐系统介绍》之后,过了一两天这篇介绍的阅读量就达到了三百多,可见当下存在一个矛盾:大家日益增长的对推荐系统好文章的渴求与真正有含金量的推荐系统学习资料间供应存在着巨大的矛盾,因此我将加快本系列文章的更新,很感谢大数据与人工智能微信公众号,大家如果有额外的需求,可以去该公众号详询原作者,由于博客中不能直接粘贴微信公众号中的图片,本文的图片都是我一张一张手动截图粘贴,整理不易,希望能帮到大家,毕竟好的文章值得我们推广,不应被埋没,好了,话不多说,马上开始。 ===================正文开始=================== 一:写在前面 在上篇文章《推荐系统介绍》中简单对推荐系统做了一个较全面的介绍,相信大家对推荐系统有了初步的了解。本篇文章作者会结合多年推荐系统开发的实践经验粗略介绍推荐系统的工程实现,简要说明要将推荐系统很好地落地到产品中需要考虑哪些问题及相应的思路、策略和建议,其中有大量关于设计哲学的思考,希望对从事推荐算法工作或准备入行推荐系统的读者有所帮助。

基于用户投票的排名算法(一):Delicious和Hacker (zz)

和自甴很熟 提交于 2020-02-11 01:19:55
作者: 阮一峰 日期: 2012年2月24日 互联网的出现,意味着"信息大爆炸"。 用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。 各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。 下面,我将整理和分析一些基于用户投票的排名算法,打算分成四个部分连载,今天是第一篇。 一、Delicious 最直觉、最简单的算法,莫过于按照单位时间内用户的投票数进行排名。得票最多的项目,自然就排在第一位。 旧版的 Delicious ,有一个"热门书签排行榜",就是这样统计出来的。 它按照 "过去60分钟内被收藏的次数" 进行排名。每过60分钟,就统计一次。 这个算法的优点是比较简单、容易部署、内容更新相当快;缺点是排名变化不够平滑,前一个小时还排在前列的内容,往往第二个小时就一落千丈。 二、Hacker News Hacker News 是一个网络社区,可以张贴链接,或者讨论某个主题。 每个帖子前面有一个向上的三角形,如果你觉得这个内容很好,就点击一下,投上一票。根据得票数,系统自动统计出热门文章排行榜。但是,并非得票最多的文章排在第一位,还要考虑时间因素

基于用户投票的排名算法(一):Delicious和Hacker News

眉间皱痕 提交于 2020-02-11 01:13:48
互联网的出现,意味着"信息大爆炸"。 用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。 各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。 下面,我将整理和分析一些基于用户投票的排名算法,打算分成六个部分连载,今天是第一篇。 一、Delicious 最直觉、最简单的算法,莫过于按照单位时间内用户的投票数进行排名。得票最多的项目,自然就排在第一位。 旧版的 Delicious ,有一个"热门书签排行榜",就是这样统计出来的。 它按照 "过去60分钟内被收藏的次数" 进行排名。每过60分钟,就统计一次。 这个算法的优点是比较简单、容易部署、内容更新相当快;缺点是,一方面,排名变化不够平滑,前一个小时还排名靠前的内容,往往第二个小时就一落千丈,另一方面,缺乏自动淘汰旧项目的机制,某些热门内容可能会长期占据排行榜前列。 二、Hacker News Hacker News 是一个网络社区,可以张贴链接,或者讨论某个主题。 每个帖子前面有一个向上的三角形,如果你觉得这个内容很好,就点击一下,投上一票。根据得票数,系统自动统计出热门文章排行榜。但是

机器学习算法评价指标之group auc(gauc)

非 Y 不嫁゛ 提交于 2020-02-10 15:36:38
机器学习算法评价指标之group auc(gauc) 在机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏,以CTR预估算法(推荐算法一般把这个作为一个很重要的指标)为例,把用户点击的样本当作正样本,没有点击的样本当作负样本,把这个任务当成一个二分类进行处理,最后模型输出的是样本是否被点击的概率。  举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.  那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。

Hash算法(含python实现)

一个人想着一个人 提交于 2020-02-10 07:26:18
1. 简介 哈希(hash)也翻译作散列。Hash算法,是将一个不定长的输入,通过散列函数变换成一个定长的输出,即散列值。 这种散列变换是一种单向运算,具有 不可逆性 即不能根据散列值还原出输入信息,因此严格意义上讲 Hash算法是一种消息摘要算法 ,不是一种加密算法。常见的hash算法有:SM3、MD5、SHA-1等 。 2. 应用 Hash主要应用在数据结构以及密码学领域。 在不同的应用场景下,hash函数的选择也会有所侧重。比如在管理数据结构时,主要要考虑运算的 快速性 ,并且要保证hash 均匀分布 ;而应用在密码学中就要优先考虑 抗碰撞性 ,避免出现两段不同明文hash值相同的情况发生。 2.1 在密码学领域的应用 在密码学中,Hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。比如一些登陆网站并不会直接明文存储用户密码,存储的是经过hash处理的密码的摘要(hash值),当用户登录时只需要对比输入明文的摘要与数据库存储的摘要是否相同;即使黑客入侵或者维护人员访问数据库也无法获取用户的密码明文,大大提高了安全性。 2.2 在数据结构中的应用 使用Hash算法的数据结构叫做哈希表,也叫散列表,主要是为了提高查询的效率。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数就是hash函数,存放记录的数组叫做哈希表

JAVA之垃圾收集器

谁说胖子不能爱 提交于 2020-02-09 21:06:30
概述 垃 圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃 圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的.。 对象存活判断 判断对象是否存活一般有两种方式: 引用计数 :每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。所谓对象之间的相互引用问题,如下面代码所示:除了对象objA 和 objB 相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为0,于是引用计数算法无法通知 GC 回收器回收他们。 可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。不可达对象。 在Java语言中,GC Roots包括: 虚拟机栈中引用的对象。 方法区中类静态属性实体引用的对象。 方法区中常量引用的对象。 本地方法栈中JNI引用的对象