问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

聚类k-means++、k-means参数、Mini Batch K-Means

发布网友 发布时间:2022-09-14 16:53

我来回答

1个回答

热心网友 时间:2024-12-14 15:36

1.1 KMeans介绍

k-means 优缺点:

1.算法快速、简单;

2.对大数据集有较高的效率并且是可伸缩性的;

3.时间复杂度近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(n×k×t) ,其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目 。计算复杂度在最坏的情况下为 O(n^(k+2/p)),其中n是样本量,p是特征个数。

注 在实践中,k-means算法时非常快的,属于可实践的算法中最快的那一类。但是它的解只是由特定初始值所产生的局部解。所以为了让结果更准确真实,在实践中要用不同的初始值重复几次才可以。

k-means的缺点:

1、在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。

2、 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果,这也成为 K-means算法的一个主要问题。

3、从 K-means 算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。所以需要对算法的时间复杂度进行分析、改进,提高算法应用范围。

对于上述的初始聚类中心的选择可以用**k-means++**来解决

1.2 KMeans() 参数

参数:

n_clusters:整形,缺省值=8 【生成的聚类数,即产生的质心(centroids)数。】

max_iter:整形,缺省值=300 ,执行一次k-means算法所进行的最大迭代数。

n_init:整形,缺省值=10 ,用不同的质心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果。

init:有三个可选值:’k-means++’, ‘random’,或者传递一个ndarray向量。

此参数指定初始化方法,默认值为 ‘k-means++’。

(1)‘k-means++’ 用一种特殊的方法选定初始质心从而能加速迭代过程的收敛(即上文中的k-means++介绍)

(2)‘random’ 随机从训练数据中选取初始质心。

(3)如果传递的是一个ndarray,则应该形如 (n_clusters, n_features) 并给出初始质心。

precompute_distances:三个可选值,‘auto’,True 或者 False。

预计算距离,计算速度更快但占用更多内存。

(1)‘auto’:如果 样本数乘以聚类数大于 12million 的话则不预计算距离。This corresponds to about 100MB overhead per job using double precision.

(2)True:总是预先计算距离。

(3)False:永远不预先计算距离。

tol:float形,默认值= 1e-4 与inertia结合来确定收敛条件。

n_jobs:整形数。 指定计算所用的进程数。内部原理是同时进行n_init指定次数的计算。

(1)若值为 -1,则用所有的CPU进行运算。若值为1,则不进行并行运算,这样的话方便调试。

(2)若值小于-1,则用到的CPU数为(n_cpus + 1 + n_jobs)。因此如果 n_jobs值为-2,则用到的CPU数为总CPU数减1。

random_state:整形或 numpy.RandomState 类型,可选

用于初始化质心的生成器(generator)。如果值为一个整数,则确定一个seed。此参数默认值为numpy的随机数生成器。

copy_x:布尔型,默认值=True

当我们precomputing distances时,将数据中心化会得到更准确的结果。如果把此参数值设为True,则原始数据不会被改变。如果是False,则会直接在原始数据 上做修改并在函数返回值时将其还原。但是在计算过程中由于有对数据均值的加减运算,所以数据返回后,原始数据和计算前可能会有细小差别。

属性:

cluster_centers_:向量,[n_clusters, n_features] (聚类中心的坐标)

Labels_: 每个点的分类

inertia_:float形 ,每个点到其簇的质心的距离之和。

Methods:

fit(X[,y]): 计算k-means聚类。

fit_predictt(X[,y]): 计算簇质心并给每个样本预测类别。

fit_transform(X[,y]): 计算簇并 transform X to cluster-distance space。

get_params([deep]): 取得估计器的参数。

predict(X):predict(X) 给每个样本估计最接近的簇。

score(X[,y]): 计算聚类误差

set_params(params): 为这个估计器手动设定参数。

transform(X[,y]): 将X转换为群集距离空间。 在新空间中,每个维度都是到集群中心的距离。 请注意,即使X是稀疏的,转换返回的数组通常也是密集的。

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

2.1 算法步骤

(1)从输入的数据点集合中随机选择一个点作为第一个聚类中心

(2)对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)

(3)选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大

(4)重复2和3直到k个聚类中心被选出来

(5)利用这k个初始的聚类中心来运行标准的k-means算法

从上面的算法描述上可以看到,算法的关键是第3步,如何将D(x)反映到点被选择的概率上,一种算法如下:

(1)先从我们的数据库随机挑个随机点当“种子点”

(2)对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。

(3)然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。

(4)重复2和3直到k个聚类中心被选出来

(5)利用这k个初始的聚类中心来运行标准的k-means算法

可以看到算法的第三步选取新中心的方法,这样就能保证距离D(x)较大的点,会被选出来作为聚类中心了。

3.1 介绍

在统的K-Means算法中,要计算所有的样本点到所有的质心的距离。如果样本量非常大,比如达到10万以上,特征有100以上,此时用传统的K-Means算法非常的耗时,就算加上elkan K-Means优化也依旧。在大数据时代,这样的场景越来越多。此时Mini Batch K-Means应运而生。

顾名思义,Mini Batch,也就是用样本集中的一部分的样本来做传统的K-Means,这样可以避免样本量太大时的计算难题,算法收敛速度大大加快。当然此时的代价就是我们的聚类的精确度也会有一些降低。一般来说这个降低的幅度在可以接受的范围之内。

在Mini Batch K-Means中,我们会选择一个合适的批样本大小batch size,我们仅仅用batch size个样本来做K-Means聚类。那么这batch size个样本怎么来的?一般是通过无放回的随机采样得到的。

为了增加算法的准确性,我们一般会多跑几次Mini Batch K-Means算法,用得到不同的随机采样集来得到聚类簇,选择其中最优的聚类簇。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...经常感到孤独、万事无聊,请问怎样治疗孤独?谢谢! 移动号码不用了一段时间现在拨号显示空号要怎么激活 圣女小番茄简介 《一曲终人两散》最新txt全集下载 石膏几何体写生内容简介 石膏几何体内容简介 句子: We mustn't climb the trees.怎么填空? 市妇婴医院生产点样建档? 长治怀孕建档要准备什么材料呢? 工厂隔音房 孟获第二关每次都被毒气秒怎么破 雨中跳风筝误的陈老师的联系方式 魔兽世界猎人怎样打战士? 4.3痛苦术打兽王猎怎么打? 魔兽世界5.4请教这个版本的恶魔术怎么PVP 如何风筝,跳射~~~ 武林外传手游轻功怎么玩 轻功飞行技巧攻略 如何评价斗鱼推出的收费直播 ...设置,后面发新的朋友圈,新的那条朋友圈他能看到吗? BOSCH燃气热水器现在不知哪个零件坏了,指示灯都不亮了,打不著火_百度... 热水器指示灯不亮不加热? 热水器控制面板不亮了怎么回事 哪些人适合喝五味子蜂蜜 12岁的男孩的心理需求 12岁的男孩有什么心理需求 大学生采访稿对话式范文 说是余额8000买了会员转到其他平台去,分信管家,宜宾树奇网络科技有限公... 分信管家开通会员是真的吗? 分信管家贷款开通会员是真的贷的下来嘛? 1,6,9,3用三种方法算24点 新版微信怎么注册 乐山大佛“真身”全部露出:水位与往年同期相比低近2米,对其是否有影响... 乐山大佛“真身”全露出,景区回应:其实一直都看得到,有受到干旱影响吗... 善良是好还是不好?为什么人善就会被欺负? 长跑的训练计划 善良到底是好还是坏 大家觉得做人善良好呢还是心肠坏好? 大家觉得做人心地善良好点还是心肠坏好点呢? 人心是善良好,还是一般好? 人是善良好还是恶毒好? 熊猫烧香病毒··威力多大··还存在么·我先试下威力 如何看待斗鱼出台的“直播间违规管理方法” 山西一妈妈飞机上怕宝宝吵闹,给所有乘客送耳塞和糖果,这是个怎样的妈妈... 伽利略是科学家。 铁球落下来。 人呼喊起来。 他站在那儿。 青年在画画... 火山小视频怎么搜索蜜糖与毒药这首歌 描写人心难测的古诗词 女孩取名。姓刘,2012-12-15生。小名,西西。 网上银行怎么样给支付宝充值 如何用网上银行给支付宝充值?介绍一下步骤。越详细越好 规培是要等护考考完才去吗 现在没有护士资格证可以考规培吗?