本发明属于数据库,具体涉及一种集合聚集k-means法的数据库实现方法。
背景技术:
1、k-means属于数据挖掘中聚类的一种方法。数据挖掘就是从大型数据库的数据中提取人们感兴趣的知识。这些知识是隐含的、事先未知的、潜在的、有用的信息。包括分类、关联、预测、聚类分析、趋势分析、偏差分析和相似性分析及结果的可视化。
2、其中的“聚类分析”(clustering?analysis)是根据事物的特征对其进行聚类或分类,通过聚类或分类可以发现其中的规律和模式。聚类或分类以后,样本数据就转化为类集。同一类的样本数据具有相似的变量值,不同类的样本数据的变量值不具有相似性。
3、k-means++只是对初始选取质心的步骤进行优化,其他无变化。简单来说就是尽量选择很不同的样本作为初始质心。
4、k-means法经典的应用案例就是对成百上千n维的样本进行聚合??梢越嗨频幕治桓龃?,不相似的划分为不同簇。对每一维进行数字化,最终会对应到欧式空间的点,通过点的距离进行聚合。
5、问题是:仍旧是同一类对象,只有一个属性,但这个属性是集合(相同元素组成一个集合),这些集合可能是离散的(比如一组geohash组成的集合,见“注1”),也可能是连续的(比如一个时间段组成的集合)。怎样衡量集合之间的相似性,从而进行聚合?
6、现有技术中,比较相似的有以下三篇论文:
7、1)一种结合jaccard距离度量的高效k-means文档聚类算法(an?efficient?k-means?algorithmintegrated?with?jaccard?distance?measure?for?documentclustering),拉哈娜.费尔多斯(raihana?ferdous),计算机科学硕士,特伦托大学,2009年首届亚洲喜马拉雅山国际互联网会议,2009年1月6日。
8、k-means法的第一步是要选择质心,一种流行的方法是随机选取样本中的k个点作为质心,但这一过程并不保证选取最大不同文档作为k-means的质心,这篇论文提出了方法,使用jaccard距离测量计算最相异的k个文件为k个聚类的质心,从而提升了聚类性能。
9、2)基于多维相似度和jaccard-kmeans聚类的可扩展新闻推荐;
10、吕梅莲、秦振、曹一鸣、刘志超、王梦星;
11、北京邮电大学网络与交换技术国家重点实验室,北京100876;
12、文档历史:2013年7月30日收到,2014年4月26日接受;
13、关键词:新闻推荐、相似度计算、聚类;
14、为了解决新闻推荐中的可扩展性问题,提出了一种可扩展的新闻推荐方法。该方法包括多维相似度计算、jaccard-k-means快速聚类。采用多维相似度计算方法计算用户间的综合相似度,综合考虑了新闻内容的内容特征、用户的行为以及这些行为发生的时间。该聚类方法首先计算上述多维相似度,然后利用各维度生成多个聚类中心,并根据内聚性对聚类结果进行评价。
15、3)k均值聚类与稳健聚类的比较研究;comparative?study?of?k-means?androbust?clustering;沙希.夏尔马,拉姆.拉尔.亚达夫;国际高级计算机研究杂志,第三卷,第三期,2013年9月。
16、本文首先研究了两种类型的聚类。第一类k-means聚类是分区聚类的一部分;第二类聚类稳健类聚类是层次聚类的一部分,该聚类使用jaccard系数代替距离度量,找到数据或文档的相似性进行聚类。显示了两者的比较,后者比前者更好。表明在有些情况下jaccard距离是很有效的武器。
17、注1:geohash:在地球上,通常人们使用一对经纬度坐标来表示一个点??梢岳斫鈍eohash是一种算法思想,就是把经纬度坐标,用一串数字字母串表示(数字0-9、26个字母去掉a、i、l、o,一共32个数字字母)。geohash的位数越多,表示的范围越小,位数越少,表示的范围越大。
18、现有技术只能处理同维度对象之间的聚合,这是因为它符合欧式空间的距离公式,可以很容易得到距离的度量。
技术实现思路
1、为了克服现有技术的不足,本发明提供了一种集合聚集k-means法的数据库实现方法,首先计算集合之间的距离;然后将业务表和距离表同步到oracle数据库,通过pl/sql编程来完成聚集,并与业务表关联得到最终结果。本发明方法能使得用户能够从大量繁杂的、无规律的数据中得到有规律的事实、知识,能够迅速聚焦目标,极大地提升了用户的工效。
2、本发明解决其技术问题所采用的技术方案如下:
3、步骤1:计算集合之间的距离;
4、集合是由元素组成的,元素不能重复;
5、用a表示集合,a的基数用|a|表示,|a|的含义在离散集合的情形下,是元素的个数,在一维连续集合的情形下,|a|是区间长度,对于时间区间来说,就是时长;
6、集合a、b的交集,用anb表示,是属于a且属于b的元素组成的集合;
7、集合a、b的并集,用aub表示,是属于a或属于b的元素组成的集合;
8、a与b之间的相似性,用jaccard相似性度量:
9、j_sim(a,b)=|anb|/|aub|
10、就是a与b的交集的基数除以a与b的并集的基数,j_sim(a,b)值在0与1之间;如果a、b完全相同,那么|anb|=|aub|,j_sim(a,b)=1,即:a、b完全相同,相似性为1,1就是完全相同;如果a、b没有相同元素,那么|anb|=0,j_sim(a,b)=0,即:a、b完全不同,相似性为0,0就是完全不同;
11、j_sim(a,b)越靠近1,表明a、b越相似;j_sim(a,b)越靠近0,表明a、b越不同;即a、b越相似,距离越??;a、b越不同,距离越大;
12、a与b之间的距离定义如下:
13、j_dist(a,b)=1-j_sim(a,b)
14、即:距离就是相似性对于1的补数;
15、步骤2:将业务表和距离表同步到oracle数据库,通过pl/sql编程来完成聚集,并与业务表关联得到最终结果;
16、将两两实体entity在特征feature下的集合属性set的距离同步到oracle,通过数据库的编程性,利用k-means的编程,完成聚合;
17、表tab_cm_k_means03存聚类的每一步结果;
18、表tab_cm_k_means_b、tab_cm_k_means_c、tab_cm_k_means_d存储中间的结果,将中间结果更新到tab_cm_k_means03中;
19、表tab_cm_sets_distance存储每两个样本之间的距离;
20、步骤2-1:表tab_cm_k_means03初始质心选择;
21、步骤2-2:将样本划归为不同的簇,存到临时表tab_cm_k_means_b中;
22、将其他非质心样本距离每个簇质心的距离,查询tab_cm_sets_distance表,按最近距离将其划归为那个簇;
23、步骤2-3:表tab_cm_k_means03样本所属簇的更新;
24、将tab_cm_k_means_b信息更新到tab_cm_k_means03;
25、步骤2-4:重新选择每一簇的质心,存到临时表tab_cm_k_means_c中;
26、在每个簇内,根据样本距离同一簇内其他样本距离的平方和的最小值,重新选择每一簇的质心;
27、步骤2-5:计算前后两次质心的距离及簇内代价函数,存到临时表tab_cm_k_means_d中;
28、步骤2-6:经过计算后对表tab_cm_k_means03质心置换,非随机选??;
29、步骤2-7:将样本划归为不同的簇,存到临时表tab_cm_k_means_b中;
30、将其他非质心样本距离每个簇质心的距离,查询tab_cm_sets_distance表,按最近距离将其划归为那个簇;
31、步骤2-8:表tab_cm_k_means03样本所属簇的更新;
32、将tab_cm_k_means_b信息更新到tab_cm_k_means03;
33、步骤2-9:重新选择每一簇的质心,存到临时表tab_cm_k_means_c中;
34、在每个簇内,根据样本距离同一簇内其他样本距离的平方和的最小值,重新选择每一簇的质心;
35、步骤2-10:计算前后两次质心的距离及代价函数,存到临时表tab_cm_k_means_d中;
36、步骤2-11:判断前后质心没发生变化或后次代价函数不小于前次代价函数,在步骤2-8得到的tab_cm_k_means03即为最终结果;否则重复步骤2-5到步骤2-10。
37、优选地,所述代价函数就是每个样本距离所属簇质心距离平方和;代价函数是总的代价函数,如果限制在簇的范围内,就是簇内代价函数;对于每个簇,计算簇内代价函数,再将所有簇的结果加起来就是总的代价函数;
38、代价函数的目标是最小化所有样本到其所在簇的质心的距离平方和,以使得聚类结果更准确和可靠。
39、本发明的有益效果如下:
40、本发明方法能使得用户能够从大量繁杂的、无规律的数据中得到有规律的事实、知识,能够迅速聚焦目标,极大地提升了用户的工效。