关于算法:KMeans聚类算法

43次阅读

共计 2223 个字符,预计需要花费 6 分钟才能阅读完成。

一、聚类思维

        所谓聚类算法是指将一堆没有标签的数据主动划分成几类的办法,属于无监督学习办法,这个办法要保障同一类的数据有类似的特色,如下图所示:

        依据样本之间的间隔或者说是相似性(亲疏性),把越类似、差别越小的样本聚成一类(簇),最初造成多个簇,使同一个簇外部的样本类似度高,不同簇之间差异性高。

二、k-means 聚类分析算法

相干概念:

K 值:要失去的簇的个数

质心:每个簇的均值向量,即向量各维取均匀即可

间隔量度:罕用欧几里得间隔和余弦类似度(先标准化)

算法流程:

1、首先确定一个 k 值,即咱们心愿将数据集通过聚类失去 k 个汇合。

2、从数据集中随机抉择 k 个数据点作为质心。

3、对数据集中每一个点,计算其与每一个质心的间隔(如欧式间隔),离哪个质心近,就划分到那个质心所属的汇合。

4、把所有数据归好汇合后,一共有 k 个汇合。而后从新计算每个汇合的质心。

5、如果新计算出来的质心和原来的质心之间的间隔小于某一个设置的阈值(示意从新计算的质心的地位变动不大,趋于稳定,或者说收敛),咱们能够认为聚类曾经达到冀望的后果,算法终止。

6、如果新质心和原质心间隔变化很大,须要迭代 3~5 步骤。

三、数学原理

K-Means 采纳的启发式形式很简略,用上面一组图就能够形象的形容:

        上图 a 表白了初始的数据集,假如 k =2。在图 b 中,咱们随机抉择了两个 k 类所对应的类别质心,即图中的红色质心和蓝色质心,而后别离求样本中所有点到这两个质心的间隔,并标记每个样本的类别为和该样本间隔最小的质心的类别,如图 c 所示,通过计算样本和红色质心和蓝色质心的间隔,咱们失去了所有样本点的第一轮迭代后的类别。此时咱们对咱们以后标记为红色和蓝色的点别离求其新的质心,如图 d 所示,新的红色质心和蓝色质心的地位曾经产生了变动。图 e 和图 f 反复了咱们在图 c 和图 d 的过程,行将所有点的类别标记为间隔最近的质心的类别并求新的质心。最终咱们失去的两个类别如图 f。

四、实例

坐标系中有六个点:

1、咱们分两组,令 K 等于 2,咱们随机抉择两个点:P1 和 P2

2、通过勾股定理计算残余点别离到这两个点的间隔:

3、第一次分组后后果:

        组 A:P1

        组 B:P2、P3、P4、P5、P6

4、别离计算 A 组和 B 组的质心:

        A 组质心还是 P1=(0,0)

        B 组新的质心坐标为:P 哥 =((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)

5、再次计算每个点到质心的间隔:

6、第二次分组后果:

        组 A:P1、P2、P3

        组 B:P4、P5、P6

7、再次计算质心:

        P 哥 1 =(1.33,1)

        P 哥 2 =(9,8.33)

8、再次计算每个点到质心的间隔:

9、第三次分组后果:

        组 A:P1、P2、P3

        组 B:P4、P5、P6

能够发现,第三次分组后果和第二次分组后果统一,阐明曾经收敛,聚类完结。

五、K-Means 的优缺点

长处:

1、原理比较简单,实现也是很容易,收敛速度快。

2、当后果簇是密集的,而簇与簇之间区别显著时, 它的成果较好。

3、次要须要调参的参数仅仅是簇数 k。

毛病:

1、K 值须要事后给定,很多状况下 K 值的预计是十分艰难的。

2、K-Means 算法对初始选取的质心点是敏感的,不同的随机种子点失去的聚类后果齐全不同,对后果影响很大。

3、对乐音和异样点比拟的敏感。用来检测异样值。

4、采纳迭代办法,可能只能失去部分的最优解,而无奈失去全局的最优解

六、细节问题

1、K 值怎么定?

        答:分几类次要取决于集体的教训与感觉,通常的做法是多尝试几个 K 值,看分成几类的后果更好解释,更合乎剖析目标等。或者能够把各种 K 值算出的 E 做比拟,取最小的 E 的 K 值。

2、初始的 K 个质心怎么选?

        答:最罕用的办法是随机选,初始质心的选取对最终聚类后果有影响,因而算法肯定要多执行几次,哪个后果更 reasonable,就用哪个后果。当然也有一些优化的办法,第一种是抉择彼此间隔最远的点,具体来说就是先选第一个点,而后选离第一个点最远的当第二个点,而后选第三个点,第三个点到第一、第二两点的间隔之和最小,以此类推。第二种是先依据其余聚类算法(如档次聚类)失去聚类后果,从后果中每个分类选一个点。

3、对于离群值?

        答:离群值就是远离整体的,十分异样、十分非凡的数据点,在聚类之前应该将这些“极大”“极小”之类的离群数据都去掉,否则会对于聚类的后果有影响。然而,离群值往往本身就很有剖析的价值,能够把离群值独自作为一类来剖析。

4、单位要统一!

        答:比方 X 的单位是米,Y 也是米,那么间隔算进去的单位还是米,是有意义的。然而如果 X 是米,Y 是吨,用间隔公式计算就会呈现“米的平方”加上“吨的平方”再开平方,最初算出的货色没有数学意义,这就有问题了。

5、标准化

        答:如果数据中 X 整体都比拟小,比方都是 1 到 10 之间的数,Y 很大,比方都是 1000 以上的数,那么,在计算间隔的时候 Y 起到的作用就比 X 大很多,X 对于间隔的影响简直能够疏忽,这也有问题。因而,如果 K -Means 聚类中抉择欧几里德间隔计算间隔,数据集又呈现了下面所述的状况,就肯定要进行数据的标准化(normalization),行将数据按比例缩放,使之落入一个小的特定区间。

正文完
 0