Kmeans聚类算法
动态聚类算法
任务:是将数据集划分成一定数量的子集,例如将一个数据集划分成3、4个子集等。因此要划分成多少个子集往往要预先确定,或大致确定,当然这个子集数目在理想情况能体现数据集比较合理的划分。
要解决的问题是: 1、怎样才能知道该数据集应该划分的子集数目?
2、如果划分数目已定,则又如何找到最佳划分?
因为数据集可以有许多种不同的划分方法,需要对不同的划分作出评价,并找到优化的划分结果。由于优化过程是从不甚合理的划分到“最佳”划分,是一个动态的迭代过程,故这种方法称为动态聚类方法。
动态聚类方法的要点
1.选定某种距离度量作为样本间的相似性度量;
2.确定样本合理的初始分类,包括代表点的选择,初始分类方法的选择等;
3.确定某种评价聚类结果质量的准则函数,以调整初始分类直至达到该准则函数的极值。
以上三点是动态聚类方法的三个要素,其中初始划分只是为了使划分能从某个初始点开始,而相似度量计算方法对解决实际问题很重要,先从最简单的度量——数据之间的欧氏距离开始,然后再涉及其它相似性度量方法。第三个要素,即使用准则函数作为优化的评价是动态聚类方法的核心。
K- Means聚类算法
K- Means是迭代动态聚类算法中的一种,其中K表示类别数,Means表示均值。
顾名思义K-Means是一种通过均值对数据点进行聚类的算法。K-Means算法通过预先设定的K值及每个类别的初始质心对相似的数据点进行划分。并通过划分后的均值迭代优化获得最优的聚类结果。
K- Means算法的关键问题
K值的选择
K值是聚类结果中类别的数量。简单的说就是我们希望将数据划分的类别数。K值决定了初始质心的数量。K值为几,就要有几个质心。
选择最优K值没有固定的公式或方法,需要人工来指定,建议根据实际的业务需求,或通过层次聚类(Hierarchical Clustering)的方法获得数据的类别数量作为选择K值的参考。这里需要注意的是选择较大的K值可以降低数据的误差,但会增加过拟合的风险。
初始质心(代表点)的选择方法
1.凭经验选择代表点。根据问题的性质,用经验的办法确定类别数,从数据中找出从直观上看来是较合适的代表点。
2.将全部数据随机地分为C类,计算各类重心,将这些重心作为每类的代表点。
3.“密度”法选择代表点。这里的“密度”是具有统计性质的样本密度。一种求法是对每个样本确定大小相等的邻域(如同样半径的超球体),统计落在其邻域的样本数,称为该点“密度”。在得到样本“密度”后,选“密度”为最大的样本点作为第一个代表点,然后人为规定距该代表点距离外的区域内找次高“密度”的样本点作为第二个代表点,依次选择其它代表点,使用这种方法的目的是避免代表点过分集中在一起。
4.从(c-1)聚类划分问题的解中产生C聚类划分问题的代表点。其具体做法是先从一类聚类的解找两聚类划分的代表点,再依次增加一个聚类代表点。对样本集首先看作一个聚类,计算其总均值,然后找与该均值相距最远的点,由该点及原均值点构成两聚类的代表点。依同样方法,对已有(c-1)个聚类代表点(由(c-1)个类均值点组成)找一样本点,使该样本点距所有这些均值点的最小距离为最大,这样就得到了第c个代表点。