| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 综合多份资料的 k-means简述 -> 正文阅读 |
|
[人工智能]综合多份资料的 k-means简述 |
K-Means基本步骤
缺点:
来源: https://zhuanlan.zhihu.com/p/149441104 k-means优化基于欧几里得距离,K-Means算法需要优化的问题就是,使得簇内误差平方和(within-cluster sum of squared errors,SSE)最小,也叫簇惯性(cluster intertia)。 K-Means算法需要随机选择初始化的中心点,如果中心点选择不合适,可能会导致簇的效果不好或产生收敛速度慢等问题。解决这个问题一个比较合适的方法就是,在数据集上多次运行K-Means算法,根据簇内误差平方和(SSE)来选择性能最好的模型。 除此之外,还可以通过**K-Means++**算法,让初始的中心点彼此的距离尽可能的远,相比K-Means算法,它能够产生更好的模型。 确定K个初始类簇中心点参考: https://www.cnblogs.com/yunshangkanjing/p/12907374.html 1. 随机选择k个点作为初始的类簇中心点,但是该方法在有些情况下的效果较差. 2. 选择彼此距离尽可能远的K个点 首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。这种方法效果还不错. step1:计算所有样本点之间的距离,选择距离最大的一个点对(两个样本C1, C2)作为2个初始中心点,从样本点集中去掉这两个点。 step2:如果初始中心点个数达到k个,则终止。如果没有,在剩余的样本点中,选一个点C3,这个点优化的目标是: 4. 先对数据用层次聚类算法或者Canopy算法进行聚类,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点。 Canopy算法: Canopy算法执行完毕后会得到很多Canopy,可以认为每个Canopy都是一个Cluster,与KMeans等硬划分算法不同,Canopy的聚类结果中每个点有可能属于多个Canopy。我们可以选择距离每个Canopy的中心点最近的那个数据点,或者直接选择每个Canopy的中心点作为KMeans的初始K个类簇中心点。 K值的确定详细信息请参考: https://blog.csdn.net/qq_15738501/article/details/79036255 1. 手肘法 可以作出这个范围内的SSE-k的曲线,再选择一个拐点,作为合适的k值 当K值小于真实聚类数时,K的增加会对聚类效果产生很大影响,故SSE下降幅度很大; 整个SSE-K图为一个手肘型, 而这个肘部对应的k值就是数据的真实聚类数 SSE (Sum of Squared Error)误差平法和 (SSE),用于评价聚类的结果的好坏. 一般情况下,k越大,SSE越小. 其中, Cj 是第 j 个簇,o 是 Cj 中的样本点 2. 轮廓系数 K-Means++K-Means++有下面几个步骤组成:
终止条件:直到选出了这k个中心。 总而言之, 只需要随机取第一个聚类中心即可, 然后按照最远优先原则来选新的聚类中心 (参考: https://zhuanlan.zhihu.com/p/149441104 ) 对于k-means++的另一种解释: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算法 参考来源: 评价指标(后续补充) 数据降维主成分分析(PCA)- 数据降维, 作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。 原理: 代码: 其他参考链接 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 10:56:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |