您的位置:首页 > 编程语言 > MATLAB

Clara算法的总结

2014-11-17 19:37 288 查看
总结

一、步骤:

CLARA从数据集中抽取多个样本集,对每个样本集使用PAM,并以最好的聚类作为输出。

具体步骤:

1)  for i = 1 to v (选样的次数),重复执行下列步骤( (2) ~ (4) ) ;

2)  随机地从整个数据库中抽取一个 N (例如:(40 + 2 k))个对象的样本,调用PAM 方法从样本中找出样本的k 个最优的中心点。

3)  将这 k个中心点应用到整个数据库上,对于每一个非代表对象Oj,判断它与从样本中选出的哪个代表对象距离最近。

4)  计算(3)中得到的聚类的总代价。若该值小于当前的最小值,用该值替换当前的最小值,保留在这次选样中得到的k 个代表对象作为到目前为止得到的最好的代表对象的集合。

5)  返回到步骤(1) ,开始下一个循环。

算法结束后,输出最好的聚类结果。

 

二、代价计算

1.  找出样本中k个最优的中心点:

PAM 算法首先随机地选择了 k 个对象,然后用一个非选中对象0h 替换一个选中对象0i,然后为每一个非选中对象0j 计算代价Cjih ,将所有Cjih累加,得到用0h 替换0i的总代价TCjih。接下来用所有非代表点替换0i并计算出(n – k)个总代价。如果(n – k)个总代价中有小于零且绝对值最大则发生替换,如果(n – k)个总代价都大于零则不发生替换。继续对余下的代表点重复以上操作,最后得出此样本下的k个最优代表点。完成后,进行下一次抽样,并选出k个最有点。

 

注:根据0j 属于不同情况,Cji1 用不同的公式定义。

 

2.  如何计算整体数据中得到的聚类的总代价?

累加类中代表点与非代表点的距离,得到一个代表点的总代价,再累加k个代表点的总代价得到整体数据总代价。

 

三、时间复杂度:

一次抽样及其计算的时间复杂度:O(k * (n – k - 1) * (n – k)) (k是代表点个数,(n – k – 1)是替换中一直是非代表点的个数,(n – k)是非代表点的个数)。

 

四、其他想法:

将k个样本最优代表点放入整个数据中通过找出整个数据中的k个最优的中心点得出此次抽样所得的k个最优代表点的总代价:

首先用一个非选中对象 0h 替换一个选中对象0i,然后为每一个非选中对象0j 计算代价Cjih ,将所有Cjih累加,得到用0h 替换0i的总代价TCjih。接下来用所有非代表点替换0i并计算出(n – k)个总代价。继续对余下的代表点重复以上操作,最后找出整体数据下的k个最优代表点并得出k个总总代价,将他们累加,得出此此次抽样的总代价。完成后,与上一次抽样的总代价比较,本次的总代价小于上次则使用本次代表点(什么代表点?样本还是整体数据的最优,如果是整体数据最优那么被选中的代表点应该使用总代价差大的那个还是小的那个?)

五. 算法流程


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息