首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

物以类聚的算法了解一下?

我们人类常常会通过某些群体的固有特征来对某些人或者事物进行分类。比如穿着校服背着书包的,我们会认为是学生;穿着格子衬衫拿着电脑的是程序员(并不……);穿着西装拿公文包的是保险从业员。如果把这些不同职业的人按性别来分,又可以分成两类。我们发现对于同一个群体,根据职业和根据性别来划分,得到不同的结果。

如果我们用算法来把不同的东西聚到一起要怎么做呢?

这一类任务的实现过程我们称为聚类,clustering。聚类就是把多个对象分成不同的组别,相似的对象分到一组。每一组称为cluster,中文译为“簇”,比如分成k组,那就是有k个簇。比如对于同一个数据集,我们可以分成两簇,可以分成三簇,也可以分成四簇。解决聚类问题的最简单最常见的算法,就是K-means算法。

James MacQueen 1967年在他的论文《关于多变量分类的一些方法》中首次使用了“k-means”这个术语。K-means算法最初由贝尔实验室的Stuart Lloyd于1957年提出,应用于脉冲编码调制技术,就是信号处理里可以区分不同的信号。1966年,Edward Forgy发表了基本相同的方法,所以K-means算法也被称为Lloyd-Forgy方法。

K-means是源于信号处理中的一种向量量化方法,现在更多地作为一种聚类分析方法流行于数据挖掘领域。K-means的目的是:把n个样本划分到k个簇中,使得每个样本都属于离它最近的均值对应的簇,以之作为聚类的标准。

我们先介绍一个基本概念——质心。K-means的mean是均值的意思,比如2和8的均值,是位于2, 8中心的5。

质心,是质量中心的简称。而求质心其实就是求所有样本在每个维度的均值。

比如(1,1) (2,5)这两个点,分别求2个维度的均值,

得到的(3/2,3)这个点就是两个点的质心。

再比如我们有3个点,同样是求2个维度的均值,

得到的(8/3,3)这个点就是三个点的质心。

k是由我们来决定的,k值的选取很重要,也是一个很复杂的问题。在具体的应用时具体考虑。当初始质心选取不同时,算法的步数也会不同,所以关于质心的选取也是一个不能忽视的点。

我们可以对一张图片的像素点进行聚类。k取2时(图2),图片只区分成两种颜色;k取3(图3),显示出3种颜色;k取4(图4),显示4种颜色;……

当我们取10的时候(图5),能获取到大部分有用的信息来识别图片上的元素。我们再扩大k的取值,取到20(图6),却发现反而丢失了一些细节。从图中某些局部可以看出,并不是k越大,细节就越显著(比如后两幅图中向日葵的眼睛),k取20的时候反而丢失了这个细节。这是因为k-means的初始位置是随机的,所以对于相同的样本每次聚类可能会有不同的结果。

K-means有一定的局限性:第一,K-means算法的k是事先给定的,这个k值的选定非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。第二,初始点的选择是随机的,而初始点选择的不同,有可能导致完全不同的结果,这也会带来很大的问题。

—END—

你点的每个在看,我都认真当成了喜欢

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191203A0P5SM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券