基于KMeans聚类的协同过滤推荐算法可运用于基于用户和基于项目的协同过滤推荐算法中,作为降低数据稀疏度和提高推荐准确率的方法之一,一个协同过滤推荐过程可实现多次KMeans聚类。
KMeans聚类算法是聚类算法中最基础最常用、最重要的聚类算法。KMeans聚类算法首先需要确定N个初始中心点,初始中心点的选择对聚类结果影响很大,常用的初始中心点的选择有随机选择、自定义、采用Canopy聚类算法结果作为初始中心点,然后是重复遍历点与簇中心的距离,并不断修正簇中心点,可设置遍历次数和点与簇中心的最小距离影响聚类结果。
聚类的数据可以是一维数组、二维数组、N维数组,其中一维和二维数组的聚类结果便于可视化,一维数组初始中心点的选择采用自定义,这样聚类效果偏好,二维和N维数组采用Canopy聚类算法的聚类结果作为初始中心点效果偏好。下面介绍一下Canopy聚类算法:
Canopy聚类算法的基本原则是:首先应用成本低的近似的距离计算方法高效的将数据分为多个组,这里称为一个 Canopy,暂时翻译为“树冠”,Canopy之间可以有重叠的部分;然后采用严格的距离计算方式准确的计算在同一Canopy中的点,将他们分配与最合适的簇中。Canopy聚类算法经常用于K均值聚类算法的预处理,用来找合适的k值和簇中心。
下面详细介绍一下创建Canopy的过程:初始,假设我们有一组点集S,并且预设了两个距离阈值T1、T2(T1>T2);然后选择一个点,计算它与S中其他点的距离(这里采用成本很低的计算方法),将距离在T1以内的放入一个Canopy中,同时从S中去掉那些与此点距离在T2以内的点(这里是为了保证和中心距离在T2以内的点不能再作为其他Canopy的中心),重复整个过程直到S为空为止。
本文主要是java语言开发,数据是1000个随机点,程序分别使用KMeans实现,Canopy算法实现,KMeans+Canopy算法实现。聚类效果如下图:
下载地址:https://download.csdn.net/download/u011291472/11967809
该程序仅供学习和测试使用。