机器学习入门|聚类(一)

聚类算法是在没有给定标签和样本值的前提下进行数据划分,是典型的无监督学习(unsupervised learning)算法。聚类试图将数据集中的样本划分红若干个不相交的子集,称为“簇”,或“类”。一个好的样本划分确定是簇内的样本类似度高,而簇与簇之间的样本类似度低。html

基于原型的聚类

簇是对象的集合,其中每一个对象到定义该簇的原型的距离比其余簇的原型距离更近,例如在下面的k-means算法中,原型就是簇的质心。算法

1.k-means算法

k-means算法把数据集划分为k个簇,划分依据是簇的每个样本点到质心(均值)的最小化平方偏差和,即欧氏距离。欧氏距离越小,则表明这一个簇的紧密程度越大,簇内的样本类似度越高。函数

给定样本集D={x1,x2,...,xm}D={x1,x2,...,xm},k-means算法获得的簇划分C={C1,C2,...,Ck}C={C1,C2,...,Ck}最小化平方偏差学习

 

E=∑i=1k∑x∈Ci||x−μi||22E=∑i=1k∑x∈Ci||x−μi||22优化

 

其中μi=1|Ci|∑x∈Cixμi=1|Ci|∑x∈Cix 为簇CiCi的均值向量
但直接求解欧氏距离最小值并不容易,所以采用迭代求解的方法。阿里云

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,立刻就要抢光了。spa

1.首先随机选取k个质心,遍历每个样本点,把样本点纳入距它最近的质心所表明的簇中。 
2.从新计算质心位置,即当前簇中的样本点的均值。 
3.重复以上两步,直到算法收敛(更新再也不产生划分变更),或者达到中止条件。htm

k值须要预先指定,而不少状况下k值难以肯定,这是k-means的一个缺陷。对象

k-means的迭代过程本质上是坐标上升的过程。k-means是一定会收敛的,可是和梯度降低同样,只能保证收敛到局部最优,而不能保证收敛到到全局最优。所以初始质心的选择对算法的结果影响十分巨大。get

坐标上升法每次经过更新函数中的一维,把其余维的参数当作常量,迭代直到当前维度收敛,再经过屡次的迭代计算其余维度以达到优化函数的目的。

由于k-means算法是求均方偏差,所以对于一些误差较大的噪声点很是敏感,所以在k-means基础上能够作适当优化。

K-medoids算法就是一种优化算法,它和k-means惟一不一样之处是:k-medoids算法用类中最靠近中心的一个样本点来表明该聚类,而k-means算法用质心来表明聚类。能够减小噪声点带来的影响。

二分K均值法也是一种优化算法,二分K均值法初始时将全部点当作一个簇,在簇的数量小于K的时候进行迭代,算法的核心是选择一个簇一分为二,这里一分为二的方法仍是K均值法,只不过K变成了2。二分K均值依次计算每一个簇一分为二后新的总平方偏差,选择划分后整体平方偏差最小的簇进行划分。这样就尽量避免了k-means落入局部最优的状况。

2.学习向量量化(Learning Vector Quantization)

学习向量量化(LVQ)也是试图找到一组原型来刻画聚类结构,但与k-means不一样的是,LVQ的样本带有类别标记。

给定样本集D={(x1,y1),(x2,y2),...,(xm,ym)}D={(x1,y1),(x2,y2),...,(xm,ym)},每一个样本xjxj是一个n维向量,yjyj是类别标记,LVQ的目标是学得一组n维原型量{p1,p2,...,pq}{p1,p2,...,pq},每个原型向量表明一个簇的原型。原型向量的簇标记为ti∈γti∈γ 一样,LVQ也是采用迭代求解的方法。

相关文章
相关标签/搜索