《推荐系统:技术、评估及高效算法》一2.6 总结

2.6 总结

本章介绍了在设计推荐系统中可能用到的主要的数据挖掘方法和技术。我们也总结了在文献中提到的用法,提供了如何以及在哪用到它们一些粗略指导。

我们从综述在预处理步骤可能用到的技术开始。首先,2.2.1节回顾了如何选择合适的距离衡量指标。在后面的步骤中大部分的方法需要它。余弦相似度和皮尔逊相关度是一般可接受最好的选择。尽管付出了许多的努力来提高这些距离指标,但是最近的工作似乎表明距离函数的选择不是这么重要。然后,在2.2.2节回顾了最基础的抽样,其应用是为了选择原始大数据集的子集,或者是划分训练和测试集。最后,我们讨论降维技术的使用,诸如,在2.2.3节中主成分分析(PCA)和奇异值分解(SVD)作为一种方法来解决维度灾难问题。我们解释了一些使用降维技术的成功案例,特别是在Netflix大奖的环境中。

在2.3节中,我们回顾了主要的分类方法:即近邻,决策树,基于规则分类,贝叶斯网络,人工神经网络,支持向量机。我们看到,尽管kNN(见2.3.1节)的CF是首选的方法,但是所有这些方法都可以应用在不同的环境中。决策树(见2.3.2节)可以被用来导出基于物品内容的模型或者是模拟系统的特殊部分。决策规则(见2.3.3节)可以从预先存在的决策树中推导出,或者是被用来引入商业或者是领域知识。贝叶斯网络(见2.3.4节)是基于内容的推荐中一个流行的方法,但它也可以用来生成一个基于模型的协同过滤系统。类似的方法,人工神经网络能够被用来导出基于模型的推荐,也可以用来结合/混合其他几种算法。最后,支持向量机(见2.3.6节)作为一种方法来推断出基于内容的分类或者是导出CF模型而流行。

对于推荐系统来说,选择合适的分类器不容易,尤其是一些感知判断任务和数据依赖的情况下。在CF的案例中,一些结果似乎表明基于模型方法,使用如SVM或者是贝叶斯网络,能够稍微提高标准kNN分类的性能。但是,这些结果不显著并且很难推广。在基于内容的推荐系统的例子中有些证据表明,在一些例子中贝叶斯网络执行效果比简单方法要好,如决策树。但是,更加复杂的非线性分类,如ANN或SVM,执行效果是否更好还不是很清楚。

因此,给特定的推荐任务选择合适分类器在今天仍有许多探索的地方。实际的经验规则是从最简单的方法做起,并且只有在性能的提升值得时才采用复杂方法。性能增益应该平衡不同的维度,如预测精确度或计算效率。

我们在2.4节中回顾了聚类算法。聚类在推荐系统中一般被用来提高性能。不管是在用户空间还是物品空间,较早进行聚类步骤都能减少随后要做的计算距离的操作数量。但是,这一般以较低的精确度为代价,所以处理时要慎重。事实上,通过使用降维技术(如SVD)提高效率在一般的例子中是好的选择。与分类相反,没有那么多的聚类算法在推荐系统的环境中使用。k-means(见2.4.1节)算法由于简单和相对有效,很难找到实用的替代者。我们在2.4.2节中综述了它们中一些算法,如分层聚类或消息传递算法。尽管这些技术还没有应用在推荐系统中,但为将来的研究提供了有希望的出路。
最后,在2.5节中,我们描述了关联规则并总结了它们在推荐系统的使用。关联规则为推荐物品提供了直观的框架,只要有一个显式或隐式的事务。尽管存在有效的算法来计算关联规则,而且已经被证明比标准kNN的CF准确率好,但是他们仍不是受青睐的方法。

在设计推荐系统中选择正确的数据挖掘技术是一个复杂的任务,其一定受许多特殊问题约束。但是,我们希望本章中技术和经验的简短综述能够帮助读者做出更加合理的决定。除此之外,我们也发现了有待进一步提高的领域和令人兴奋的研究点,以及接下来有待研究的相关研究点。

时间: 2024-10-31 13:45:43

《推荐系统:技术、评估及高效算法》一2.6 总结的相关文章

《Node.js区块链开发》——2.2 信用,决定着利益转移的方向

2.2 信用,决定着利益转移的方向 与他人谈起区块链时,不止一次谈到"信用"这个话题,每一次我都会有更加深刻的理解.第一次明确地谈信用,起源于一个公司反复地声明一件事情,但是除了声明,也没有更好的办法向公众表明自己,反而越声明越被动.于是,我在网上发表了一篇文章<请尽早把你的信誉区块链化>(见2.7节),其核心观点是学习区块链的处理方式积累个人或公司的信用. 这里再次提及这个话题,原因是我在写下前面部分的时候,突然发觉单纯地讲未来趋势会如何没有任何说服力,其中缺少潜在的源动

《Node.js区块链开发》一2.2 信用,决定着利益转移的方向

2.2 信用,决定着利益转移的方向 与他人谈起区块链时,不止一次谈到"信用"这个话题,每一次我都会有更加深刻的理解.第一次明确地谈信用,起源于一个公司反复地声明一件事情,但是除了声明,也没有更好的办法向公众表明自己,反而越声明越被动.于是,我在网上发表了一篇文章<请尽早把你的信誉区块链化>(见2.7节),其核心观点是学习区块链的处理方式积累个人或公司的信用. 这里再次提及这个话题,原因是我在写下前面部分的时候,突然发觉单纯地讲未来趋势会如何没有任何说服力,其中缺少潜在的源动

《Node.js区块链开发》导读

Preface 前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是

《Node.js区块链开发》一导读

前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是血,要么是汗,要

《Node.js区块链开发》——1.4 加密货币可靠吗

1. 1.4 加密货币可靠吗 从上面的讨论中,我们可以了解加密货币是怎么回事了,但是你可能仍然会怀疑加密货币的实用性,它真的可靠吗?这是最初很多人都会问的问题.结论当然是可靠的,但是要解释清楚为什么,就要动用很多技术和理论.还好,这些技术和理论,都是目前成熟的技术.您只要认为它们是可靠的,那么下面的解释就很好理解,不然,要想说服自己,接受加密货币比一些网站的数字币更可靠,那还是很难的. 1.去中心化 首先我们需要明白什么是"中心化".目前,我们通过浏览器浏览的各大网站,都是中心化的,必

《Node.js区块链开发》——导读

前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是血,要么是汗,要

《Node.js区块链开发》——第2章 区块链,承载人类信用的基石2.1 利益,现实世界的内在驱动力

第2章 区块链,承载人类信用的基石 第1章的内容在网上一经发布就吸引了很多关注,说明很多小伙伴因为对加密货币不了解,或者有误解,所以才会敬而远之,错失良机. 继续第1章的内容,本章仍将通过直白的语言来讲解技术原理.所涉及的内容包括现实世界的内在驱动力.未来趋势.应用场景和风险提示等. 2.1 利益,现实世界的内在驱动力 人活着到底是为了什么?我们每个人可能都问过自己这个问题.我们有时候踌躇满志,有时候又崇尚与世无争,无忧无虑.但在纷繁复杂的真实世界里,我们总会被某个力量牵引着,挣脱不开,欲罢不能

《Node.js区块链开发》——2.3 未来趋势

2.3 未来趋势 比特币之前,人类从来都无法完全控制"利益"的走向,比特币之后,人们终于可以对"利益"转移进行编程处理,这将给人类的未来带来无限的可能.这种编程技术就是区块链. 去中心化.分布式存在以及人类社会的基本形态,是个体交换的基本前提.之所以区块链被提出来,不是因为这项技术有多先进,而是现有的技术过于落后.P2P网络.加密解密和分布式存储等技术的出现,都是人类在某个阶段为解决特定问题而设计出来的,组合在一起成为区块链技术,开发出各类加密货币,更接近于人类的本

《Node.js区块链开发》一2.3 未来趋势

2.3 未来趋势 比特币之前,人类从来都无法完全控制"利益"的走向,比特币之后,人们终于可以对"利益"转移进行编程处理,这将给人类的未来带来无限的可能.这种编程技术就是区块链. 去中心化.分布式存在以及人类社会的基本形态,是个体交换的基本前提.之所以区块链被提出来,不是因为这项技术有多先进,而是现有的技术过于落后.P2P网络.加密解密和分布式存储等技术的出现,都是人类在某个阶段为解决特定问题而设计出来的,组合在一起成为区块链技术,开发出各类加密货币,更接近于人类的本

《Node.js区块链开发》——第3章 共识机制,可编程的利益转移规则 3.1 机制,左右产品走向的根源

第3章 共识机制,可编程的利益转移规则 前面两章曾经说过,区块链产品都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点呢?又有哪些激励机制呢?同时,开发的重点是让多个节点维护一个数据库,那么如何决定写入哪个节点?何时写入?一旦写入,又如何保证不被其他的节点更改(不可逆)呢?回答这些问题的答案就是共识机制. 共识机制,可编程的利益转移规则.谈到共识机制,不得不说的是,编程开发这么多年,我们尝试过很多方法,试图通过某种激励手段提高用户黏性以留住用户.比如常见的积分机制