药剂学论文,赤焰战场2下载,周华健新歌
在 《程序员》12月刊A中,我们介绍了POI(兴趣点)的设计及其搜索。由于推荐系统是兴趣点系统的核心,所以接下来,我们将介绍推荐系统。推荐系统是一个很庞大的课题,将分成两期予以介绍:本期讲述推荐系统的设计方法,包含推荐系统的数学基础和设计原理。
关于推荐系统有很多经典的应用,比如:淘宝/天猫/亚马逊上的商品都是通过推荐系统来排列的;各种音乐应用(比如网易云音乐或者虾米音乐)都是按照推荐系统的原理来向用户推荐音乐的;今日头条等新闻推荐应用已经充分说明了新闻推荐的力量;Netflix的电影推荐技术也为优酷/搜狐等视频应用指明了道路。LBS应用的推荐系统的原理与这些典型的推荐系统应用的基本原理相同,比如:美团/糯米的兴趣点推荐,淘宝/支付宝口碑的兴趣点推荐。
希望通过这两期的介绍,读者可以明白一个推荐系统的设计原理,以及如何应用。在本期中我们将首先讲述推荐系统的前世今生,之后讲述推荐系统的数学基础,最后讲述推荐系统的设计原理。
推荐系统的前世今生
随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。
搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当用户无法准确描述自己的需求时,搜索引擎的筛选效果将大打折扣,而用户将自己的需求和意图转化成关键词的过程本身就是一个并不轻松的过程。
在此背景下,推荐系统出现了,推荐系统是一种利用历史数据的关联分析,是一种通过对用户的行为数据进行挖掘,从而向用户推荐有用的信息技术。推荐系统是最典型的数据挖掘应用,也是知名度最高的数据挖掘应用。
推荐系统的任务就是解决上述的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对他感兴趣的人群中,从而实现信息提供商与用户的双赢。
推荐系统的数学基础
推荐系同的数学基础是距离,和相关系数。距离和相关系数的本质都是相似度。距离用来表示两个(组)散乱数据间的相似度;而相关系数用来表示两组近似线性的数据的相似度。相似度计算是各种数据挖掘算法的主要数学基础。比如:聚类算法中往往是利用数据间的彼此距离或者相关系数进行计算的。基于实例的学习中的K近邻算法,及关联分析也是利用距离或相关系数作为数据基础的。各种推荐算法在本质上只是某一种计算相关系数的方法而已。限于篇幅,以下仅介绍几种常见距离和相关系数,其他详细内容,可参见我撰写的《LBS核心技术揭秘》一书。
距离
距离是聚类的基础,是最重要的数据挖掘中最重要的概念之一,也是衡量相似度的主要指标之一。距离有很多种,各种距离的应用场景可以简单概括为:
- 空间:欧氏距离;
- 路径:曼哈顿距离;
- 国际象棋国王:切比雪夫距离;
- 欧氏距离、曼哈顿距离、切比雪夫距离三种距离的统一形式:闵可夫斯基距离;
- 加权:标准化欧氏距离;
- 排除量纲和依存:马氏距离;
- 编码差别:汉明距离。
在各种距离中,闵可夫斯基距离是最常见的一种距离。
1.闵可夫斯基距离
两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离(Minkowski Distance)定义为:
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。
(1)欧氏距离。最常见的两点之间或多点之间的距离表示法又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,...,xn)
和 y = (y1,...,yn) 之间的距离为:
- 二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:
- 三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:
也可以用表示成向量运算的形式:
标准化欧氏距离(Standardized Euclidean distance)是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。
假设样本集X的数学期望或均值(mean)为m,标准差(standard deviation,方差开根)为s,那么X的“标准化变量”X*表示为:(X-m)/s,而且标准化变量的数学期望为0,方差为1。
即样本集的标准化过程(standardization)用公式描述就是:
标准化后的值=(标准化前的值-分量的均值) /分量的标准差
超越Web:2015年的JavaScript
感谢对《》一文的翻译。