52、基于K - 中心点聚类的相似性推荐系统

基于K - 中心点聚类的相似性推荐系统

1. 引言

推荐算法旨在根据各种特征为用户推荐商品和电影,以实现个性化的用户体验。推荐系统会从用户输入中筛选出最相关的属性来处理信息,预测消费者最感兴趣且可能购买的商品。

聚类是将输入点划分为不同的组,使同一组内的点在几何上更接近。根据待聚类数据的可用性,聚类可分为离线聚类和在线聚类。离线聚类时,整个数据集在聚类时是可用的,可使用肘部法则等方法确定合适的聚类数量。而基于聚类的推荐系统通常需要处理在线聚类,因为新用户会不断注册。在线聚类中,待聚类的数据并非一次性全部可用,而是以流的形式接收,因此确定理想的聚类数量比离线聚类更复杂。

K - 中心点聚类是一种无监督聚类算法,可用于对无标签的对象点进行聚类。在K - 中心点聚类中,聚类是基于中心点创建的,每个聚类的中心点位于该聚类的中心,聚类包含所有比其他聚类中心点更接近该中心点的点。基于聚类的推荐可以提高推荐的多样性、一致性和可靠性,并且更擅长处理稀疏的用户偏好矩阵和变化的用户偏好。

2. 现有工作

现代推荐系统主要分为以下三大类:
- 协同过滤系统
- 基于内容的系统
- 混合系统

基于内容的过滤是推荐与用户之前偏好相似的商品,而协同过滤则是为用户提供与他们具有相似特征的其他用户喜欢的商品。但这两种现有方法都有一定的局限性,因此混合系统应运而生,它结合了这两种方法。

不同的研究提出了各种推荐系统的实现方法:
- 有的使用离线(非实时)和在线(实时)组件,在线组件将数据流放入相应的密度网格并更新密度网格的特征向量,离线组件则定期自动调整聚类。但这种方法存在重复聚类的问题,浪费计算资源和运行时间。
- 有的提出了基于概率分布的K - 中心点聚类推荐算法,用于解决协同过滤中的稀疏数据问题。
- 还有的利用数据集、基于用户的预测评估和余弦相似度构建推荐系统,用于推荐研究文章。

3. 提出的系统

本文提出了一种在线聚类算法,用于对离散间隔接收的点流进行聚类,适用于在聚类时无法获取整个数据集的应用场景。

推荐系统的架构如下:
1. 用户向服务器请求基于相似性的推荐,服务器接收请求并将其传递给聚类控制器进行处理。
2. 聚类控制器生成一个用户向量,将用户表示为坐标空间中的一个点。该向量编码了用于生成推荐的用户属性,每个属性都有预设数量的可能值。使用离散化的值可以使输入空间有限,从而在一定数量的用户输入后,避免重新聚类。
3. 聚类控制器首先访问数据库,检查用户是否已经被分配到一个聚类中。
- 如果是,则检索分配聚类中的项目,根据它们与用户向量的欧几里得距离进行排序,并作为推荐返回给用户。欧几里得距离公式为:
[d (p, q) = \sqrt{\sum_{i=1}^{n}(p_i - q_i)^2}]
其中,(p)和(q)是考虑的点,(p_i)和(q_i)分别是(p)和(q)的第(i)个属性。
- 如果用户尚未被分配到聚类中,则计算用户向量与每个聚类中心的欧几里得距离,选择最近的聚类。然后计算新聚类的轮廓系数:
[c (p) = \frac{b(p) - a(p)}{\max(b(p), a(p))}]
其中,(p)是所讨论的点,(a(p))是点(p)与所在聚类中所有其他对象的平均距离,(b(p))是点(p)到除其所在聚类之外的所有其他聚类的最小平均距离。轮廓系数的值范围从 - 1到1,值越高表示聚类效果越好。
- 如果轮廓系数值大于或等于设定的阈值,则返回新分配聚类中的推荐。如果轮廓系数值低于阈值,则使用K - 中心点聚类算法进行重新聚类。尝试多个聚类数量(K)的值,最终选择轮廓系数最高的K值对应的聚类作为新的聚类,并将重新聚类后分配给用户的新聚类中的项目作为推荐返回。

以下是推荐系统工作流程的mermaid流程图:

graph TD;
    A[用户请求推荐] --> B[服务器接收请求];
    B --> C[聚类控制器处理];
    C --> D{用户是否已在聚类中};
    D -- 是 --> E[检索聚类项目并排序返回];
    D -- 否 --> F[计算与聚类中心距离];
    F --> G[选择最近聚类];
    G --> H[计算轮廓系数];
    H -- 系数>=阈值 --> I[返回推荐];
    H -- 系数<阈值 --> J[重新聚类];
    J --> K[选择最佳聚类];
    K --> L[返回推荐];
4. 实验与结果

实验使用Python编程语言,借助Scikit - Learn机器学习库中的K - 中心点实现。

4.1 在线聚类

对1000个不同的点进行了10次聚类,这些点使用各向同性高斯斑点函数生成,以确保生成的聚类在每个聚类中的点数方面是平衡的。

聚类质量阈值设置为0.7,重新聚类时考虑的聚类数量范围是从2到2 * k(k是当前的聚类数量)。

以下是不同数据集使用离线聚类和在线聚类得到的聚类质量对比:
| 数据集 | 离线聚类质量 | 在线聚类质量 |
| — | — | — |
| 2 | 0.8242 | 0.8242 |
| 4 | 0.7763 | 0.7386 |
| 5 | 0.7701 | 0.7888 |
| 7 | 0.6151 | 0.6721 |
| 8 | 0.6689 | 0.6686 |
| 10 | 0.6124 | 0.6497 |

从表中可以看出,在大多数情况下,提出的系统与常规聚类算法的聚类质量相似,但在某些数据集上,提出的算法能获得更好的聚类质量。这可能是因为提出的算法生成了更多的聚类,从而使聚类之间的分离度更高。

以下是不同阈值下的重新聚类频率:
| 阈值 | 重新聚类次数 | 轮廓系数 |
| — | — | — |
| 0.1 | 0 | 0.5341 |
| 0.2 | 1 | 0.5316 |
| 0.3 | 4 | 0.4054 |
| 0.4 | 6 | 0.5341 |
| 0.5 | 25 | 0.5341 |
| 0.6 | 25 | 0.6707 |
| 0.7 | 48 | 0.7410 |
| 0.8 | 998 | 0.7410 |
| 0.9 | 998 | 0.7410 |

可以观察到,随着阈值的增加,重新聚类的频率也会增加。

4.2 基于相似性的推荐

实验生成了1000个点进行在线聚类,聚类后又生成了10个新点,将这些新点分配到最近中心点的聚类中,并在聚类质量下降时进行重新聚类。

以下是点与所在聚类和其他聚类中其他点的平均余弦相似度对比:
| 点 | 分配的聚类 | 其他聚类 |
| — | — | — |
| 1 | 0.86065436 | 0.4262904 |
| 2 | 0.84859488 | 0.26147972 |
| 3 | 0.65346812 | 0.33122242 |
| 4 | 0.95744094 | 0.15305653 |
| 5 | 0.93587811 | 0.10545943 |
| 6 | 0.47770332 | 0.33002725 |
| 7 | 0.59342697 | 0.57251083 |
| 8 | 0.48152841 | 0.40428508 |
| 9 | 0.50811607 | 0.35755333 |
| 10 | 0.91060517 | 0.17941023 |

可以看出,点与所在聚类中的其他点具有更高的平均相似度,因此可以根据与查询点的相似度对聚类中的其他点进行排序,并作为相关推荐返回。

5. 结论与未来展望

综上所述,提出的算法可有效地对在线点进行聚类,并为用户提供基于相似性的推荐。根据观察到的确保聚类质量的阈值与重新聚类次数之间的关系,可以得出结论:阈值越高,聚类次数增加。这是因为在某些情况下,难以获得质量高于阈值的聚类,因此几乎在添加每个点后都需要进行重新聚类。

可以推测,由于坐标空间是有限的,用户点会在一段时间后开始重复,聚类将趋于稳定。最初,当点数相对较少时,重新聚类会频繁发生,随着数据量的增加,重新聚类的频率会降低,这是一种高效的结果,因为聚类的时间复杂度取决于数据大小。

未来的研究方向包括:
- 研究衰减阈值,以防止在无法达到阈值的情况下进行连续重新聚类。
- 探索除K - 中心点之外的其他聚类算法的潜力。
- 确定进行重新聚类的理想聚类数量。

基于K - 中心点聚类的相似性推荐系统(下半部分)

5. 结论与未来展望(续)

从实验结果来看,我们已经验证了提出的基于K - 中心点聚类的在线推荐系统在聚类质量和推荐效果上的有效性。在聚类质量方面,大部分情况下与传统离线聚类算法相当,甚至在部分数据集上表现更优。这得益于该算法能够根据数据动态生成合适数量的聚类,提高了聚类间的分离度。在推荐效果上,通过计算点与所在聚类和其他聚类的平均余弦相似度,证明了系统能为用户提供具有较高相关性的推荐。

然而,系统也存在一些需要进一步优化的地方。例如,随着阈值的提高,重新聚类的频率显著增加,这会带来较大的计算开销。为了解决这个问题,我们可以考虑采用衰减阈值的策略。具体操作步骤如下:
1. 设定初始阈值 (T_0) 和衰减系数 (α)((0 < α < 1))。
2. 在每次聚类操作后,根据当前聚类质量和重新聚类次数,更新阈值 (T_{n+1}=α\times T_n)。
3. 当阈值低于某个预设的最小值 (T_{min}) 时,停止阈值衰减。

这样可以在保证一定聚类质量的前提下,减少不必要的重新聚类操作。

除了衰减阈值,探索其他聚类算法也是未来研究的重要方向。不同的聚类算法具有不同的特点和适用场景,例如DBSCAN算法具有较好的抗噪声能力,层次聚类算法可以生成层次化的聚类结构。我们可以按照以下步骤进行研究:
1. 选择几种有潜力的聚类算法,如DBSCAN、层次聚类等。
2. 使用相同的数据集对这些算法和K - 中心点聚类算法进行对比实验。
3. 评估不同算法在聚类质量、计算效率、可扩展性等方面的性能。
4. 根据评估结果,确定在不同场景下最适合的聚类算法。

确定进行重新聚类的理想聚类数量也是一个关键问题。目前,我们在重新聚类时考虑的聚类数量范围是从2到2 * k(k是当前的聚类数量),但这个范围可能不是最优的。我们可以通过以下方法来确定理想的聚类数量:
1. 定义一个评估指标,如轮廓系数、Calinski - Harabasz指数等。
2. 尝试不同的聚类数量,计算每个聚类数量下的评估指标值。
3. 选择评估指标值最优的聚类数量作为理想的聚类数量。

6. 总结

本文围绕基于K - 中心点聚类的相似性推荐系统展开了全面的研究。首先介绍了推荐系统和聚类的基本概念,包括离线聚类和在线聚类的区别,以及K - 中心点聚类算法的原理。接着分析了现有推荐系统的分类和各种实现方法,指出了它们的优缺点。然后详细阐述了提出的在线聚类算法和推荐系统的架构及工作流程,通过具体的公式和流程图进行了说明。

在实验部分,我们使用Python和Scikit - Learn库进行了在线聚类和基于相似性推荐的实验。通过对比不同数据集下的离线聚类和在线聚类质量,以及点与不同聚类的平均余弦相似度,验证了系统的有效性。最后,我们对系统的性能进行了总结,并提出了未来的研究方向,包括衰减阈值、探索其他聚类算法和确定理想聚类数量等。

通过本文的研究,我们希望为推荐系统的发展提供一种新的思路和方法,提高推荐系统的性能和效率,为用户提供更加个性化、准确的推荐服务。

以下是整个推荐系统工作流程的总结表格:
| 步骤 | 操作内容 |
| — | — |
| 1 | 用户向服务器请求基于相似性的推荐 |
| 2 | 服务器接收请求并传递给聚类控制器 |
| 3 | 聚类控制器生成用户向量 |
| 4 | 检查用户是否已在聚类中 |
| 5 | 若已在聚类中,检索并排序聚类项目返回推荐 |
| 6 | 若未在聚类中,计算与聚类中心距离,选择最近聚类 |
| 7 | 计算轮廓系数 |
| 8 | 若轮廓系数大于等于阈值,返回推荐 |
| 9 | 若轮廓系数小于阈值,重新聚类并选择最佳聚类后返回推荐 |

为了更清晰地展示未来研究方向的关系,我们可以使用以下mermaid流程图:

graph LR;
    A[基于K - 中心点聚类的推荐系统] --> B[衰减阈值研究];
    A --> C[探索其他聚类算法];
    A --> D[确定理想聚类数量];
    B --> E[优化聚类效率];
    C --> E;
    D --> E;
    E --> F[提高推荐系统性能];

通过这个流程图,我们可以看到未来研究方向之间相互关联,共同目标是提高推荐系统的性能。总之,基于K - 中心点聚类的相似性推荐系统具有很大的研究价值和应用潜力,未来的研究将进一步完善和优化该系统,使其在实际应用中发挥更大的作用。

系统旨在构建一套面向高等院校的综合性教务管理平台,涵盖学生、教师及教务处三个核心角色的业务需求。系统设计着重于实现教学流程的规范化与数据处理的自动化,以提升日常教学管理工作的效率与准确性。 在面向学生的功能模块中,系统提供了课程选修服务,学生可依据培养方案选择相应课程,并生成个人专属的课表。成绩查询功能支持学生查阅个人各科目成绩,同时系统可自动计算并展示该课程的全班最高分、平均分、最低分以及学生在班级内的成绩排名。 教师端功能主要围绕课程与成绩管理展开。教师可发起课程设置申请,提交包括课程编码、课程名称、学分学时、课程概述在内的新课程信息,亦可对已开设课程的信息进行更新或撤销。在课程管理方面,教师具备录入所授课程期末考试成绩的权限,并可导出选修该课程的学生名单。 教务处作为管理中枢,拥有课程审批与教学统筹两大核心职能。课程设置审批模块负责处理教师提交的课程申请,管理员可根据教学计划与资源情况进行审核批复。教学安排模块则负责全局管控,包括管理所有学生的选课最终结果、生成包含学号、姓名、课程及成绩的正式成绩单,并能基于选课与成绩数据,统计各门课程的实际选课人数、最高分、最低分、平均分以及成绩合格的学生数量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值