聚类算法
来源:互联网 发布:mac安装php环境 编辑:程序博客网 时间:2024/06/05 21:56
机器学习中有两类的大问题,一个是分类,一个是聚类。分类是根据一些给定的已知类别标号的样本,训练某种学习机器,使它能够对未知类别的样本进行分类。这属于supervised learning(监督学习)。而聚类指事先并不知道任何样本的类别标号,希望通过某种算法来把一组未知类别的样本划分成若干类别,这在机器学习中被称作 unsupervised learning (无监督学习)。
1、定义:
所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。
2、相异度计算(跟之前的一篇博文中kNN相似)
1、曼哈顿距离:对应特征值相减的绝对值的累和。类似一范数
2、欧式距离:对应特征值相减后的平方和再取根号。类似二范数
3、余弦距离:
4、核函数映射后的距离
3、聚类算法分类
1、cluster是一个独立于里干外一个的:k-means,高斯混合模型
2、树状层叠,无需输入聚类个数:层次聚类
4、k-means聚类算法
算法流程:
1)从D中随机取k个元素,作为k个簇的各自的中心。
2)分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
3)根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
4)将D中全部元素按照新的中心重新聚类。
5)重复第4步,直到聚类结果不再变化。
6)将结果输出
4.1 迭代收敛怎么定义:
1、聚类中心不再有变化
2、每个样本到对应聚类中心的距离之和不再有很大的变化
4.2 损失函数有吗
这是一个NP问题,收敛到局部最低点的过程(初始值点不同,收敛结果可能也不同)。
怎么解决这个问题呢?
1.第一个聚类中心选一个样本点,第二个聚类中心选距离它最远的样本点,第三个…..(k-means ++)
2.多初始化几遍(sklearn里面初始化10次)
4.3 k的取值问题
肘点法:
5.层次聚类
根据簇与簇之间的距离来进行聚类,每一个层次的都有.
6.高斯混合模型
- 聚类算法:DBScan算法
- isoData算法整理 常用算法 聚类算法 kmeans算法
- 聚类算法之K邻近算法
- 聚类算法 K-Means算法
- 聚类算法之K-mean算法
- 聚类算法之k-medoids算法
- 进化聚类算法的相关算法
- 聚类算法:K-Means算法
- 聚类算法与贪心算法
- 聚类算法和分类算法总结
- 聚类算法(二):DBSCAN算法
- 常用聚类算法以及算法评价
- 【机器学习】聚类算法:ISODATA算法
- 从DBSCAN算法谈谈聚类算法
- 聚类算法之AP算法
- 常用聚类算法以及算法评价
- R聚类算法-DBSCAN算法
- 聚类算法-dbscan算法的研究
- ubuntu 14.04中solidity的安装教程
- 七牛云主机宝塔运行环境配置
- 写作建议
- [numpy]split()和array_split()
- 设备树格式
- 聚类算法
- 【MQ】Eclipse向RocketMQ中发送和接收消息
- C# Class and Struct 区别
- window搭建react-native开发环境
- Mysql使用总结
- ROS Ubuntu 安装
- Android Studio运行项目很慢时间很长的记录
- 宏定义函数container_of的解释
- RelativeLayout 常用属性