IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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
KMeans算法本身思想比较简单,但是合理的确定K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。

缺点:

  1. K的选择需要事先预定。
  2. K个初始质心的位置选择对聚类结果和运行时间都有很大影响。
  3. 不能保证全局最优,可能是局部最优解。

来源: 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,这个点优化的目标是:
在这里插入图片描述
来源: https://blog.csdn.net/ten_sory/article/details/81016748

4. 先对数据用层次聚类算法或者Canopy算法进行聚类,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点。

Canopy算法:
首先定义两个距离T1和T2,T1>T2.从初始的点的集合S中随机移除一个点P,然后对于还在S中的每个点I,计算该点I与点P的距离,如果距离小于T1,则将点I加入到点P所代表的Canopy中,如果距离小于T2,则将点I从集合S中移除,并将点I加入到点P所代表的Canopy中。迭代完一次之后,重新从集合S中随机选择一个点作为新的点P,然后重复执行以上步骤。

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下降幅度很大;
当K值大于真实聚类数时,K的增加不会对聚类效果产生很大影响,故SSE下降幅度将会趋于平缓;

整个SSE-K图为一个手肘型, 而这个肘部对应的k值就是数据的真实聚类数

在这里插入图片描述

SSE (Sum of Squared Error)

误差平法和 (SSE),用于评价聚类的结果的好坏. 一般情况下,k越大,SSE越小.
在这里插入图片描述
( 来源: https://blog.csdn.net/ten_sory/article/details/81016748)

其中, Cj 是第 j 个簇,o 是 Cj 中的样本点
mj 是 Cj 的 质心 / 中心点(Cj中所有样本的均值)

2. 轮廓系数
参考:
https://zhuanlan.zhihu.com/p/149441104
https://blog.csdn.net/qq_15738501/article/details/79036255
推荐选择SSE

K-Means++

K-Means++有下面几个步骤组成:

  1. 随机选取一个点作为第一个聚类中心。
  2. 计算所有样本与第一个聚类中心的距离。
  3. 选择出上一步中距离最大的点作为第二个聚类中心。
  4. 迭代:计算所有点到与之最近的聚类中心的距离,选取最大距离的点作为新的聚类中心。

终止条件:直到选出了这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算法
https://blog.csdn.net/github_39261590/article/details/76910689

参考来源:
https://www.cnblogs.com/dudumiaomiao/p/5839905.html
https://blog.csdn.net/github_39261590/article/details/76910689

评价指标

(后续补充)

数据降维

主成分分析(PCA)- 数据降维, 作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。

原理:
★★ Sklearn 与 TensorFlow 机器学习实用指南
主成分分析(PCA)原理总结
PCA(主成分分析) 降维算法详解 和代码
数据降维并使用K-Means法聚类

代码:
用scikit-learn学习主成分分析(PCA)

其他参考链接

http://itpcb.com/a/66864

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:44:50  更:2021-07-30 12:46:09 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码