如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化。相关内容推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐就是我们常说的购物篮分析,即使用购买了某商品的用户同时购买了什么这个规则来发现商品间的潜在联系,之前有相关的文章介绍——向上营销、交叉营销与关联推荐;关联推荐是基于用户行为分析的推荐,而相关内容推荐是基于内容固有特征的推荐,只与内容本身有关,与用户的行为完全无关,所以相关内容推荐的模型是一种“冷启动”的算法,不需要任何历史浏览访问数据的支持。
内容固有属性
相关内容推荐因为完全不借助用户浏览行为的数据,所以底层数据不依赖于网站的点击流日志,唯一的基础数据就是内容的固有属性及完整信息。我们以豆瓣网的几大块内容为例来看看对于这些内容一般包含哪些固有属性:
书籍-书名、作者、出版时间、出版社、分类、标签
音乐-专辑名、歌手、发行时间、发行方、风格流派、标签
电影-电影名称、导演、演员、上映时间、制片方、类型、标签
豆瓣很多地方都使用了“标签”这个词,用贴标签的形式来完成内容的分类和标识,但其实标签又分为很多种,有些标签是在内容生成时就被贴上的,有些可能是后续用户贴上去的,而且豆瓣一般为内容和标签定义了原始分类,如书籍分为文学、流行、文化……既然分类和标签内容源生就带有,那同样可以作为内容的固有属性。
还需要说明的是,这里不涉及文本挖掘和字符切分模糊匹配等问题,因此内容的标题、简介和全文不参与文本相似度的分析,虽然这些可能在构建完整的相关内容模型中不可缺少,但这里只考虑一些固有属性是否相同实现简单应用。基于上述豆瓣几类内容的属性特征,选择和整理适合分析的内容属性如下:
“作者”就是指内容的创造者,“来源”指内容的发布方或获取渠道,“分类”为内容归属的类别,“标签”可以包含对内容的各类描述信息和关键词等。这里为了能够尽可能清晰地描述整个分析模型和思路只选取了大部分内容都包含的一些属性,如果要构建更加高效的相关内容分析模型,需要更完整的内容属性,可以根据自身内容的特征进行属性的定义和选取。
KNN算法及应用
KNN(K-Nearest Neighbor algorithm),K最近邻算法,通过计算样本个体间的距离或者相似度寻找与每个样本个体最相近的K个个体,算法的时间复杂度跟样本的个数直接相关,需要完成一次两两比较的过程。KNN一般被用于分类算法,在给定分类规则的训练集的基础上对总体的样本进行分类,是一种监督学习(Supervised learning)方法。
KNN
这里我们不用KNN来实现分类,我们使用KNN最原始的算法思路,即为每个内容寻找K个与其最相似的内容,并推荐给用户。相当于每个内容之间都会完成一次两两比较的过程,如果你的网站有n个内容,那么算法的时间复杂度为Cn2,即n(n-1)/2。但是用内容固有属性有一个好处就是因为固有属性一旦创建后基本保持不变,因此算法输出的数据一旦计算好之后不需要重复计算去刷新,也就是对于网站内容而言,原有内容的数据在首次初始化之后可以不断重复使用,只要更新新增内容的数据就可以,数据的统计计算可以使用增量更新的形式,这样可以有效地减少服务器的计算压力。
相关内容模型
有了基础数据和算法的支持,我们就可以创建数据模型了。先看下基础数据的类型,作者、分类、来源和标签都是字符型,其中作者、分类、来源基本可以当做是单个值的属性,标签一般包含多个值。首先由于都是字符可以确定属性之间相似性的判定只能通过“是否相同”,无法体现数值上的差异,所以对于作者、分类、来源这几个单值属性而言,比较的结果就是一个布尔型的度量,相同或者不相同;对于标签这个多值属性可以考虑使用Jaccard相关系数,但因为每个内容标签的个数存在较大差异,使用验证后的结果并不理想,所以不考虑使用(当然,如果内容的标签个数比较固定,Jaccard相关系数是有效的)。因此,直接创建加权相似度模型如下,首先是标签的相似度分值设定:
即根据相同标签数目确定一个相似度的分值(相同标签数越多分值越大)
再结合作者、分类和来源,通过加权某一个属性的分值
将所有属性加权相似度分值的结果相加应该分布在[0,100],分值越高说明内容间的相似度越高。对于这种简单的加权相似度评分模型,估计又有很多人要问权重是怎么确定的,确实,这里的权重并没有通过任何定量分析模型的方法去计算,只是简单的经验估计,但估计的过程经过反复地调整和优化,也就是不断地尝试调整各属性的权重系数并输出结果,抽样检验结果是否符合预期、是否有提升优化的空间。
使用一定的算法将以上两个分值整合计算最终确定一个分值,就是这个商品的最终相似度分值。
基于上述内容间相似度的计算结果,套用KNN的原理实现相关内容推荐就异常简单了,只要根据每个内容与之比较的所有内容的相似度分值降序排列取前K个内容作为该内容的最相关内容推荐给用户就可以了。当然中间可能会涉及相同相似度分值的内容如何排序的问题(因为模型的关系分值分布可能不会很离散),建议如果相似度分值相同使用随机排序,以保证推荐结果有一定的变化,均匀内容的曝光。
当然在电商推荐我们通常有更好的应用,因为电商在录入商品的时肯定已经分好了大的分类,在一个大的分类中计算的数据量会明显减少,仅仅需要按照标签打分即可,有标签定为1分,没有定为0分,这样我们就不用考虑分类,可以对作者等标签加权,使用简单的Jaccard相似系数来计算商品之间的相似度了。排序后就是推荐相似商品的数据了。
相关距离公式的计算可以看这篇文章:http://liyonghui160com.iteye.com/admin/blogs/2084557
相关推荐
通过分析这些文件,我们可以深入理解KNN如何应用到电影推荐系统中,以及如何调整参数以提升推荐的准确性和个性化程度。这不仅有助于我们掌握KNN算法的实际应用,还能了解推荐系统的设计与实现流程。
- 在推荐系统中,基于用户或物品的KNN可以进行相似度匹配,推荐相似的物品或找到兴趣相近的用户。 - 在医疗诊断中,KNN可以帮助医生根据病人的特征预测疾病类型。 - 在市场细分和客户分类中,KNN可以帮助企业了解...
KNN推荐算法是协同过滤(Collaborative Filtering, CF)的一种,广泛应用于个性化推荐系统,例如电影、商品或音乐推荐。 一、KNN推荐算法概述 KNN推荐算法基于用户的历史行为数据,寻找与目标用户最相似的K个邻居,...
总之,推荐系统是数据分析和机器学习在实际应用中的重要体现,通过皮尔逊相关系数和KNN等算法,我们可以为用户提供更精准、个性化的推荐,从而提升用户体验和商业价值。在深入理解这些算法的基础上,不断优化和创新...
**KNN分类系统详解** KNN,全称为K-Nearest Neighbors,是机器学习领域中最基础且重要的算法之一,属于监督学习中的懒惰学习(Lazy Learning)类别。该算法的核心思想是通过寻找数据集中与待分类样本最近的K个邻居...
人工智能和机器学习之分类算法:K近邻算法(KNN):KNN在推荐系统中的应用.docx
Python使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 详细介绍了一些Python框架的各种功能和模块,以及如何使用Python进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者...
- 推荐系统:预测用户可能喜欢的商品或服务。 - 信用评估:根据历史记录预测用户的信用风险。 - 医疗诊断:根据病人的特征预测疾病类型。 7. **代码实现** 实现KNN算法可以使用Python的scikit-learn库,其内置...
基于用户协同过滤算法被广泛地应用在煤炭推荐系统中,基于项目的 KNN协同过滤算法是通过分析产品之间的相似性完成聚类并推荐。传统的基于项目的 KNN协同过滤算法对现有的海量规模的煤炭系统中的销售记录数据不能高效...
《基于 KNN 算法识别水果种类系统的设计与实现》 KNN(K-Nearest Neighbor)算法是一种常见的监督学习方法,...同时,KNN算法的实践也为机器学习初学者提供了良好的学习案例,帮助理解分类算法的工作原理和实际应用。
这在推荐系统中非常有用,例如电子商务网站可以根据用户历史行为推荐相似用户购买过的产品。 在邮件过滤场景中,KNN 算法可以用来区分垃圾邮件和正常邮件。然而,传统的KNN可能过于保守,容易误判正常邮件为垃圾...
文中,将采用基于特征选择的KNN分类算法应用到煤炭勘探分类预测工作中,该方法首先选择煤炭分类中有价值的特征属性,并使用KNN算法完成分类工作.该算法可以有效地提高煤炭分类预测工作的效率,并且有助于煤炭后续的保存...
KNN不仅可以用于车辆信息检测,还可广泛应用于图像识别、文本分类、推荐系统等领域。随着大数据和计算能力的提升,KNN算法在实际应用中仍有很大潜力。 通过以上分析,我们可以看出KNN算法在车辆信息检测中的应用...
本项目将带领读者一步步实现一个实际的书籍推荐系统,理解协同过滤和KNN算法在推荐系统中的应用,同时提供实践经验,帮助开发者更好地掌握推荐系统的核心技术和实现流程。通过这个项目,无论是初学者还是经验丰富的...
2. **模型构建**:使用KNN算法对电影进行分类,如喜剧、动作、科幻等,有助于推荐系统预测用户可能喜欢的电影类型。 五、约会配对应用 1. **个人特征**:约会配对可能考虑年龄、性别、兴趣爱好、教育背景等特征,...
同时,KNN也可以应用于推荐系统,通过用户的历史行为预测其可能的兴趣。 总的来说,KNN是一种基础但实用的机器学习算法,它在理解和实践机器学习时都占有重要地位。尽管存在一些限制,但通过适当的优化和策略调整,...
此外,KNN在推荐系统、文本分类、图像识别等领域都有应用。 6. **注意事项**: - K的选择对结果有很大影响,过小可能导致过拟合,过大可能导致欠拟合。 - 距离度量的选择也很关键,不同的数据类型可能需要不同的...
如果机器学习能够自动识别癌细胞,那么它将为医疗系统提供相当大的益处。自动化的过程很有可能提高...从带有异常乳腺肿块的女性身上的活检细胞的测度数据入手,应用 kNN 算法,从而研究机器学习用于检测癌症的功效。