[클러스터링 알고리즘] MeanShift 알고리즘

모든 블로그의 모든 모토: 당신은 당신이 생각하는 것보다 더 많은 것을 할 수 있습니다.
https://blog.csdn.net/weixin_39190382?type=blog

0. 서문

MeanShift 알고리즘은 밀도 기반 클러스터링 알고리즘이기도 합니다. 두 알고리즘에 대한 직관적인 이해는 상대적으로 이해하기 쉽습니다.
DBSCAN : 주변 사람들로부터 점차 오프라인 모드로 발전
MeanShfit : "어필"을 기반으로 점차적으로 형을 선택

대부분의 사람들은 이 두 가지 간단한 아이디어를 생각할 수 있어야 하지만 진정으로 "발명가"가 되려면 그 뒤에 완전한 수학적 지원이 필요합니다.

직감은 때때로 중요합니다.

사진 설명을 추가해주세요
여기에 이미지 설명 삽입

1. 텍스트

1.1 개념

Mean Shift 알고리즘은 1975년 Fukunaga와 Hostetler에 의해 처음 제안되었습니다. 2002년에 Comaniciu와 Meer는 알고리즘을 개선하고 보다 완전한 이론적 분석과 증명을 제공했습니다. 객체 추적 및 돌출 영역 감지에 사용됩니다. 또한 데이터 마이닝, 이미지 처리 및 소셜 네트워크 분석에도 널리 사용되었습니다.

1.2 기본 프로세스

  1. ( 레이블이 없는 ) 데이터에서 임의로 샘플을 중심으로( 큰형 ) 선택
  2. 현재 샘플을 중심으로 일정 범위(지정반지름, 대역폭 ) 내의 다른 샘플점( 남동생 )을 찾아 M으로 기록하고 클러스터 c로 분류(횡포명칭 Ax Gang)하고 동시에 시간 , 클래스 샘플 확률을 높입니다 .
  3. 샘플 센터에서 M 세트로의 평균 벡터 이동 계산 하고 샘플 센터를 이동합니다 .
  4. 시프트 크기가 지정된 값보다 작아질 때까지, 즉 수렴될 때까지 2, 3의 과정을 반복합니다. 이때 중심을 기록합니다. 이 시점에서 샘플의 중심을 찾고 주변 샘플을 표시했습니다. ( 최종 형, 갱명, 동생의 진심이 결정됨 )
  5. 1, 2, 3, 4 과정을 반복합니다. 두 샘플 중심 사이의 거리가 임계값보다 작으면 병합( gang merge )
  6. 표본 중심이 아닌 표본 점을 분류합니다. (동생은 여러 갱에 관심이 있을 수 있으며, 각 갱에 대한 그의 진심에 따라 다른 갱으로 나뉩니다)

사진 설명을 추가해주세요
평균 오프셋 벡터:
중심점에서 각 샘플 포인트를 뺀 다음 합산하고 마지막으로 샘플 수로 나누어
여기에 이미지 설명 삽입
중심점을 업데이트합니다.
여기에 이미지 설명 삽입

1.3 커널 기능

위의 오프셋 벡터를 계산할 때 샘플 중심 주변의 포인트도 같은 역할을 하며 실제로 샘플 중심에 가까울수록 영향이 커집니다.

구현에서 우리는 일반적으로 가우스 커널 함수를 사용하여 이웃에 있는 점의 밀도 값을 계산한 다음 밀도 값에 따라 각 점의 이동 방향과 거리를 결정합니다. 구체적으로, 데이터 포인트 xi x_i엑스, 이웃 에 있는 점의 밀도는 다음과 같이 계산할 수 있습니다.
여기에 이미지 설명 삽입

그 중 KKK 는 가우시안 커널 함수,hhh 는 대역폭 매개변수,nnn 은 데이터 세트의 크기,ddd 는 데이터 포인트의 차원입니다.

가우시안 커널 함수를 사용하면 밀도 값이 더 멀리 있는 지점에서 더 작고 더 가까운 지점에서 더 큰지 확인할 수 있습니다.

각 점의 밀도 값을 계산한 후 다음 공식을 사용하여 각 점의 이동 방향과 거리를 계산할 수 있습니다.
여기에 이미지 설명 삽입

1.4 데모

알고리즘의 대역폭은 다음과 같은 함수로 추정할 수 있습니다.

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

추천

출처blog.csdn.net/weixin_39190382/article/details/131432425