k-means均值聚类

###k-均值聚类###

本质上是一个迭代算法,需要多个map/reduce阶段,需要根据不同的质心执行多次,直至其收敛,通过多次迭代相同的mapreduce找到最优的簇。

基本上来说,再给定k大于0和一个包括需要聚类的N个d-维对象集合.

- 聚类是将N个d-维对象分组为k个类似对象簇的过程

- 同一个簇中的对象彼此相似,而不同簇中的对象彼此相异

总的来说,k-means是一个基于距离的聚类算法:比如找出共同行为的一组行为产生者或根据文档内容的相似对文档完成聚类.

###案例分析###

k-means的首要问题:如何确定k值(由输入数据生成多少个组或簇)?那么具体的工作如下:提供一个包含N个d-维点和希望的簇数K作为输入,这里面我们会考虑欧氏空间中的点(k-means可以适用于任何空间),

p1=(a11,a12,…,a1d)

p2=(a21,a22,…,a2d)

pn=(an1,an2,…,and)

若是在2-维环境,上面对应的数据即变为每行表示一个点(x,y)

p1=(1,1)

p2=(2,1)

p3=(1,2)

p4=(5,5)

p5=(6,5)

p6=(5,6)

p7=(7,7)

p8=(9,6)

这里面我们选择k个簇质心(初始化簇心的方法很多,最简单的一种:从n个点的样本中随机选择k个点),接下来通过对输入集合中各个点到这k个中心点的距离,然后将各个点分配到与其聚类最近的簇中心,在完成所有对象的分配,重新计算k个质心位置,下面就反复迭代直到簇质心不再变化或变化非常小(重复前面两个过程 计算距离分配簇心,在计算质心位置)

###结论###

从根本来说,k-means是一种数据挖掘算法的无监督学习。根据对象的属性或特性将N个对象聚类、分类或分组到K个组;我们通常做法让数据与相应簇质心间距离的平方和最小:将{X1,X2,…,Xn}划分为K个簇{C1,C2,…Cn},找出这些簇的位置€I(i=1,2,3...,k)使得数据点到簇质心的距离最小

###应用###

预测类似购买行为、类似访问模式分组日志聚类、保险欺诈行为

k-means距离函数

欧氏距离、曼哈顿距离、内积空间、最大模、自定义距离函数

、、、java欧氏距离

public class EuclideanDistance{

public static double calculateDistance(Vector center,Vector data){

double sum=0.0;

int length=data.length;

for(int i=0;i<length;I++){

sum+=Math.pow((center[i]-data[i]),2.0);

}

return Math.sqrt(sum);

、、、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 算法步骤 算法很简单一共4步: 1)随机在图中取K个种子点。2)然后对图中的所有点求到这K个种子点的距离,假如点P...
    WZFish0408阅读 3,616评论 0 0
  • 参考自初识聚类算法:K均值、凝聚层次聚类和DBSCAN,模糊聚类FCM算法。 聚类的目的 将数据划分为若干个簇,簇...
    胡哈哈哈阅读 9,796评论 0 16
  • 1. 章节主要内容 “聚类”(clustering)算法是“无监督学习”算法中研究最多、应用最广的算法,它试图将数...
    闪电随笔阅读 10,520评论 1 24
  • 1.我怎么如此幸运,今天夜班儿的大夫早早的去接班儿啦,我早早的就回了家里,本来坐在出租车上,想在外面吃一口,可是出...
    史真如阅读 1,092评论 0 0
  • 我们每个人都是自己的个体,但有一种生物除外,无论她如何坚持自己,最终都不被社会所容许,最终都会被亲情与爱...
    小金兰阅读 1,891评论 0 1