KMeans原理、调参及应用
2015-09-07 20:39
274 查看
一、前言
KMeans是数据挖掘十大算法之一,在数据挖掘实践中,我们也常常将KMeans运用于各种场景,因为它原理简单、易于实现、适合多种数据挖掘情景。
二、原理
KMeans的原理较为简单:以某种相似性度量为标准,确定样本的结构,即样本属于哪一个簇取决于该样本与哪一个簇的中心点最相似。
算法步骤如下:
1.决定要将样本分成几个簇,设为K;
2.初始化K个簇的中心点;
3.遍历每一个样本,计算它与K个簇中心点的相似度,并将它分配到最相似的那个簇;
4.对K个簇重新计算中心点,每个簇的中心点为该簇中所有样本的均值,若中心点不变或变化小于某个可接受的范围,则结束,否则返回第3步。
常用的相似性度量包括欧氏距离、余弦相似度等,当特征向量为低维稠密向量时可使用欧氏距离,当特征向量为高维稀疏向量时(例如文本)可使用余弦相似度,当然,具体的相似性度量的选择要根据具体的应用场景而定。
三、如何评价KMeans
使用任何一个算法或模型都免不了对模型的评估,作为模型选择、调优的依据。
KMeans的损失函数:
其中,
代表样本i,
代表样本i所属的簇的中心点,损失函数即所有样本离所在簇中心的距离,认为每个簇内部越紧密,聚类效果越好。
四、调参
KMeans算法有两个需要决策的地方,一个是K的选择,另一个是初始中心点的选择。
1.K的选择
一般情况下,我们可以选取K=2,3,...,10进行多次试验,并以K值为X轴,以损失函数作为Y轴进行画图,理论上,随着K值的增大,损失函数会减小,选取图中的拐点(图中绿色的点)对应的K值为合适的K值,这意味着继续增大K值的效果已经不明显了。
但是也有可能曲线不存在明显的拐点,也就是说损失函数是随着K值的增大而稳步减小的,这时,我们还可以根据具体的应用拟定合适的指标作为Y值进行K值选取。
2.初始中心点的选择
初始中心点的选择最简单的做法是随机从样本中选K个作为中心点,但由于中心点的选择会影响KMeans的聚类效果,因此我们可以采取以下三种方式优化中心点的选取:
1.多次选取中心点进行多次试验,并用损失函数来评估效果,选择最优的一组;
2.选取距离尽量远的K个样本点作为中心点:随机选取第一个样本C1作为第一个中心点,遍历所有样本选取离C1最远的样本C2为第二个中心点,以此类推,选出K个初始中心点;
3.特别地,对于像文本这样的高维稀疏向量,我们可以选取K个两两正交的特征向量作为初始化中心点。
五、应用
KMeans的应用场景非常多,除了一般的聚类场景(例如对用户进行分群组、对微博文本进行分群组等)以外,我们还可以用KMeans实现单变量的离散化,因为一般的等频和等距的离散化方法往往会忽略变量中潜在的分布特征,而基于聚类的离散化可以一定程度地保留变量的分布特征。
KMeans是数据挖掘十大算法之一,在数据挖掘实践中,我们也常常将KMeans运用于各种场景,因为它原理简单、易于实现、适合多种数据挖掘情景。
二、原理
KMeans的原理较为简单:以某种相似性度量为标准,确定样本的结构,即样本属于哪一个簇取决于该样本与哪一个簇的中心点最相似。
算法步骤如下:
1.决定要将样本分成几个簇,设为K;
2.初始化K个簇的中心点;
3.遍历每一个样本,计算它与K个簇中心点的相似度,并将它分配到最相似的那个簇;
4.对K个簇重新计算中心点,每个簇的中心点为该簇中所有样本的均值,若中心点不变或变化小于某个可接受的范围,则结束,否则返回第3步。
常用的相似性度量包括欧氏距离、余弦相似度等,当特征向量为低维稠密向量时可使用欧氏距离,当特征向量为高维稀疏向量时(例如文本)可使用余弦相似度,当然,具体的相似性度量的选择要根据具体的应用场景而定。
三、如何评价KMeans
使用任何一个算法或模型都免不了对模型的评估,作为模型选择、调优的依据。
KMeans的损失函数:
其中,
代表样本i,
代表样本i所属的簇的中心点,损失函数即所有样本离所在簇中心的距离,认为每个簇内部越紧密,聚类效果越好。
四、调参
KMeans算法有两个需要决策的地方,一个是K的选择,另一个是初始中心点的选择。
1.K的选择
一般情况下,我们可以选取K=2,3,...,10进行多次试验,并以K值为X轴,以损失函数作为Y轴进行画图,理论上,随着K值的增大,损失函数会减小,选取图中的拐点(图中绿色的点)对应的K值为合适的K值,这意味着继续增大K值的效果已经不明显了。
但是也有可能曲线不存在明显的拐点,也就是说损失函数是随着K值的增大而稳步减小的,这时,我们还可以根据具体的应用拟定合适的指标作为Y值进行K值选取。
2.初始中心点的选择
初始中心点的选择最简单的做法是随机从样本中选K个作为中心点,但由于中心点的选择会影响KMeans的聚类效果,因此我们可以采取以下三种方式优化中心点的选取:
1.多次选取中心点进行多次试验,并用损失函数来评估效果,选择最优的一组;
2.选取距离尽量远的K个样本点作为中心点:随机选取第一个样本C1作为第一个中心点,遍历所有样本选取离C1最远的样本C2为第二个中心点,以此类推,选出K个初始中心点;
3.特别地,对于像文本这样的高维稀疏向量,我们可以选取K个两两正交的特征向量作为初始化中心点。
五、应用
KMeans的应用场景非常多,除了一般的聚类场景(例如对用户进行分群组、对微博文本进行分群组等)以外,我们还可以用KMeans实现单变量的离散化,因为一般的等频和等距的离散化方法往往会忽略变量中潜在的分布特征,而基于聚类的离散化可以一定程度地保留变量的分布特征。
相关文章推荐
- Installation Failure Troubleshooting for iOS
- RHEL/CentOS安装EPEL的YUM源
- 实用的sublime插件集合 – sublime推荐必备插件
- 暴力枚举进程
- 设计模式-facade模式
- 屏幕适配的注意事项
- poj 3278 简单搜索bfs
- fastJSON
- GSON解析
- Android中未读信息提示图标的实现
- linux下tar.xz文件解压缩
- 问题:In IOS8 wakeups limit
- Android开发:Button属性警告错误
- Android五大存储---SharedPreferences
- ceshi
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- S3C2440 GPS串口配置以及数据读写
- 南阳oj 求逆数 题目117
- 求两个字符串的最长公共子串的长度
- Linux&C ——信号以及信号处理