k - means聚类gydF4y2Ba
k - means聚类gydF4y2Ba是传统的,简单的gydF4y2Ba机器学习gydF4y2Ba在测试数据集上训练的算法,然后能够使用算法对新数据集进行分类gydF4y2Ba主要的gydF4y2Ba,gydF4y2Ba 先验定义的簇数。gydF4y2Ba
机器学习的一个目标是获得数据上的无监督学习技术。这种数据分析在许多需要数据分类的应用程序中非常有用,例如在大样本中识别癌细胞,聚类具有相似定义的单词以提高搜索引擎的准确性,识别学生学习成绩中的异常值以更好地改进习惯,甚至用于探测战场上的地雷gydF4y2Ba[2]gydF4y2Ba.gydF4y2Ba
用分类建立一支棒球队gydF4y2Ba
想象一下,一位高中棒球教练想要使用数据分析来预测潜在的新兵是出色的、平庸的还是糟糕的。gydF4y2Ba
他拥有球队中目前球员的数据:位置、经验年限、平均击球率、上垒率和场均盗垒数。他也有一些关于他正在考虑招募的球员的数据。他该如何挑选一名新球员来填补球队目前的技术空缺呢?gydF4y2Ba
内容gydF4y2Ba
k - means算法gydF4y2Ba
这种聚类算法根据算法已有的信息将数据分成最适合的组。数据以gydF4y2Ba 不同的集群,通常被选择在空间上彼此相距足够远,在gydF4y2BaEucledian距离gydF4y2Ba,才能产生有效的数据挖掘结果。每个簇都有一个中心,称为gydF4y2Ba重心gydF4y2Ba,并根据特征与质心的接近程度将数据点聚成一定的聚类。gydF4y2Ba
迭代K-means算法gydF4y2Ba最小化gydF4y2Ba每个数据点与其质心之间的距离以便为所有数据点找到最优解。gydF4y2Ba
- 选取数据集中的随机点作为质心。gydF4y2Ba
- 每个数据点与gydF4y2Ba 计算和存储质心。gydF4y2Ba
- 根据计算的距离,每个点被分配到最近的集群gydF4y2Ba
- 更新新的聚类质心位置:类似于在点位置中寻找平均值gydF4y2Ba
- 如果质心位置改变了,该过程将从第2步开始重复,直到计算出的新中心保持不变,这表明集群的成员和质心现在已经设置好。gydF4y2Ba
找到所有点之间的最小距离意味着数据点已经被分离,以形成最紧凑的簇,其中方差最小。换句话说,没有其他迭代可以有更低的质心和数据点之间的平均距离。gydF4y2Ba
技术分析gydF4y2Ba
上面定义的K-means算法的目的是最小化gydF4y2Ba目标函数gydF4y2Ba,在本例中为gydF4y2Ba平方误差gydF4y2Ba函数。gydF4y2Ba
K-means聚类算法的目标函数为平方误差函数:gydF4y2Ba
在那里,gydF4y2Ba
是点与点之间的欧氏距离,gydF4y2Ba ,和质心,gydF4y2Ba ,遍历所有gydF4y2BakgydF4y2Ba点在gydF4y2Ba 集群,面向所有人gydF4y2BangydF4y2Ba集群。gydF4y2Ba
简单地说,目标函数试图选择使所有属于其各自聚类的点的距离最小化的质心,以便质心更具有周围数据点聚类的符号。gydF4y2Ba
伪代码gydF4y2Ba
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29gydF4y2Ba |
|
为什么使用平方误差函数而不是绝对误差?原因是平方误差比绝对误差具有更好的数学性质。有关这些属性的进一步参考,请查看这个gydF4y2Ba博客gydF4y2Ba作者:Ben Khun。gydF4y2Ba
复杂性gydF4y2Ba
虽然算法看起来很简单,但要找到问题的最佳解决方案gydF4y2BadgydF4y2Ba尺寸或gydF4y2BakgydF4y2Ba集群是gydF4y2Ba赋权gydF4y2Ba.然而,如果gydF4y2BakgydF4y2Ba而且gydF4y2BadgydF4y2Ba都是固定的,问题能及时解决吗gydF4y2Ba 使用Lloyd 's算法,一种常见的k-聚类算法,其中gydF4y2BangydF4y2Ba要聚类的实体数。gydF4y2Ba[6]gydF4y2Ba.然而,这种算法在良好聚类数据上的运行时间可以相当小,因为目标函数的最小化将很快发生。gydF4y2Ba
因为算法计算的是每个gydF4y2BakgydF4y2Ba集群中心和它们各自的数据点每一次迭代,几个迭代就足以做进一步的调整,不值得时间复杂性的权衡。换句话说,由于进一步的迭代不会改变大多数数据点的分配,但它们的距离仍然需要计算,如果以收敛为目标,算法将变得低效。出于这个原因,Lloyd的k-means聚类算法的几个变体已经开发出来,以加快后期的过程;这些变化包括使用gydF4y2Ba三角不等式gydF4y2Ba,等等。gydF4y2Ba
例子gydF4y2Ba
在将k-means聚类应用于数据集之前,数据必须从对象的特征转换为可以分析的数值数据。gydF4y2Ba
棒球运动员分类gydF4y2Ba
棒球教练如何使用k-均值聚类来预测新兵是否优秀?玩家的每一个特征都可以用gydF4y2Ba特征向量gydF4y2Ba.通过将特征转换为特征向量中的数字,参与者在向量空间中变得具有可比性,以便更好地量化他们的差异。gydF4y2Ba
教练对现有球员和潜在的新球员都有相同类型的信息。在整个数据点上使用k-均值聚类,他可以找出当前已知水平(卓越、平庸、差劲)的球员中,哪些最接近新球员,哪些新球员将填补他的团队中最多的空缺。gydF4y2Ba
何时使用k均值聚类gydF4y2Ba
K-Means聚类是一种快速、鲁棒且简单的算法,当数据集不同或以线性方式彼此良好分离时,可以给出可靠的结果。当群集中心的数量由数据中显示的定义良好的类型列表指定时,最好使用这种方法。然而,重要的是要记住,如果K-Means聚类包含大量重叠的数据,如果欧几里得距离不能很好地测量潜在的因素,或者如果数据有噪声或充满异常值,那么K-Means聚类可能表现不佳gydF4y2Ba[7]gydF4y2Ba.gydF4y2Ba
参考文献gydF4y2Ba
- Brickley D。gydF4y2Ba1 k_overviewgydF4y2Ba.从检索gydF4y2Bahttps://www.flickr.com/photos/danbri/6233990550/in/photolist-auSQcG-87Yxj7-EmVCps-ptEDsu-7m1WFX-5EFMse-i4x1v-egRfqk-81wUmZ-a4D73j-87Yxiy-tty5TD-bAhHzE-5tMAuK-7MfnED-7rbggn-7rfbmm-rq7j4f-a1hTYE-gxCMpH-57XUAW-a6Nx34-8hAC1D-ounzPd-dybf7L-fCTKB3-dybeZd-dy5Mut-dybfdb-ow6s3X-wcCF9s-cqjRDS-rrXXND-dybfjm-fCBeqB-dy5MGx-fCTM13-nouGAk-71tzae-4xwxcC-k2tddi-8kfyKH-8hABZB-7y4a3Y-ou3Zst-ftDTEu-osZ261-oun8p5-cSNeMy-4eJiRWgydF4y2Ba
- 奈克,A。gydF4y2Ba聚类算法应用gydF4y2Ba.从检索gydF4y2Bahttps://sites.google.com/site/dataclusteringalgorithms/clustering-algorithm-applicationsgydF4y2Ba
- 彼得森,J。gydF4y2Bak - meansgydF4y2Ba.从检索gydF4y2Bahttp://pypr.sourceforge.net/kmeans.html#k-means-examplegydF4y2Ba
- 没有,N。gydF4y2Bak - means聚类gydF4y2Ba.检索自2016年5月2日gydF4y2Bahttps://en.wikipedia.org/wiki/K-means_clusteringgydF4y2Ba
- Matteucci, M。gydF4y2Bak - means聚类gydF4y2Ba.检索自2016年6月14日gydF4y2Bahttp://home.deib.polimi.it/matteucc/Clustering/tutorial_html/kmeans.htmlgydF4y2Ba
- 稻叶,M.(1994)。加权Voronoi图和随机化在基于方差的k-聚类中的应用。gydF4y2Ba计算机学会计算几何研讨会gydF4y2Ba,gydF4y2Ba10日gydF4y2Ba, 332 - 339。gydF4y2Ba
- 奈克,a。gydF4y2Bak-均值聚类算法gydF4y2Ba.检索自2016年6月14日gydF4y2Bahttps://sites.google.com/site/dataclusteringalgorithms/k-means-clustering-algorithmgydF4y2Ba