赞
踩
引入
聚类是一种无监督学习,将相似的样本(对象/实例)归到同一簇(cluster)中。通常用样本的相似度或距离来衡量。eg:天空中的星星,靠得近的星星可以被归为一个星团,而星团之间的星星距离比较远。(CheungRN:聚类算法中常见的几种距离zhuanlan.zhihu.com
)簇内的对象越相似,聚类的效果越好。
硬聚类:一个样本只能属于一个类。
软聚类:一个样本可以以概率属于多个类。
聚类与分类的不同:分类为监督,是监督学习,目标事先已知;而聚类的“类”没有预先定义,是从数据中自动发现的,是无监督学习。也就是说,聚类问题中,给我们的样本只用x,没有y。
k-means表示:该算法可以发现k个不同的簇,且每个簇的中心采用簇内所含值的均值计算而成。属于硬聚类。。常见的聚类算法还有:层次聚类。
K-means算法
1967年MacQueen提出
流程
K-means缺点K的选择需要事先预定。
K个初始质心的位置选择对聚类结果和运行时间都有很大影响。
不能保证全局最优,可能是局部最优解。
K-means改进
如何确定K?
一、手肘法思想:随着聚类数K的增大,样本划分更加精细,那么所有样本的聚类误差(SSE)会逐渐变小:
——当K值小于真实聚类数时,K的增加会对聚类效果产生很大影响,故SSE下降幅度很大;
——当K值大于真实聚类数时,K的增加不会对聚类效果产生很大影响,故SSE下降幅度将会趋于平缓;整个SSE-K图为一个手肘型。
二、轮廓系数法思想:类中样本距离越近,类间样本距离越远,聚类效果越好。用平均轮廓系数来衡量。
类中不相似度:ai的平均,体现凝聚度。ai表示样本xi到同类中其他样本的平均距离。ai越小,表明类中样本不相似度越低,凝聚度越高,越应该聚为一类。(among)
类间不相似度:bi的最小值,体现分离度。bi表示样本xi到其他类中所有样本的平均距离。bi越大,表明内间不相似程度越高,分离度越高,越不应该聚为一个类。(between)。最近类:
Dk为要找的最近类,x是最近类里的全部样本,n是最近类里的全部样本的个数。某一个样本点xi的轮廓系数:
选SSE还是轮廓系数?
如何初始化质心
K-means++
随机初始化质心可能导致算法迭代很慢,K-means++是对K-mean随机初始化质心的一个优化,具体步骤如下:随机选取一个点作为第一个聚类中心。
计算所有样本与第一个聚类中心的距离。
选择出上一步中距离最大的点作为第二个聚类中心。
迭代:计算所有点到与之最近的聚类中心的距离,选取最大距离的点作为新的聚类中心。
终止条件:直到选出了这k个中心。
只需要随机取第一个聚类中心即可。
然后按照最远优先原则来选新的聚类中心
如何克服局部最优解
K-means实例应用——Python实现
import numpy as np
def loadDataSet(fileName):
''':param fileName: 文件名
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。