every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
0. 前言
MeanShift算法,同样是一种基于密度的聚类算法。两种算法直观理解都比较好理解。
DBSCAN:向身边人逐渐发展下线模式
MeanShfit:根据“号召力”逐渐推选老大哥
这两种朴素的想法大部分人应该都能想到,但背后需要完备的数学支持,才能真正成为“发明人”。
直觉有时候挺重要的。
1. 正文
1.1 概念
Mean Shift算法最早是由Fukunaga和Hostetler在1975年提出的,2002年,Comaniciu和Meer对该算法进行了改进,并给出了更加完整的理论分析和证明。用于目标跟踪、显著性区域检测。在数据挖掘、图像处理、社交网络分析也得到了广泛的应用。
1.2 基本流程
- 从(未标记)数据中随机选择一个样本作为中心center(老大哥)
- 找出以当前样本作为中心一定范围内(指定半径,bandwidth)其他样本点(小弟),记为M,对将他们归为簇c(取一个霸气的名字,斧头帮),同时,增加属于该类样本的概率(次数 +1,老大哥找小弟,确定帮名斧头帮,并对每个小弟的衷心程度打分记录)
- 计算样本中心到M集合的平均向量shift,并移动样本中心,center = center + shift (根据“号召力”重新确定老大哥)
- 重复2、3过程,直到shift大小小于一个指定的值,即收敛。记录此时的center。此时,我们找到了样本中心,以及对周围的样本进行了标记。(确定了最终的老大哥,帮名,小弟衷心程度)
- 重复1、2、3、4过程。如果两个样本中心距离小于阈值,则合并(帮派合并)
- 对非样本中心的样本点分类。(小弟可能对多个帮派感兴趣,根据他对各帮派的衷心程度不同划分到不同的帮派)
平均偏移向量:
中心点减去每个样本点,再求和,最后除以样本个数
中心点更新:
1.3 核函数
上面计算偏移向量时,样本中心周围点发挥的作用是相同的,实际上离样本中心越近影响应该越大。
在实现中,我们通常使用高斯核函数来计算邻域内点的密度值,然后根据密度值来确定每个点的移动方向和距离。具体来说,对于一个数据点
x
i
x_i
xi,它的邻域内点的密度可以计算为:
其中, K K K是高斯核函数, h h h是带宽参数, n n n是数据集的大小, d d d是数据点的维数。
使用高斯核函数可以保证在距离较远的点上密度值较小,在距离较近的点上密度值较大。
计算每个点的密度值之后,我们可以使用下面的公式来计算每个点的移动方向和距离:
1.4 demo
算法其中的bandwidth可用函数进行估计,如下:
from sklearn.cluster import MeanShift, estimate_bandwidth
import numpy as np
# 加载数据
data = np.loadtxt('data.txt')
# 估计 bandwidth 值
bandwidth = estimate_bandwidth(data)
# 基于估计的 bandwidth 进行聚类
ms = MeanShift(bandwidth=bandwidth)
ms.fit(data)
参考
[1] https://blog.csdn.net/Cristiano2000/article/details/119673252
[2] https://blog.csdn.net/google19890102/article/details/51030884
[3] https://blog.csdn.net/pantingd/article/details/107134729
[4] https://zhuanlan.zhihu.com/p/81629406
[5] https://zhuanlan.zhihu.com/p/543744941
[6] https://zhuanlan.zhihu.com/p/354913697
[7] https://blog.csdn.net/SkullSky/article/details/113142978
[8] https://zhuanlan.zhihu.com/p/618919552
[9] https://zhuanlan.zhihu.com/p/350031668
[10] https://blog.csdn.net/SkullSky/article/details/113142978#:~:text=Meanshift,%E8%81%9A%E7%B1%BB%E7%9A%84%E4%B8%BB%E8%A6%81%E6%80%9D%E8%B7%AF%E6%98%AF%EF%BC%9A%E8%AE%A1%E7%AE%97%E6%9F%90%E4%B8%80%E7%82%B9A%E4%B8%8E%E5%85%B6%E5%8D%8A%E5%BE%84R%E5%86%85%E7%9A%84%E7%82%B9%E4%B9%8B%E9%97%B4%E5%90%91%E9%87%8F%E8%B7%9D%E7%A6%BB%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BCM%EF%BC%8C%E5%BE%97%E5%88%B0%E8%AF%A5%E7%82%B9%E4%B8%8B%E4%B8%80%E6%AD%A5%E7%9A%84%E6%BC%82%E7%A7%BB%EF%BC%88%E7%A7%BB%E5%8A%A8%EF%BC%89%E6%96%B9%E5%90%91%EF%BC%88A%3DM%2BA%EF%BC%89%E5%92%8C%E8%B7%9D%E7%A6%BB%EF%BC%88%7C%7CM%7C%7C%EF%BC%89%E3%80%82%20%E5%BD%93%E8%AF%A5%E7%82%B9%E4%B8%8D%E5%86%8D%E7%A7%BB%E5%8A%A8%E6%97%B6%EF%BC%8C%E8%AE%A1%E7%AE%97%E8%BF%99%E4%B8%AA%E7%82%B9%E4%B8%8E%E5%8E%86%E5%8F%B2%E7%B0%87%E4%B8%AD%E5%BF%83%E7%9A%84%E8%B7%9D%E7%A6%BB%EF%BC%8C%E6%BB%A1%E8%B6%B3%E5%B0%8F%E4%BA%8E%E9%98%88%E5%80%BCD%E5%8D%B3%E5%90%88%E5%B9%B6%E4%B8%BA%E5%90%8C%E4%B8%80%E4%B8%AA%E7%B1%BB%E7%B0%87%EF%BC%8C%E4%B8%8D%E6%BB%A1%E8%B6%B3%E5%88%99%E8%87%AA%E8%BA%AB%E5%BD%A2%E6%88%90%E4%B8%80%E4%B8%AA%E7%B1%BB%E7%B0%87%E3%80%82
[11] https://zhuanlan.zhihu.com/p/611488610