답변 1
0
안녕하십니까,
estimate_bandwidth()는 내부적으로 kernel bandwidth를 정하기 위해 KNN 기법을 이용합니다.
이때 KNN을 수행하는 데이터의 건수를 전체 데이터 * quantile 로 정합니다. 전체 데이터가 100건이고 quantile=0.3 이면 30건을 대상으로 KNN으로 클러스터링을 수행합니다. 이후 같은 클러스터 내의 데이터간 평균 거리(average pairwise distances) 를 기반으로 bandwidth를 정합니다.
일반적으로 quantile이 크면 bandwidth 값이 커져서 Mean Shift의 클러스터 개수가 작아지고, quantile이 작으면 bandwidth 값이 작아져서 Mean Shift의 클러스터 개수가 많아집니다.
부족하게도 KNN기법으로 어떻게 데이터의 kernel bandwidth를 결정하는지의 상세 로직은 제가 정확하게 잘 모르겠습니다.
해당 답변은 https://stackoverflow.com/questions/28335070/how-to-choose-appropriate-quantile-value-while-estimating-bandwidth-in-meanshift
을 참조하여 작성하였습니다.
감사합니다.