26.K-均值算法的优化目标、随机初始化、聚类数的选择
一、K-均值算法的优化目标
K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和
K-均值的代价函数(又称畸变函数 Distortion function)为:
J(c(1),...,c(m),μ1,...,μK)=1m∑i=1m∥X(i)−μc(i)∥2J(c^{(1)},...,c^{(m)},μ_1,...,μ_K)=\dfrac {1}{m}\sum^{m}_{i=1}\left\| X^{\left( i\right) }-\mu_{c^{(i)}}\right\| ^{2}J(c(1),...,c(m),μ1,...,μK)=m1i=1∑m∥∥X(i)−μc(i)∥∥2
μc(i){{\mu }_{{{c}^{(i)}}}}μc(i)代表与x(i){{x}^{(i)}}x(i)最近的聚类中心点
我们的的优化目标便是找出使得代价函数最小的 c(1)c^{(1)}c(1),c(2)c^{(2)}c(2),…,c(m)c^{(m)}c(m)和μ1μ^1μ1,μ2μ^2μ2,…,μkμ^kμk:
在K-均值算法的迭代实现过程中,算法第一个循环用于减小 c(i) 引起的代价,而第二个循环则是用于减小 μi 引起的代价。算法会在每一次迭代都减小代价函数,不然便说明存在错误
二、随机初始化
2.1 随机初始化的聚类中心点的方法
选择K<mK<mK<m,即聚类中心点的个数要小于所有训练集实例的数量
随机选择KKK个训练实例,然后令KKK个聚类中心分别与这KKK个训练实例相等
2.2 随机初始化可能出现的问题
K-means的一个问题在于,如果初始化不好,有可能会停留在一个局部最小值处(局部最优解)
解决局部最优问题就是多次随机初始化,找到最好的解(畸变函数最小,即代价最小):通常需要运行多次 K-means算法,每一次都重新随机初始化,最后比较多次运行 K-means的结果,选择代价函数最小的结果
- 这种方法在K较小的时候(2-10)可行,如果K较大可能不会有明显地改善
- 这种方法在K较小的时候(2-10)可行,如果K较大可能不会有明显地改善
三、聚类数的选择
- 没有所谓最好的选择聚类数的方法,通常是需要根据不同的问题,人工进行选择的
- 选择的时候思考我们运用K-均值算法聚类的动机是什么,然后选择能最好服务于该目的标聚类数
3.1 肘部法则
肘部法则——选择聚类数目的一个方法
肘部法则的具体内容:我们所需要做的是改变KKK值,也就是聚类类别数目的总数。用一个聚类来运行K均值聚类方法。这就意味着,所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数JJJ。KKK代表聚类数字
肘部法则具体例子:
- 假设使用肘部法则得到上面左图的曲线,我们看到在K=3K=3K=3的时候达到一个肘点。在此之后,畸变值就下降的非常慢, 则我们就选K=3K=3K=3,这是一种用来选择聚类个数的合理方法
- 但是大部分情况下会像上面的右图一样没有肘点,这时就需要人工选择
四、聚类的其他知识扩充
4.1 相似度/距离计算方法总结
(1). 闵可夫斯基距离Minkowski/(其中欧式距离:p=2p=2p=2)
dist(X,Y)=(∑i=1n∣xi−yi∣p)1pdist(X,Y)={{\left( {{\sum\limits_{i=1}^{n}{\left| {{x}_{i}}-{{y}_{i}} \right|}}^{p}} \right)}^{\frac{1}{p}}}dist(X,Y)=(i=1∑n∣xi−yi∣p)p1
(2). 杰卡德相似系数(Jaccard):
J(A,B)=∣A∩B∣∣A∪B∣J(A,B)=\frac{\left| A\cap B \right|}{\left|A\cup B \right|}J(A,B)=∣A∪B∣∣A∩B∣
(3). 余弦相似度(cosine similarity):
nnn维向量xxx和yyy的夹角记做θ\thetaθ,根据余弦定理,其余弦值为:
cos(θ)=xTy∣x∣⋅∣y∣=∑i=1nxiyi∑i=1nxi2∑i=1nyi2cos (\theta )=\frac{{{x}^{T}}y}{\left|x \right|\cdot \left| y \right|}=\frac{\sum\limits_{i=1}^{n}{{{x}_{i}}{{y}_{i}}}}{\sqrt{\sum\limits_{i=1}^{n}{{{x}_{i}}^{2}}}\sqrt{\sum\limits_{i=1}^{n}{{{y}_{i}}^{2}}}}cos(θ)=∣x∣⋅∣y∣xTy=i=1∑nxi2i=1∑nyi2i=1∑nxiyi
(4). Pearson皮尔逊相关系数:
ρXY=cov(X,Y)σXσY=E[(X−μX)(Y−μY)]σXσY=∑i=1n(x−μX)(y−μY)∑i=1n(x−μX)2∑i=1n(y−μY)2{{\rho }_{XY}}=\frac{\operatorname{cov}(X,Y)}{{{\sigma }_{X}}{{\sigma }_{Y}}}=\frac{E[(X-{{\mu }_{X}})(Y-{{\mu }_{Y}})]}{{{\sigma }_{X}}{{\sigma }_{Y}}}=\frac{\sum\limits_{i=1}^{n}{(x-{{\mu }_{X}})(y-{{\mu }_{Y}})}}{\sqrt{\sum\limits_{i=1}^{n}{{{(x-{{\mu }_{X}})}^{2}}}}\sqrt{\sum\limits_{i=1}^{n}{{{(y-{{\mu }_{Y}})}^{2}}}}}ρXY=σXσYcov(X,Y)=σXσYE[(X−μX)(Y−μY)]=i=1∑n(x−μX)2i=1∑n(y−μY)2i=1∑n(x−μX)(y−μY)
- Pearson相关系数即将xxx、yyy坐标向量各自平移到原点后的夹角余弦
4.2 聚类的衡量指标
(1). 均一性:ppp
- 类似于精确率,一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率(每个 聚簇中正确分类的样本数占该聚簇总样本数的比例和)
(2). 完整性:rrr
- 类似于召回率,同类别样本被归类到相同簇中,则满足完整性;每个聚簇中正确分类的样本数占该
- 类型的总样本数比例的和
(3). V-measure: 均一性和完整性的加权平均
V=(1+β2)∗prβ2∗p+rV = \frac{(1+\beta^2)*pr}{\beta^2*p+r}V=β2∗p+r(1+β2)∗pr
(4). 轮廓系数
样本iii的轮廓系数:s(i)s(i)s(i)
簇内不相似度:计算样本iii到同簇其它样本的平均距离为a(i)a(i)a(i),应尽可能小。
簇间不相似度:计算样本iii到其它簇CjC_jCj的所有样本的平均距离bijb_{ij}bij,应尽可能大。
轮廓系数:s(i)s(i)s(i)值越接近1表示样本iii聚类越合理,越接近-1,表示样本iii应该分类到 另外的簇中,近似为0,表示样本iii应该在边界上;所有样本的s(i)s(i)s(i)的均值被成为聚类结果的轮廓系数。
s(i)=b(i)−a(i)max{a(i),b(i)}s(i) = \frac{b(i)-a(i)}{max\{a(i),b(i)\}}s(i)=max{a(i),b(i)}b(i)−a(i)
(5). ARI
- 数据集SSS共有NNN个元素, 两个聚类结果分别是:
X={X1,X2,...,Xr},Y={Y1,Y2,...,Ys}X=\{{{X}_{1}},{{X}_{2}},...,{{X}_{r}}\},Y=\{{{Y}_{1}},{{Y}_{2}},...,{{Y}_{s}}\}X={X1,X2,...,Xr},Y={Y1,Y2,...,Ys}
- XXX和YYY的元素个数为:
a={a1,a2,...,ar},b={b1,b2,...,bs}a=\{{{a}_{1}},{{a}_{2}},...,{{a}_{r}}\},b=\{{{b}_{1}},{{b}_{2}},...,{{b}_{s}}\}a={a1,a2,...,ar},b={b1,b2,...,bs}
记:nij=∣Xi∩Yi∣{{n}_{ij}}=\left| {{X}_{i}}\cap {{Y}_{i}} \right|nij=∣Xi∩Yi∣
ARI=∑i,jCnij2−[(∑iCai2)⋅(∑iCbi2)]/Cn212[(∑iCai2)+(∑iCbi2)]−[(∑iCai2)⋅(∑iCbi2)]/Cn2ARI=\frac{\sum\limits_{i,j}{C_{{{n}_{ij}}}^{2}}-\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)\cdot \left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]/C_{n}^{2}}{\frac{1}{2}\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)+\left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]-\left[ \left( \sum\limits_{i}{C_{{{a}_{i}}}^{2}} \right)\cdot \left( \sum\limits_{i}{C_{{{b}_{i}}}^{2}} \right) \right]/C_{n}^{2}}ARI=21[(i∑Cai2)+(i∑Cbi2)]−[(i∑Cai2)⋅(i∑Cbi2)]/Cn2i,j∑Cnij2−[(i∑Cai2)⋅(i∑Cbi2)]/Cn2
26.K-均值算法的优化目标、随机初始化、聚类数的选择相关推荐
- k均值算法的优化目标和随机初始化
这里我们来学习k均值算法的优化目标(代价函数): 优化目标的值等于每一个训练集数据到该所属的聚类中心距离的平方的平均值 其实在我们进行之前所循环进行的聚类分簇和移动聚类中心的操作,都是在不断的最小化J ...
- K 均值算法-如何让数据自动分组
公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...
- 基于K均值算法的鸢尾花聚类实验(Sklearn实现)
实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...
- K均值算法(继续优化中)
K均值算法代码 #include<iostream> #include<math.h> using namespace std; //distance函数通过欧几里得计算两点间 ...
- (学习笔记)聚类算法 - k均值算法(k-means)
聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...
- k均值算法 二分k均值算法_如何获得K均值算法面试问题
k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...
- 一句话总结K均值算法
一句话总结K均值算法 核心:把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定. k均值算法是一种无监督的聚类算法.算法将每个样本分配到离它最近的那个类中心所代表的类,而类中心的确 ...
- k均值算法原理详细讲解以及matlab代码实现
有研究生物电信号处理和机器学习的欢迎加我qq429500506共同交流学习进步. 最近更新文章的频率太低了,主要原因是不想为了发文章而发文章,想潜心研究,写好文章,顺便想说一句开源万岁,最近一个月虽然 ...
- 机器学习算法总结--K均值算法
参考自: <机器学习> 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) K-Means Clustering 斯坦福大学公开课 :机器学习课程 简介 K-均值是 ...
最新文章
- VC提前注入.net软件的方法
- SSH框架整合的流程
- c3p0、dbcp、druid三大连接池对比
- Java算法--冒泡排序
- 交叉熵(cross_entropy)作为损失函数在神经网络中的作用
- 百度现场面试:JVM+算法+Redis+数据库!(三面)| CSDN博文精选
- 【BZOJ4516】生成魔咒,后缀数组+Splay
- 如何显示最近过生日的记录
- Java教程:Java JDK环境变量配置
- python实现图灵机器人帮你回复微信好友消息
- vue cli 4 多环境_Vue 笔记整理19
- AS:Flash AS3中获取浏览器信息及URL相关参数(并非swf url地址)
- 北京亚信科技java笔试题_亚信科技java面试题及答案
- iOS 10越狱设备终于有越狱移除工具了!
- 新手入门 哪个视频剪辑软件好用
- 创建Image图像的几种方法
- 利用Nginxcp为cPanel/WHM服务器开启nginx支持
- About TexturePacker
- android蓝牙传文件在哪里找,手机蓝牙传输的文件在哪里_华为手机蓝牙传输记录在哪-系统城...
- 2022CCPC江苏省赛题解ACIJKL