求一高效率组合算法算法。

打造世界一流的快速大数算法库 - 数学研发网
1,000,000,000)">
打造世界一流的快速大数算法库
本专栏含有如下内容:
HugeCalc 是什么?
&&&&HugeCalc 是一款高精度算法库(同时支持 MBCS + UNICODE 版),适合于大规模科学计算,尤其适用于数论、密码学等领域研究,其核心算法耗费作者十余年的心血。具有占用资源少、效率高、使用便捷、易二次开发、可移植性强、可扩展性好等特点。关键文件 HugeCalc.dll 虽然很小,却提供了公共函数接口 709 个(标准C++接口 473 个;标准C接口 236 个),且其计算速度完全可与大型专业数学工具软件媲美!
&&&&现已提供了如下功能:
高精度快速加法
高精度快速减法
高精度快速乘法
高精度快速除法
高精度快速同余
高精度快速位运算
高精度快速乘方
高精度快速开方
超大整数快速取对数
高精度快速求排列
高精度快速求组合
高精度快速 n!、n!!、n#、素数阶乘
高精度快速计算 Fibonacci、Lucas 数列
高精度快速乘积取模
高精度快速模逆运算
高精度快速乘方取模(支持负指数)
高精度快速求最大公约数(支持群组运算)
高精度快速计算扩展最大公约数
高精度快速求最小公倍数(支持群组运算)
高精度快速“等幂和”(支持群组运算)
高精度快速任意进制转换
超大整数素性快速检测
生成随机超大(素)整数、快速生成最邻近素数
自由指定有效位运算
强大而灵活的输出
高精度计时器(有暂停、累计、复位等功能)
&&&&为了与广大网友分享 HugeCalc 带来的便捷,该版公开了 HugeCalc.dll 的所有接口文件(同时支持 MBCS + UNICODE 版),大家可以更自由地进行高精度计算或自开发,而无须再依赖于 Mathematica 等大型软件。
&&&&V5.x 首次采用了十进制/二进制“双进制内核系统”,且内部可高效相互转换,使输入/输出及内部计算均得以高效进行。
&&&&V6.x 新增了各种标准导入接口,可方便各种编程语言进行二次开发,如 C++、C、VB、Delphi 等。
&&&&V7.x 则实现了自动识别用户 CPU 类型,并自动调整算法及相关参数,以使效率最佳化;并实现了用 SSE2 指令集加速、多核并行处理等新技术,以充分发挥现在及未来 CPU 的性能。
&&&&V8.x 则实现了全整型指令算法(无须任何浮点指令集支持),比之先前有浮点指令参与时可提速 30% 左右。
&&&&HugeCalc 自网上公开发布以来,得到了广大网友的积极反馈。(当前最新版本为:;参见:)
强大的 HugeCalc
&&&&HugeCalc 是一款持续发展的软件,它具有如下特点:
功能全面:关键文件 HugeCalc.dll 虽然很小,却提供了公共函数接口 709 个(标准C++接口 473 个;标准C接口 236 个)。重载了多种版本的构造函数,以及重载了许多基本的运算符,并具备灵活的输出方式,使用方便一切得心应手(见头文件:、、、)。同时精心编配了详尽的帮助文档 HugeCalc.chm;
占用资源少:作者在开发过程中非常注重资源的有效利用,确保内存的耗用尽可能地低,远低于其它高精度算法库(HugeCalc V5.1.0.1 曾在一台工作站上精确计算出5千万的阶乘,耗时654.3秒,内存耗费峰值1105MB;普通程序一般都会因寻址空间不足等原因而中途崩溃);
自动调整算法:HugeCalc 在启动时可自动侦测用户 CPU 的型号,并据此自动调整算法及相应参数,使在兼顾老式机器的前提下,可充分发挥现代及未来 CPU 的功效(如采用 SSE2 指令集、多核并行等);
效率高:这是算法库的根基。HugeCalc 采用了许多先进的算法,部分是作者在该领域多年的积累,许多算法甚至已优于一些大型专业数学工具软件;
双进制内核:一般的算法库,内核要么采用二进制,要么采用十进制。前者便于位操作,后者便于以通常的十进制输出显示;但却无法同时兼具两者之优点。HugeCalc V5.x 首次采用双内核系统,且内部可相互高效转换,使该问题得以完美解决;
使用便捷:灵活的调用方式,可通用于各种编程环境;MBCS、UNICODE 版本合二为一:现仅须一份 HugeCalc.dll 即可;
易二次开发:丰富的数据接口,为再开发提供了便利;
可移植性强:算法库本身基于整数处理,完全不调用任何浮点指令,可适应于各种软硬件平台;
可扩展性好:对开发者来说,良好的数据结构,数以千计的高效内核,改进算法或新增功能都极为容易;对于用户来说,由于采用了合理的标准导出模式,从 V6.x 起,HugeCalc 将保证后续版本完全兼容先前版本;当有新版发布时,先前的程序无须重新编译即可调用升级后的DLL。
&&&&为了让广大网友体验 HugeCalc 的强大便捷,作者特意编写了一系列的 demo & test 程序,如下图所示:
&&&&&&&& --- 图1
&&&&本计算器仅为 HugeCalc 算法库的 Demo & Test,所以功能不全,界面也不算很理想;但已提供了最常用的一些功能,且非常强大(无论注册 HugeCalc 与否,本程序的运行都无任何限制;更多的介绍请参见帮助文档 HugeCalc.chm 中的相关页面)。
&&&&本算法库自在自网上公开发布以来,由于其强大的功能,得到许多网友的积极反馈,也经常会有朋友询问是否可以通过 VB、Delphi 等编程语言来调用它。现在这个问题已经解决,如下图所示:
&&&&&&&& --- 图2
&&&&如果要在 0.1s 内计算出(从 200000 个不同元素中抽取 100000 个的组合数),而你最擅长的是 VB,能做到吗?看了上面的图示,答案是:能!在我的机器(AMD 3200+,2.01 GHz,1GB RAM,WinXP SP2)上其实仅用了 0.035865s 而已,这是用 VB 调用 HugeCalc 实现的,我已经将源代码打包进了压缩包,以供网友参考。
&&&&这个用 VB 编写的计算器还有个特别功能,可以快速计算大数的“模幂”,若指数为负数,将有模逆运算,这已在程序中用 ToolTip 形式进行了提示。
快速计算阶乘非零尾数
&&&&这纯粹是一个数论小游戏:阶乘的十进制结果中末尾都会有很多个数字 0 (5以下的除外),去掉这些连续的 0 之后最后若干位称为“阶乘非零尾数”。给出一个数 N(它可能非常非常大,大到上千万位),请迅速计算出它的阶乘 N! 的最后的指定位的非零尾数。我编写了一个小程序,界面如下:
&&&&&&&& --- 图3
&&&&曾有许多竞赛题是让选手编写程序快速计算阶乘的最后一位非零尾数,而本程序则可快速计算最后的 1~255 位非零尾数,功能很强大,速度亦是无与伦比,这些的背后则是算法库 HugeCalc 的强力支持!为了让广大网友体验快速计算的乐趣,无论注册 HugeCalc 与否,本程序的运行都无任何限制!
&&&&关于本话题的深入探讨,可访问本站的
最直观的 RSA 算法教程(含源代码及程序)
&&&&为什么说是“”呢?请看如下界面:
&&&&&&&& --- 图4
&&&&它将 RSA 的原理以数学公式的形式直接反映在界面上,所有的项都可由用户编辑,而在使用时,还会自动判定状态,自动给予提示。更重要的是,还提供了源代码,RSA 被精心设计成两个版本:标准C调用(rsa.h & rsa.c)及标准C++调用(rsa.hpp & rsa.cpp)。
&&&&我虽然开发了 HugeCalc,并深信其在密码学领域大有作为,可是我本身之前对密码学却一无所知,于是拼命搜集资料自学。也许我的数论功底还可以,所以学 RSA 还比较轻松。但发现极少程序可以直观地反映其算法的流程,这才决定自己全新开发这款程序,并共享源代码(特别地,无论注册 HugeCalc 与否,RSATool.exe 的运行都无任何限制!)。
1s 内可破世界纪录的“自守数程序”
&&&&“自守数”,通俗地讲,就是能出现在自己平方“尾巴”的数。加拿大两位数学工作者利用电子计算机, 算出了 500 位的自守数, 这是当今所公认的“世界纪录”。
&&&&&&&& --- 图5
&&&&这个程序的核心算法源于 HugeCalc,可以独立运行;在我的机器(AMD 3200+,2.01 GHz,1GB RAM,WinXP SP2)上 1s 钟可计算到 2,000,000 位!
&&&&如果您对算法感兴趣,请浏览 。
可快速精确计算千万级阶乘的小程序
&&&&精确计算阶乘,可以从侧面反映一个算法库的效率,至少是大数乘法方面的。
&&&&&&&& --- 图6
&&&&上面的截图是在我的机器(AMD Dual Core 4800+,2.51 GHz,2GB RAM,WinXP SP2)上截取的,看到么,那可是精确计算四千万的阶乘!其实,更大的也不再话下,比如上面曾提到的5千万的阶乘。(参见:)
&&&&如果您对算法感兴趣,请浏览 。
&&&&因为我家有台“老爷机”配置非常烂,内存只有 64MB,每次新版本发布之前,我都要先在这台机器上测试一遍(以保证在用户低配置的机器上仍可运行顺畅),所以不得不非常吝啬地使用内存。HugeCalc 的开发理念中非常注重资源的有效利用,所以整个运行期间内存占用都很低。也许有人会说,现在内存便宜了,不必要太在意了,但我必需再提醒一句:在 32bits OS 下,用户的可用寻址空间是有限的(2GB左右),再多的内存也是惘然,超出寻址空间程序一样是会崩掉的!这是高精度计算最不情愿看到的现象。也许又有人会说,Vista 诞生了,寻址空间的瓶颈可以解决了,但我认为无论何时,合理而充分地发挥用户的资源,是开发者应具有的好品质。
方便快捷的素数生成器
&&&&许多数论爱好者,对“素数”总是情有独衷。
&&&&&&&& --- 图7
&&&&这个程序有不少独到之处:
高效的输出:这里有大量的数字需转换成字符串,由于采用了自创的算法,效率数倍于普通算法甚至更多!该技术已广泛应用于 HugeCalc 的字符转换方面;
规整的输出:当存成文件时,会自动换行,每行的列数不超过80,以方便用户打印成册;
未卜先知:任意设定一个范围,可以在零点几秒内快速计算出该范围内的素数个数,并告诉用户,如果输出,将会有多少行、多少字节,这可都是在数微秒内精确计算出来的!比如说,如果需要保存 [0,] 内的全部素数,将需要 2,206,763,134 字节,我可不希望用户来抱怨“按个回车键后就得去欣赏硬盘的嘎吱嘎吱声”,所以特别提供了上下限范围可编辑的功能,结束后,再按“”即可继续搜寻等幅大小邻域内的素数;
功能强大:当输入的“min”与“max”相等时,还可以进行因数分解;如果想计算更大的素数,请按“More...”按钮,那将是另一片无限的空间,它可以提供“随机素数”、“最邻近素数”等功能,并可显示出两个相邻素数的差值。当然这得有算法库 HugeCalc.dll 支持,要不一个仅 22.0KB 的程序也太神奇了吧:) (同样地,无论注册 HugeCalc 与否,本程序的功能都无任何限制)
分数转小数快速计算器
&&&&&&&& --- 图8
&&&&这个程序调用了算法库 HugeCalc 中的几个数论函数,功能虽然单一,但转换速度极快(因采用了多线程控制,可随时终止运算)。
专业的等幂和计算器
&&&&从下面截图显示的版本年号可看出,这是本人的早期作品。
&&&&&&&& --- 图9
&&&&它是用 VB 开发的,具有豪华的界面(甚至是度身定制自定义控件)、数以百项的快捷功能,可以从网页、Excel 表中智能提取数组,非常实用,被幻方协会推荐使用。
&&&&这是我当初自学 VB 时完成的,但我的工作需要我用 C 语言,所以当时决定终止对其的进一步开发,转而用 C/C++ 开发大数高精度算法库,不想一发而不可收!可以说,“PowCalc”是“HugeCalc”的前身,它完全是我自创的算法,为后来的开发奠定了基础。虽为 VB 开发,但却并不逊色于普通 C 程序员开发的程序,当初在网站截图上不知天高地厚地加了句“PowCalc - (可能是当前最快的)全精度计算器。”,现在您可以当是个笑话一笑而过罢了!:)
&&&&这个程序有许多独特功能,速度也非常快,我至今仍经常使用它,所以也特别将它打包进了 HugeCalc 中,免费共享给大家(如果因缺少运行库无法运行,请下载其完全安装版)。
美妙的幻方(世界纪录,首创)
&&&&在我的业余爱好中,幻方也曾占有一席之地。
&&&&&&&& --- 图10
&&&&我用自创的算法打破了多项“世界纪录”,其中不少还属于“世界首创”。“幻方”虽然体现了极佳的“数学美”,但应用领域却始终有待进一步开拓,处境比较尴尬,所以一些级别较高的刊物对幻方类作品比较抵制(我曾帮一网友在上海交大学报上发表一篇,最后甚至需徐利治数学家的亲笔推荐信才得以发表)。我虽已系列整理了大量的文稿,并开发出了系列配套软件,但鉴于当前的形式,毅然决定从“幻方”研究中抽身出来,转投新的领域。促使我做这个决定的,还有一个原因:“幻方”太易引发版权之争。因为对一个幻方改头换面实在是小菜一碟,是个是非之地。上述幻方是我
发布的一个特别“单行本”,它可以迅速构造出大量的。
&&&&在压缩包中,还有一个,高维高次幻方,世界首创,请欣赏()
如果您有什么疑问或建议,,使本专栏进一步完善,谢谢!基于对比研究的方法,考察三种实验:离线实验:此过程比较推荐技术时无须用户交互;用户调查:通过一组受试用对像使用系统,并对系统的体验做出报告;在线实验:使用真正用户群体与系统做交互;评估算法性能的基础指标:准确率、健壮性、可扩展性、类型、实时性、有效数据的可靠性、可用内存以及CPU占有率;评估推荐对总体系统的作用:如电商网站使用推荐和不使用推荐两种情况下对收入对比较,以估算推荐对网站的价值。特定属性条件下的评估:确认此属性与用户相并或影响体验,设计算法解决这些问题,当然这有可能会降低其他属性的性能;一、实验设置:实验的基本规则:假设:若我们假设算法A在准确率上高于算法B,则测试的指标就应该是准确率而非其他因素;变量控制:基于某种假设比较算法时,将其他不被测试的变量设为固定值很重要。如比较算法A和算法B的准确率,需要两种算法输入的数据池相同,以确保比较对比的算法本身,尽量刨除其他影响因素;泛化能力:结论能不仅概括当前的实验,当算法真正应用时,我们希望已有的结论在真实系统中得到保持并泛化超出我们的预期。为了增加结果的泛化可能,我们必须尝试几个数据集合应用程序,使用的数据越多样,结果就越泛化;1.1 离线实验:通常作法:收集用户选择的或打过分的物品集进行实验,模拟用户与推荐系统的交互行为;优缺点:可在低成本的情况下比较大量的算法;但范围较小;目的:过滤不恰当的算法,为成本较大的用户调研查和在线实验提供相对较小的算法候选集。尽量使算法在以后阶段时,能具有最优的参数;1.1.1 离线实验数据集:用于评估的数据集需要与期望的在线数据后的数据尽可能匹配。确保用户、物品、评分的分布没有偏置。不要剔除计数较低的用户和物品做预过滤,会造成数据偏置。随机的方法也许是一个不错的选择。1.1.2 模拟用户行为:如果我们能访问用户选择物品的时间戳,就可以模拟推荐系统的预测。可通过用户选择的时间顺序和步骤去尝试预测每个选择,并使该预测可用在将来的预测中。几种方法汇总:随机:对于大型数据数据,简单的方法就是随机,对用户操作之前的时间进行抽样,在用户操作后隐藏所有用户选择(点击、购买、评分等),再尝试推荐物品给该用户。该方法需要更改推荐前的数据,计算开销代价较大。测试用户抽样:一个代价较小的方法,对测试用进行抽样,然后抽取单一的测试时间,在测试时间过后对每个测试用户隐藏所有物品。忽略时间:另一个选择,我们先抽样一组测试用户,然后抽样选取对媚外上用户a隐藏的物品数目n,最后抽样n个需要隐藏的物品。固定数目:在很多论文中的常用方法是:使用固定数目的已知物品以及每个测试用户的固定数目的隐藏物品;使用哪种方法,须具自身应用特点按需选择。1.2 用户调查:招聘一组测试对象,对受试对象进行观察/记录行为,并收集对应评测数据。用以衡量并纠正我们之前的设想。须近可能贴近真实用户(即使尽量贴近,也仍会有偏差)。完成交互任务:要求受试对象执行一些与系统进行交互的任务,比如要求完成哪些操作;提出定性问题:如是否喜欢用户界面、完成任务是否轻松收集数据:如完成了任务的哪些部分、任务结果的准确性、执行任务的时间)。【例】 -
测试推荐对新闻资讯浏览行为的影响。作法:受试对象阅读一组他们感兴趣的故事,有些新闻包含推荐,有些不包含,通过受试者的反馈衡量推荐位是否有用,有推荐和无推荐时人们阅读的新闻是否有不同;数据:推荐的单个用户点击(单词点击);交互:眼动反馈用户是否看过这些推荐位;定性问题:推荐结果是否相关;对受试对象的分配 - 有多个候选方法时:用户A参与方法A,用户B参与方法B:比较不同用户组间的实验结果;用户A和用户B都同时参看方法A和方法B:比较所有用户,对不同方法比较的实验结果;变量调节:如推荐位置不同,可能造成实验结果偏差(如不同背景的用户,有些用户趋向于从左至右,从上至下看结果,这类用户会优先看到上面的结果),拉丁方过程,此程序将各结果位置随机化,从而抵消偏差;调查问卷:可提供一些较难评测的属性信息,如受试对象的心理状态、是否喜欢该系统;1.3 在线评估:多个算法、算法组、系统之间进行比较时,其他条件相同情况下,若一个系统的用户对此系统接纳程度高,则此系统优于其他系统;推荐实际效果取决于很多因素:用户意图:用户需要何种信息、用户在寻求多在新颖性与多大的风险;用户上下文:用户已经熟悉哪些物品、他们有多信任该系统;推荐的显示界面;注意:用户随机抽样;若关心的算法准确度,则用户界面须保持统一;若关心的是界面,底层算法必须一致;1.4 得出可靠结论:置信度 和 p值:因幸运而获得的结果概率,如果p值超过某一阈值,则算法A并不比算法B好。如果排名是在超过阈值的情况下得到的,则该实验结果不重要。习惯上取p = 0.05,即置信度为95%。是否更严格视情况而定;二、推荐系统属性:2.1 用户偏好:用户更喜欢哪个系统,及喜欢这个系统的原因;如用户A购买的物品比用户B多很多,则用户A的意见需要做加权;2.2 预测准确度:预测准确度通常独立于用户界面,可能过离线实验评估。评分预测准确度评测:预测用户对物品的评分;均方根误差(RMSE):不成比例地惩罚大的误差。适用前三个评分误差是2,第四个评分误差为0的系统;平均绝对误差(MAE):适用于一个评分误差为3、其他三个误差为0的系统;归一化均方根误差(NMRSE)、归一化平均绝对误差(NMAE):是在一定程度上归一化了的RMSE和MAE,算法结果与未归一化时相同;注:若测试集的物分布不均匀,在此测试集上计算出的RMSE和MAE会受到高频物品产生的误差的严重影响,若我们需要一个方法来代表任意物品的预测误差,则最好分别计算每个物品的MAE和RMSE,然后再取所有物品的平均值。如果测试集的用户分布不均衡,又希望推断出一个随机抽取的用户所要面临的预测误差,那么我们可以计算每个用户的平均RMSE和MAE;例:若一个应用有一个3星的评分体制,1 - 不喜欢,2 - 中间,3 - 喜欢。且推荐给用户不喜欢的物品比不给用户推荐物品更糟糕,则设d(3,1)=5,d(2,1)=3,d(3,2)=3,d(1,2)=1,d(2,3)=1,d(1,3)=2的失真测量可能是合理的;使用说通准确度评测:目的不是预测物品的评分,则是预测用户是否会感兴趣。如电影的推荐,目的是预测用户是否会喜欢这个电影。查准率与查全率:如果允许更长的推荐列表通常会提高查全率,但也可能会减少查准率。如果推荐数据量预订的,计算兴趣最有用的方法计算 TOP-N查准率。曲线:推荐数据未预订时,推荐列表量最好长度在一定范围内,而非固定值。计算查准率和查全率的比较曲线或真阴性数和假阴性数的比例曲线。前者被简化成 “查准率 - 查全率"曲线、后者被简化成“观测者操作特征” 或 ROC曲线。两种曲线都是为了计算用户偏好物品占真正推荐的物品的百分比,但前者差重于用户偏好的物品的比例,而ROC差重于最终被推荐但用户不喜欢的推荐比例;物品排名预测准确度评测:关注的不是物品的评分和用户是否会喜欢,可是据用户的偏好为物品排序。此任务称为 物品排名。排名方法:使用偏好排名:将被评分物品按评分递减排序,且排名可相同;基于可性用的排名:每个推荐的“效用”为被推荐物品的效用基于其在推荐列表中的位置打一个折扣。通常位置越靠后效用折扣越大。在线排名评估:如一个推荐列表,一页10个结果,用户点击第一页的1、3、10,然后查看了第二页。调整以下不同类型的物品排列,通常感兴趣物品排在再次推荐列表的顶部,然后未知,然后再不感兴趣。1、3、10是用户的 ”感兴趣物品“;第一页中的其他物品是用户的 ”不感兴趣物品“;第二页中的11-20是 ”未知物品“;2.3 覆盖率:物品空间覆盖率:可以推荐的物品的比例,也称目录覆盖率;如:计算所有曾经被推荐过的物品,占全部数据的百分比;再如:计算离线、在线中被推荐给用户的物品,占全部数据的百分比。为部分物品类型加权重,如流行度或效用。推荐关注度高的物品;用户空间覆盖率:有推荐结果的用户,占全部用户的百分比;用户与可推荐物品的系统的交互,所占的比例;冷启动:系统遇到 ”新用户“ 或 ”新物品“ 时的性能,因这部分主体对于系统无”某些关键依据“ 数据可用于分析,这些依据包括以下几个方面。所以有一个启发,系统可以预测冷门物品,从而减少预测热门物品的计算量。使用依据:用户对物品的点击,有些推荐系统中,点击情况会计入影响排序的 “评分”中;数据存在时间:如某些系统中,对于刚进入数据有一定的考察期,如超过1天;数据评分:如评分小于10的物品,不做为推荐候选集;2.4 其他指标:置信度:系统在推荐和预测上的可信度。针对某个物而言,如推荐一个高置信度的电影;信任度:系统对评分的信任,用户对推荐结果的信任程度。假设用户越信任推荐系统,为用户提供的推荐物品就越多;新颖度:用户推荐他们以前没有听说过的物品。最简单的方法是过滤用户已评分、使用过、已知的物品;评测方法:询问用户是否熟悉这个物品;准确度:无关的推荐也许是新颖的,但是没有意义;惊喜度:推荐对用户来说比较新颖的相关信息如用户对某明星的积极评价高,则推荐改明星的新的用户不知晓的作品就是新颖的,有时也用随机的方法。需在惊喜度和准确度中平衡;评估方法:可让用户标记他们认为非期望的推荐结果。然后尝试发掘用户是否顺从这些结果。利用时间来审视惊喜度也很重要;多样性:定义成相似性的相反面;效用:有些商务网站使用推荐系统是为了改善营销,可通过收入来判断效用;风险:如推荐股票时,我们希望能有最小的风险;健壮性:出现虚假信息时的推荐系统的稳定性;隐私:保护用户的隐私,尤其是协同算法中,不可让第三方获得用户的偏好;适应性:推荐系统须能适应物品集和很大变化或兴趣趋势经常改变的环境。通适应用户的个人偏好及用户模型的改变;可扩展性:通过增长的大数据集的实验获得,当任务进行扩展时,显示出速度和资源的消耗行为;参考文献:弗朗西斯科·里奇 (Francesco Ricci) 《推荐系统:技术、评估及高效算法》 机械工业出版社; 第1版 (日)3添加评论分享收藏您的位置:
关于快手火爆背后的算法逻辑分析,看这一篇就够了
作者: 侯奇颖
  导读:作为最早一批拿到短视频船票的产品,快手从默默无闻到饱受诟病,再到如今短视频社交领域的头牌,其背后一直有一套算法作支撑,本文将带你更深入的了解这套算法,了解快手火爆背后的终极原因。
  快手如今已不是过去那个拥有超大用户量但江湖鲜有其传说的产品了。取而代之的,是快手几个让人印象深刻的数据:估值超过 100 亿,注册用户过 6 亿,月活跃用户1. 8 亿,DAU7000 万,每日UGC视频上传 1000 万条。这些数据让它没有异议地,成为了短视频社交领域的独角兽。
  根据易观最新的报告, 2017 年 7 月短视频综合平台类App排名中,快手位列第一,MAU达1. 4049 亿人,活跃用户环比增幅2.68%。而位列第二、第三的土豆视频和火山小视频月度活跃用户均在两千余万人。
  另外,我发现快手的产品表现层上几乎没有任何改动,架构上始终只有三个Tab“关注”、“发现”和“同城”。其在App Store上的版本记录里,每次都只有两点。
  如此惊人的数据,产品前端却很简单,几乎看不到什么变动,而快手CEO宿华曾经提到过,推荐算法对快手产品影响很大,这都引发了我的好奇:从产品角度来说,到底快手凭什么长期成为短视频社交领域的头牌?它又为何选择个性化推荐算法的打法呢?
  不管一款产品如何设计,最终的目的都是争夺用户的时间,提高用户的粘性,为最终的变现铺垫。短视频产品的核心数据是点击率和使用时长,一切都是围绕着提高这两者而展开的。而无疑,快手的数据已验证了推荐算法在短视频领域里的成功。
  快手的产品思路是:
  1、交互简单易懂,反过来积极影响算法;
  2、组合各种推荐算法,覆盖用户不同需求,以达到尽可能推荐的视频都是用户想看的;
  3、架构整体规划,用户使用产品的流程中,全程都影响算法,达到产品的个性化。
  个性化推荐的目的在于通过全方位的数据,精准刻画出用户意图,针对性地给用户推荐其愿意观看的视频,提供极致的产品体验,提升视频观看率,增强用户黏性。产品的关键点就在于分析用户的意图,并将个性化的推荐结果通过巧妙的产品设计传达出来。另一方面,交互也会影响算法,由于交互界面的作用是用来搜集数据用的,实现提升推荐精准度的目的,因此交互反过来影响算法。
  一、交互影响算法
  打开快手app,在没有登录的情况下,界面非常简单,没有常见的视频类别,也没有按照视频热度的两个维度,即播放量和红心数的多少设置排行榜单,而是以瀑布流的形式展示内容。可以看到,优先展示的是红心数多的视频,有的红心数上万或上千,少数红心百位数或十位数,但视频却并非按照红心数从高到低排序,看起来完全是随机的。同时考虑视频的新鲜度,从时效性上优先展示的是一天内的视频。
  在观看了几个视频再刷新后,会展示更多相类似的视频。未登录情况下,用户只能看视频,无法进行其他任何操作。
  那么,为何不设置排行榜,且优先展示的是红心数而非播放量呢?
  我想到的原因有两点:
  1、排行榜需要更多运营的投入,同时容易培养大V,会起到主观引导流量的目的,快手不这么做,在战略上是有原因的,具体分析看下文。
  2、在我看来,播放量是没有任何情绪色彩的,而红心有。红心这个行为是比播放更核心的用户行为。从这个角度来说,这也与主流的以播放量为第一考虑要素的方式有区别,个性化推荐需要的是与用户自己有关的信息,而不是其它。
  二、推荐方法覆盖不同需求
  组合各种推荐方法,可以覆盖到用户的大部分需求。用户再根据结果操作,这些显性和隐性反馈会持续再反馈给系统,系统最终将多种反馈得到的结果,按照一定的优先级规则给到用户,最终达到1+1& 2 的效果。
  1、登录后三种不同推荐Tab,组合不同推荐方式
  在登录后,会发现有三个Tab:“关注”、“发现”和“同城”。
  默认Tab是“发现”,展示逻辑与未登录时相似;“关注”Tab里展示所有我之前关注的创作者的视频;点击“同城”,系统直接基于LBS数据匹配附近的人发布的视频,它强调的是视频生产者与观看者之间的实际距离。
  那么,为何是按照这三个Tab来呢?我想到的逻辑是这样的:
  围绕用户核心行为设计,免于教育用户的同时更有助于用户的沉淀;
  多种推荐算法重叠,弥补不同算法的缺陷,使推荐结果更加精准;
  持续维系好内容消费者和内容生产者的关系、纽带。
  首先从产品设计角度来说,好的产品不需要去特意引导用户,能简单尽量简单。快手的用户需求就是看视频,产品在设计时需要思考如何让用户更高效地看到自己愿意看的视频就好。加功能容易,但能克制不让功能繁杂却很难,这是做产品的初心,快手一直保持着。
  另一方面,这样做也与目前短视频常用的推荐算法有关。“发现”这个Tab,就是短视频常用的推荐方法:协同推荐系统和内容过滤系统这两种推荐方法结合的结果。
  协同过滤系统就是通过用户历史观看视频的行为,分析用户兴趣给出推荐。但协同过滤算法有个缺点就是不能冷启动,因此需要混合别的算法,比如内容过滤系统。内容过滤系统,给用户推荐他们之前喜欢的视频内容相似的其他视频。
  在体验的过程中我观察到,在我进行了观看、喜欢和关注几个创作者后,快手给我推荐的类似视频变多了。系统会搜集用户的显性行为,并进行优先级排序。最重要的几个显性行为包括了:点爱心、评论、观看视频长度、减少某类视频。
  在“关注”这个Tab下,根据时间维度随机展示了此前关注的创作者的视频。从用户的主要需求“看视频”这个角度来看,只用时间维度也是合理的,因为在关注这个栏目中,用户的喜好已经很明确,不需要其他的东西来干扰用户决策。从另一个角度来说,“关注”栏目的播放量,也是生产者视频未来持续曝光的一个入口。往更深了说,“关注”提供了一个让内容消费者和内容生产者能持续交流的纽带。
  内容推荐系统的核心,是计算两个视频在内容上的相似度。
  从界面上可以发现,用户录制好视频,输入一段描述性文字即可发布。系统在用户发布后会进行内容的识别和判断,然后以某些方法来划分视频,比如计算某些视频的相似度。通过视频的标题或描述、发布位置、评论等抽取某些关键词或给视频打标签,再根据某些模型计算视频相似度来进行推荐。目前看快手没有让用户自己打标签,而完全交由机器来执行。
  那么,“同城”这个Tab,即是通过用户发布时的位置,进行推荐的。目前看,主要是根据距离的远近来排序,优先排序近的。但这个栏目中,会优先展示买了头条和正在直播的用户。作用其一,是提高内容生产者的曝光可能性,其二,增加用户的社交关系链,为用户的沉淀提供更多可能。
  三、产品的个性化需求
  除了以上的三个Tab,还可以通过搜索来找自己想看的视频。
  点击页面左上角的小图标,进入到个人中心页面,在搜索框中输入某个关键词,会列出昵称中和个人介绍中含有该关键词的用户,并按照关注用户的多少进行排序。
  “标签”一列,是快手商业化变现的一种手段,这里不谈。
  除了以上说的两种主要的推荐算法,还有一种叫社会化过滤系统,根据用户在社交网络中的好友做推荐。在快手上也体现出了这点的设计,比如登录时,可以用微博或微信登录,快手可以抓取用户在微博上的数据,分析用户的喜好,有利于更了解用户。另外也可以导入手机通讯录,从而关注手机通讯录的好友,同时会根据你之前关注的人推荐另一批用户给你。
  这里我猜测有个默认的逻辑,即我关注的人关注的人可能也是我感兴趣的人,同时还有一种可能性,这两个创作者的内容有相似。
  以上说的都是从内容消费者角度看到的,从内容生产者角度来说,要想让产品持续有生命力,让视频曝光就是最关键的,我想这里涉及到了更深入的权重策略,目的就是能够平衡好新老内容创造者。
  那么,新的问题来了,为何快手是以个性化推荐的方式切入到短视频领域,而不是其他的方式?从上面的体验,我们可以得出一个结论,快手的产品是围绕社交展开的,它是一个UGC短视频信息流社交产品,使用个性化推荐的技术为用户提供视频内容。在产品的设计上,着重考虑如何让人和人之间、人和内容之间以合适的方式触达对方。那么,反推这样设计的缘由,你就能明白为什么快手要坚持以个性化推荐的方式切入到短视频领域了。
  1、目标用户群定位,差异化竞争
  要想让自己立足,就要做差异化竞争,但如何差异化需要思考三个点:
  目标用户是谁,用户的需求核心;
  竞争对手最薄弱的地方;
  自己最大的优势。
  秒拍借助微博拥有粉丝效应的明星资源,美拍的群体主要是年轻女性,定位精准成为了他们的优点,但也同样变成了弱点——无法发力城市的边缘人群和二三线城市的用户。
  另一方面,快手CEO宿华的背景就是搜索和推荐算法方面的大牛,这是他们切入短视频领域很好的一个技术优势。产品要想快速形成优势,技术优势是很难超越的一个点。
  另外,个性化推荐能有效地让内容生产者和内容消费者之间快速连接,形成强纽带。有助于产品用户量快速上升。
  当然,上面这些点还不足以佐证快手转型短视频领域的原因。我个人更愿意相信,这是创始团队的战略眼光。看到了短视频领域未来的趋势。
  2、人和内容之间更好交互的需要
  社交就是一个圈子,个性化推荐最终会让内容的生产者和内容消费者进入到一个自己创造出来的只属于自己的圈子。短视频社交的目的当然也是为了更好的沉淀用户,提高留存。物以类聚,人以群分,说到底,我们不仅是看视频,而是通过看视频不断的感受自我存在感。个性化推荐从某种角度来说,会让我们找到跟我们相似的人,而这会增加用户留下来的可能性。
  3、冷启动的需要
  不设分类,不按照一定规则进行排序,去中心化的内容分发形式,其实是快手早期冷启动的需要,也是非常有效的方法。当快手在转型之初,会面临视频内容数量不足和质量不优的双重问题,因此需要一种产品形态,既可以满足冷启动的需要,同时又能让用户持续对产品有兴趣。
  在产品策略上,选择去中心化的内容分发形式加个性化推荐,是从产品战略角度出发的,这个在后文会提到。而推荐系统需要根据用户的历史行为和兴趣倾向来预测用户未来的行为和兴趣,因此在没有大量的数据为推荐做先决条件之前,就需要考虑这个冷启动的问题。
  4、提供用户最有用信息的需要
  如果要做UGC的信息流产品就必然面临着随着时间迁移,数据量越来越多,用户就会面临信息过载的问题。推荐算法的目的之一,就是从海量的数据中过滤出对自己有用的信息。而快手的三个Tab的设计和个性化的推荐方式,某一方面来说,不仅是产品围绕社交设计的需要,更是出于信息过滤的考虑而设计的。
  5、内容生产者和消费者之间的良性循环
  算法的核心是理解,理解用户、理解内容、理解彼此之间如何交互,再根据理解进行匹配。如前文所说,最终需要着重考虑如何让人和人之间、人和内容之间以合适的方式触达对方。UGC视频数量巨大,从用户的角度而言,推荐系统的目的,就是为了帮助两类用户:
  一类是内容消费者,在面对海量信息时,提供更符合消费者喜好的内容,帮助找到自己真正感兴趣的内容,并带给对方惊喜的体验。
  另一类就是内容生产者的角度,目的就是能够顺利帮助他们曝光内容,得到广大用户的关注。
  从平台的角度来说,作为一个UGC短视频社交平台,最重要的就是用户粘性,也就是需要提高并持续保持住自己的流量,唯一要做的,就是能够让内容生产者和消费者之间形成有效流转的闭环,实现内容消费者和生产者之间的双赢。
  个性化推荐的做法,让内容生产者明确自己的商业变现方法,即人人都有机会成为网红,都有机会变现。内容和用户的高度匹配,能够持续不断的吸引更多创作者创造优质内容,从而吸引更多消费者,而良好的用户反馈则反之促进内容生产者的生产,各取所需。
  6、平台价值的考虑
  短视频的趋势是去中心化的分发方式,过去,编导、编辑主导着内容的分发,但这样会导致其他内容质量不是很高的视频难以曝光,无法获得一定的流量支持。这样的个性化推荐方式,人工运营的极少干预,真正做到千人千面的同时,还能持续培养一大批拥有规模不大不小的网红,产品持续拥有自我造血能力的同时,也不至于像注重传播属性的平台,虽然打造出了一些大V,但也因此出现了马太效应,且到最后,平台容易被大V裹挟,步入不上不下的尴尬境地。
  而快手的这种做法,恰恰使得平台的价值没有被削弱,这让我想起了宿华说的,做产品就是希望用户不要感知快手的存在,而是感知这个世界的存在。快手的口号是记录生活,既然是记录生活,自然是展示最真实的生活原貌,因此你看到的视频才会是多元化的、但真实不刻意的。
  四、写在最后
  其实到了如今,快手早已过了高速增长期,转而进入了成熟期。成熟期的产品不约而同都需要考虑如何挖掘现有流量的价值。尽管目前快手流量大,但未来肯定需要在产品上考虑如何实现更多变现的可能,那么当前的算法就会制约它的发展,除非其在产品形态和模式上有更多创新。
  几年内,不管快手会如何出手,短视频领域的竞争只会越来越激烈。我想,向海外扩张和对当前内容价值的深挖,或许都是快手必然会做的。
(转载请保留)
您刚刚看过
互联网的一些事,已超50万小伙伴关注!

我要回帖

更多关于 高效率组合算法 的文章

 

随机推荐