您好, 访客   登录/注册

推荐系统中的算法

来源:用户上传      作者:

  摘 要:近些年随着大数据时代的来临,人们对于信息的需求量日益增多。那么,由此产生的一个自然的问题是:我们如何在浩瀚的数据海洋中尽可能准确地找到自己所感兴趣的内容呢?由此,在计算机科学领域中便产生了一个特定的研究领域——个性化的推荐系统。而推荐算法正是推荐系统的核心所在。个性化的推荐系统运用在生活的不同领域中,它主要是利用用户的行为数据和其之相关的物品属性等,通过特定的数学算法来达到向用户推荐所感兴趣信息的目的。现代个性化的推荐系统所利用的推荐算法可以分为4种,在这篇论文中,我们将分别来讨论这四种不同的推荐算法的特征。
  关键词:数学;理论计算机科学;推荐系统;算法
  1 导引
  数学是计算机科学的基础。在二十世纪六、七十年代时,计算机科学在当时仅仅数学的一个分支。一个很典型的例子,便是世界上第一个计算机科学的博士霍兰德,在密歇根大学攻读博士学位时,一开始便是学习的是数学专业,后来转到了密歇根大学新成立的计算机与通信科学系,而这也成为世界上第一个真正的计算机科学系。
  当时光进展到二十一世纪时,计算机科学这个领域已经拥有了非常广阔的研究领域与众多不同方向的科研人员。而此时,计算机科学在很多方面地发展,已经开始从相反的方向来推动数学的发展。但是,在其中,一个始终没有发生变化的核心主题便是,计算机科学的数学基础,也就是理论计算机科学。
  理论计算机科学的一个重要的研究课题便是设计适应于计算机科学中的各种不同应用场景的算法。算法指的是程序员通过特定的计算机语言,输入计算机系统中的一系列解决特定问题的清晰而明确的指令,使得计算机能够在有限的时间以内得出所符合设计要求的计算结果。
  一个特定的算法都必须具备自己的要素(数据对象的运算和操作)以及五个基本特征(有穷性,确切性,输入,输出项及可行性)。
  在这篇论文中,我们主要通过机器学习中的现代个性化的推荐系统这个主题,去尝试讨论四种不同的推荐算法的特征。
  2 推荐算法
  计算机与网络早已经融入到了我们的日常的生活、学习、生活中,成为了我们不可或缺的助手与朋友。随着近四、五十年计算机科学的高速发展,计算机与网络已经彻底改变了我们的日常生活、学习、工作习惯。
  智能化是理论计算机科学研究的一个主要目标,近些年来的实践已经充分证明,机器学习的方法虽然在一些特定的问题环境下还存在一些局限性,但是总体来说它是当前实现智能化这个目标最有效的一个方法。
  学习仅仅是计算机科学中的一个专门术语,用更为严格的数学语言来说,学习即是统计的意思。机器学习,简单地说,仅仅是利用计算机这个平台,利用统计学的方法,去对数据集进行分析与归纳。现代个性化的推荐系统便是机器学习中的一个重要的主题,也是我们日常生活中较为熟悉的一个机器学习的贴切的例子。推荐算法是推荐系统的核心所在,一个特定的算法本质上就是一个计算的过程。推荐算法的计算主要来自于数学中的线性代数与概率统计,其中一个核心的概念,便是矩阵。
  正如我们上面所提到,机器学习中的学习的意思等价于概率论中的统计,那么构成机器学习理论的一个重要数学分支是概率统计便不会让人感到太奇怪。但是,另一方面,什么是矩阵?什么是线性代数呢?矩阵这个词看似十分的抽象,事实上,一个矩阵仅仅是一个数或者文字的一个排列而构成的一张表格。我们可以对矩阵定义加法,减法,乘法等等基本的运算。通过这些计算的规则去研究矩阵的各种性质的学科,便是线性代数。
  在日常生活中,许许多多的APP或者各式各样的网站会根据顾客的浏览历史记录或是其他的相关数据,较为准确的给顾客们推荐他们所感兴趣的内容,例如网易云音乐的每日推荐和亚马逊的推荐读物等等。这些看似神奇的推荐应用背后其实都仅仅是依靠着特定的推荐算法来实现的。
  正如我们在第一节的最后所总结的一样,推荐系统中的各种算法也具备算法的基本条件,但它们的特别之处在于它们是在通过一个特定的矩阵来分析各个用户的行为数据而得到的一些相关的统计结果(如下图所示),这其实就是为什么推荐系统一般能够准确的得出一个人的喜好的背后原理所在。
  上面的统计图代表了一个虚构的音乐收集矩阵。不同的数字所代表的意义如下:单曲循环=5,分享=4,收藏=3,主动播放=2,听完=1 拉黑=-5如此类推。最后把得分最高的歌曲推荐给相应的用户即可(如下图所示)
  一个矩阵也许很复杂,线性代数中的一个常用的方法,便是把矩阵分解成一些更简单的矩阵的乘积,通过研究这些更简单的矩阵,来得到原始矩阵的一些有用的性质。矩阵的UV分解是线性代数中分解一个矩阵的经典的方法,我们在这里不做详细地解释,但是我们推荐对此感興趣的读者去参看参考文献[2]中的第二章。
  利用矩阵的UV分解将每个用户的潜在因子求出,再利用解析几何中高维欧几里得空间中两个向量夹角的余弦公式相乘就可以得出得分矩阵。于是系统把得分最高的歌曲推荐给相应的用户即可(如下图示,统计图中的红色的字体即代表推荐的歌曲)
  现代个性化的推荐系统所利用的推荐算法主要可以分为4种,在下面,我们将分别来讨论这四种不同的推荐算法的特征。此外,在一些特定的问题中,还会涉及到一些非传统的,并不常用的推荐算法,限于篇幅,我们在这篇文章中暂不介绍,感兴趣的读者可以参看参考文献[1]中的相应章节。
  第一种方法是基于对象的行为数据的协同过滤算法(Collaborative Filtering,CF)。通过在对象的历史行为(例如用户的浏览记录,购买记录等等)归纳出一种特定的模式,再通过这些行为记录,利用一些基本的统计知识来分析这些用户的历史行为与产品的相似度。最后推荐将相似度最高且此用户未浏览过的内容推荐给用户。这种算法可依据收集的用户的历史数据,来推荐世界上的任何一种东西。这个算法的实施步骤主要来说可分为三个主要的阶段:(1)收集、分析各个用户的行为记录。(2)寻找相近用户。也就是找到和该用户相似度最高的用户。为了达到该目的,一般会使用调整余弦相似性来计算。   (3)推荐。将计算得出相似度最高的产品且该用户当前没有浏览过的产品推荐给该用户即可。这个算法的优点是所需要的产品的知识较少,推荐内容准确,推荐领域较广等等。但它的缺点是强烈地依赖用户反馈的准确性和数量,新用户无法得到相应的反馈等。
  第二种的推荐算法是基于流行度:这种算法是现在的机器学习应用领域中最为常见也是当前应用得最为广泛的算法。原因是因为这个算法的运算方式非常简便迅捷。将各个项目的流行度进行排序,再将排行靠前的流行项目推荐给用户即可。例如微博的热搜,音乐APP中的最热歌曲,各大新闻等。这个算法的优点是算法简单,操作简便快捷,推荐内容适用于大众和新用户。而它的缺点是不能推荐相对个性化的内容和领域。
  第三种算法是基于内容的推荐算法。假如我是一款系列游戏的爱好者,当游戏商更新了这个游戏新的一个版本时,那么我一定会很感兴趣,但以上的两种算法都不太可能将这个更新结果推荐给我。那么这时候就会利用基于内容的推荐算法。它的理论依据主要来源于信息的过滤和检索。通过分析用户的历史搜索记录或是其他的相关的历史行为数据,从中提取关键字标签,如下图示
  然后推荐系统将这些标签视作属性,将用户与数据视为欧几里得空间中的不同向量想,系统计算出各个向量的距离,这个距离就从数值上反应了内容与用户的相似度了。这個算法的优点是能够比较好的解决冷启动问题,也不会被流行度所限制,因为算法本身是直接根据内容来进行检索。而它的 缺点是过度专业化,需要较高的产品知识与庞大的数据构造分类器。基于内容的推荐算法会一直根据标签给用户推荐与他们密切相关的内容,而使得推荐失去了原本的多样性。
  最后一种推荐算法是基于模型的推荐算法。基于模型的推荐算法有不同的具体实施过程,而且他们几乎都用到了机器学习中的一些经典的方法。一般最简单的基于模型的方法是logistics回归预测,推荐系统通过分析用户的历史购买、浏览记录等行为数据,得出有限多个影响用户的特征属性,例如性别,年龄,地区等等。用一个变量来代表着用户对特定产品的喜好程度。于是,这些数据形成了一个二维平面中的散点图,推荐系统通过线性回归拟合出一个近似函数,函数上的点来近似这些统计数据。接着系统再分别算出这些特征属性所对应的系数,便可以得出对应物品的权重值,权重值越大就代表这个产品对用户越重要。基于模型的算法十分快速,一般用于新闻和广告领域,它的优点是推荐的内容可以多样化,而它的缺点则是算法局限于时效性。
  3 总结和将来的工作
  机器学习中的现代个性化的推荐系统与我们的日常生活有着密不可分的联系,它使我们的眼界更加开拓。随着现代计算机科学地迅速发展,推荐系统中的核心——推荐算法也在不断的发展,但每一种算法都还是存在着一定的局限性。在将来的工作中我们可以注重在技术方面上解决这些问题,通过更深入地学习数学与理论计算机科学知识,去尝试设计更好的推荐算法,使得推荐系统可以更加成熟。
  参考文献:
  [1]李航,统计学习方法,第1版,北京:清华大学出版社,2012.
  [2]伊恩·古德费洛,约书亚·本吉奥,与亚伦·库维尔,深度学习,第1版,人民邮电出版社,2017.
转载注明来源:https://www.xzbu.com/1/view-15324076.htm