K-Means算法分析及应用

K-Means算法分析及应用

k-means,即K均值聚类算法,是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。

k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如下:

这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。

k-means聚类算法的算法流程如下:
输入:包含n个对象的数据库和簇的数目k;
输出:k个簇,使平方误差准则最小。
步骤:
  (1) 任意选择k个对象作为初始的簇中心;
  (2) repeat;
  (3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
  (4) 更新簇的平均值,即计算每个簇中对象的平均值;
  (5) until不再发生变化。

K-Means的优点

  1. 计算复杂度低,为O(Nkp),N是数据总量,k是类别,p是迭代次数。
  2. 思想简单,容易实现。而且很稳定。

K-Means的缺点

  1. 分类簇的数量K必须提前确定。
  2. 算法对初始聚类中心敏感,可能会导致较差的聚类结果。
    - 可以每次迭代尝试不同的初始均值向量,通过比较均值距离,选择一个较好的初始值。
    - 使用k-means++算法
  3. 算法只适用于处理数字类型的数据。
  4. 算法可能陷入局部最优解,无法达到全局最优。
  5. 对异常值和噪声很敏感,算法的鲁棒性不太好。
  6. 无法对(a)非球状簇,(b)大小不同得簇,©密度不同得簇 进行聚类。

如何选择K值

当前,K值得选取依然是靠人为来实现,通过可视化聚类结果等方法来实现。

Elbow Method
  • 尝试不同的K值,画出不同K值对应的到聚类中心的平均距离。
  • 一开始,随着k增大,平均距离下降很快,直到一个拐点,下降变慢。该拐点对应的K值就是最好值。

你可能感兴趣的:(myLearning,K-Means,机器学习,聚类算法)