大数据分析特点?
500
2024-04-23
K-Means聚类算法的优点主要集中在:
1.算法快速、简单;
2.对大数据集有较高的效率并且是可伸缩性的;
3.时间复杂度近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(nkt) ,其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目。
K-means算法的起源
1967年,James MacQueen在他的论文《用于多变量观测分类和分析的一些方法》中首次提出 “K-means”这一术语。1957年,贝尔实验室也将标准算法用于脉冲编码调制技术。1965年,E.W. Forgy发表了本质上相同的算法——Lloyd-Forgy算法,所以这一算法有时也被称为Lloyd-Forgy算法。更高效的版本则被Hartigan and Wong提出。
K-means算法的原理
K-Means聚类算法是聚类算法之一,其中K表示类别的数量,也就是说,我们想要将数据分成几个类别,Means表示均值。K值决定了初始质心(通常是随机选择的中心)的数量。K值是几,必须有几个质心。 简而言之,K-Means聚类算法是一种通过均值聚类数据点的算法。
K-means算法的过程
1、首先输入K的值,将数据集分为K个类别。
2、从这组数据中随机选择K个数据点作为初始大哥(初始质心),其它数据点都作为小弟。
3、对数据集中每一个小弟,计算与每一个大哥的距离,离哪个大哥距离最近,就分配给哪个大哥。
4、每一个大哥手下都聚集了一帮小弟,这时候召开黑帮会议,推选出新的大哥(新的质心)。
5、如果新大哥和老大哥之间的距离很小或为0,说明新任大哥靠谱,选举结束(可以认为我们进行的聚类已经达到期望的结果,算法终止)。
6、如果新大哥和老大哥之间的距离很大,需要重新选举新大哥,分配小弟(重复3~5的步骤)。
简单容易入门上手的软件可以使用Matlab,或者python,效率更高的可以用C或者C++语言进行编程实现仿真。
k-means不是分类算法,是聚类算法。
k-means算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小.聚类相似度是利用各聚类中对象的均值所获得一个“中心对
象”(引力中心)来进行计算的.
k-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.k-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果.
k-means和knn算法是机器学习中常用的两种算法,它们具有以下区别:1. k-means和knn算法在使用方式和应用场景上有所不同。2. k-means算法是一种无监督学习算法,用于将数据划分为k个不同的簇。它通过计算数据点与各个簇中心的距离来确定每个点所属的簇,并不依赖于标记的先验知识。而knn算法是一种有监督学习算法,用于分类或回归问题。基于距离度量,knn算法通过比较新样本与训练数据中的样本之间的距离来进行预测或分类。3. 除了使用方式和应用场景的区别,k-means和knn算法还有其他方面的差异。例如,k-means算法需要用户指定簇的数量k,而knn算法需要用户指定k个最近邻的数量。此外,k-means算法对于异常值和噪声比较敏感,而knn算法对于样本分布的密度变化较为敏感。综上所述,k-means和knn算法在使用方式、应用场景和算法特性上存在明显的区别。
K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
k-means算法基本步骤
(1)从数据中选择k个对象作为初始聚类中心;
(2)计算每个聚类对象到聚类中心的距离来划分;
(3)再次计算每个聚类中心
(4)计算标准测度函数,之道达到最大迭代次数,则停止,否则,继续操作。
1. 数据的先验知识,或者数据进行简单分析能得到K值。
2. 基于变化的算法:即定义一个函数,随着K的改变,认为在正确的K时会产生极值。
3. 基于结构的算法:即比较类内距离、类间距离以确定K。
4. 基于一致性矩阵的算法:即认为在正确的K时,不同次聚类的结果会更加相似,以此确定K。
5. 基于层次聚类:即基于合并或分裂的思想,在一定情况下停止从而获得K。
6. 基于采样的算法:即对样本采样,分别做聚类;根据这些结果的相似性确定K。如,将样本分为训练与测试样本;对训练样本训练分类器,用于预测测试样本类别,并与聚类的类别比较
7. 使用Canopy Method算法进行初始划分。
8. 使用BIC算法进行初始划分。
① 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。这也是 K-means 算法的一个不足。有的算法是通过类的自动合并和分裂,得到较为合理的类型数目 K,例如 ISODATA 算法。关于 K-means 算法中聚类数目K 值的确定在文献中,是根据方差分析理论,应用混合 F统计量来确定最佳分类数,并应用了模糊划分熵来验证最佳分类数的正确性。在文献中,使用了一种结合全协方差矩阵的 RPCL 算法,并逐步删除那些只包含少量训练数据的类。而文献中使用的是一种称为次胜者受罚的竞争学习规则,来自动决定类的适当数目。它的思想是:对每个输入而言,不仅竞争获胜单元的权值被修正以适应输入值,而且对次胜单元采用惩罚的方法使之远离输入值。 ② 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果,这也成为 K-means算法的一个主要问题。对于该问题的解决,许多算法采用遗传算法(GA),例如文献 中采用遗传算法(GA)进行初始化,以内部聚类准则作为评价指标。 ③ 从 K-means 算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的。所以需要对算法的时间复杂度进行分析、改进,提高算法应用范围。在文献中从该算法的时间复杂度进行分析考虑,通过一定的相似性准则来去掉聚类中心的侯选集。而在文献中,使用的 K-means 算法是对样本数据进行聚类,无论是初始点的选择还是一次迭代完成时对数据的调整,都是建立在随机选取的样本数据的基础之上,这样可以提高算法的收敛速度。
在模式识别中,k-means算法是一种常见且有效的聚类算法。它的基本思想是通过不断迭代更新各个类别的均值,将数据集划分成K个簇。这种算法在处理大规模数据和寻找数据内在结构方面具有广泛的应用。
为了更好地理解k-means算法的运行原理,让我们尝试通过一个具体的计算题来说明。假设有一个包含10个数据点的数据集,我们希望将其分成3个簇。首先,我们需要初始化三个簇的中心点,可以随机选择数据集中的三个点作为初始中心点。
接下来,我们根据每个数据点与各个簇中心点的距离来重新分配数据点的所属簇。具体而言,对于每个数据点,我们计算其与各个簇中心点的距离,并将其归为距离最近的簇。
一旦所有数据点都被重新分配到对应的簇中,我们需要更新每个簇的中心点位置。对于每个簇,我们计算其所有数据点的平均值,将该平均值作为新的簇中心点。
以上步骤是k-means算法的一次迭代过程,我们需要不断重复这些步骤,直到算法收敛,即簇中心点不再发生变化或变化极小。最终,我们将得到数据集被划分为3个簇的结果。
通过上面的计算题,我们可以清晰地看到k-means算法是如何根据数据点与簇中心点的距离来进行聚类的过程。这种基于距离的聚类方法在模式识别中有着广泛的应用,能够帮助我们发现数据中的潜在结构和规律。
总的来说,k-means算法作为一种经典的模式识别算法,具有简单易懂、计算高效的特点,在实际应用中得到了广泛的应用和验证。通过不断地优化和改进算法,我们可以进一步提升其在数据分析和模式识别领域的效果。
通过利用K-means聚类算法为工具,对研究对象船舶在整个航线(上海—重庆,其中经过的航区为:上海-南京、南京-池州、池州-武汉、武汉-宜昌、宜昌-丰都、丰都-重庆)中不同区域内的通航环境进行种类划分,为实现船舶的高效管理和有效降低船舶的尾气污染排放问题提供可能性。
具体原理为:首先将获得的有效数据进行合理的处理,降低其数据自身的错误影响;然后基于处理后的有效数据为基础,进行归一化处理,以降低各种数据的冗余性,减少数据数量级不同而造成的不必要影响,最后基于K-means聚类相关理论知识进行数据的聚类划分,实现整个航线的不同分段划分,为船舶在实际的航行过程中处于特定的航行区域内时进行相关的航行操作提供理论的指导。