`

基于坐标位置(Location)的聚类——特殊的kmeans

阅读更多
需求:
    在手机地图上,公交或者自驾,经常请求导航的起点终点。如何知道哪些是热点区域(特别是时间相关的热点区域)?

方法1:基于搜索的关键词 地名(用户输入的终点)进行文本聚类。然后将地名进行经纬度转换,即可找到热点区域。
方法2:基于用户终点的坐标。


方法1:对于做搜索的人来说,太熟悉不过,一个hash map就可以搞定了。但方法1的局限性很大,当用户不是输入关键词,而是gps导航等,是没有这些文本信息的。

方法2:
实际需求:给定很大的数据坐标集合(HDFS存储),如何按照自定义的聚类规则进行聚类?
采用geohash(实际是个四叉树过程,见另一篇博文写的内容),对坐标进行geohash后,然后mapreduce方式进行统计。reduce中进行聚合,实际上,最好不采用K个固定类聚合,而是依照类间距离来自适应聚类个数。



基于geohash方式的缺点:
(1)因为是类四叉树的hash,因此四叉树网格边界附近的点存在归类问题
(2)geohash有个精度问题(即最小网格),因此需要划分网格大小合适。如果网格划分太大,失去了聚类意义,太小,生成了太多网格,聚类性能降低。
优点:
(1)聚类复杂度 O(N),常见的kmeans 是O(N*K),实际上,大数据量,这个完全不可接受

总之,对于大规模数据量的聚类算法,都需要预处理,来减小数据规模。而基于坐标数据的聚类,即采用geohash方式来减小聚类规模,这个是十分有效的方式。
而且,通常我们可以先用坐标将用户进行聚类,然后对某个聚类的所有用户,再采用普通的Kmeans来挖掘用户相关性,比如共同爱好。

————————————————————————————————————
重要的题外话:
我实际使用的聚类是按照geohash(四叉树)的层次聚类。
而且是自下而上的聚类方式。(四叉树的生成是自上而下)
即,开始网格大小 <dx,dy>,然后把聚类的结果,再次聚类(相当于四个叶子节点合并成一个节点)。
因此,最后形成了一个四叉树,每一层是该层的聚类结果。每一层的节点数,是在这个网格类的item数目。
分享到:
评论

相关推荐

    聚类分析,kmeans聚类分析,输出聚类坐标点。matlab2021a测试仿真。

    在IT领域,聚类分析是一种常用的数据挖掘技术,主要用于无监督学习,即将数据集分成不同的组或类别,称为“簇”,这些簇内的数据点相似度较高,而不同簇之间的数据点相似度较低。这里提到的“k-means聚类分析”是...

    聚类经典程序kmeans的c++源码

    KMeans算法是一种广泛应用的数据聚类方法,它以其简单易懂和高效性在机器学习领域占有重要地位。在本文中,我们将深入探讨KMeans算法的基本原理,并通过C++源码分析其具体实现过程。 一、KMeans算法概述 KMeans...

    20.MATLAB神经网络43个案例分析 基于Kohonen网络的聚类算法-网络入侵聚类.rar

    MATLAB神经网络43个案例分析 基于Kohonen网络的聚类算法——网络入侵聚类MATLAB神经网络43个案例分析 基于Kohonen网络的聚类算法——网络入侵聚类MATLAB神经网络43个案例分析 基于Kohonen网络的聚类算法——网络入侵...

    实验报告——Kmeans聚类方法.docx

    实验报告——Kmeans聚类方法 K-means 聚类方法是最为经典的基于划分的聚类方法之一,其基本思想是以空间中 k 个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好...

    【项目实战】Python基于KMeans算法进行文本聚类项目实战

    在本项目实战中,我们将深入探讨如何利用Python和KMeans算法进行文本聚类。文本聚类是无监督学习的一种应用,旨在将相似的文本分组到一起,无需预先指定类别。这个项目涵盖了从数据获取、预处理到模型构建的全过程,...

    时间序列聚类——十年回顾

    ### 时间序列聚类——十年回顾 #### 一、引言 在数据挖掘领域,时间序列聚类作为一种重要的无监督学习方法,在处理大规模未标记数据集时具有独特的优势。随着云计算和大数据技术的发展,时间序列数据变得越来越...

    kmeans聚类算法,kmeans聚类算法优缺点,matlab

    kMeans聚类算法是一种广泛应用的无监督机器学习方法,主要用于数据的分类和分组。它通过将数据点分配到最近的聚类中心来构建类别,然后更新这些中心以更好地反映其所属的数据点。这个过程会迭代进行,直到聚类中心...

    YOLOv3聚类分析之kmeans

    YOLOv3聚类分析之kmeans,yolov3多目标检测,生成自己的锚框,并显示准确性分布图,亲测有效

    基于K-means聚类算法的图像分割及其MATLAB实现

    基于K-means聚类算法的图像分割 算法的基本原理:  基于K-means聚类算法的图像分割以图像中的像素为数据点,按照指定的簇数进行聚类,然后将每个像素点以其对应的聚类中心替代,重构该图像。 算法步骤: ①随机选取...

    kmeans.rar_kmeans 聚类_kmeans聚类_改进Kmeans聚类_聚类_聚类改进

    改进的kmeans算法,聚类效果良好,比三种算法要好,matlab

    PostgreSQL数据聚类——kmeans

    PostgreSQL 数据聚类——kmeans 数据聚类是数据分析领域中的一个重要工具,它允许我们将大量数据按照相似性划分成不同的组或簇。在商业场景中,例如一家公司可能需要对客户进行细分,以便制定针对性的销售策略。K-...

    数据挖掘技术在图情领域的应用研究——基于KMeans聚类算法.pdf

    2. KMeans聚类算法:KMeans聚类是一种无监督学习算法,主要用于将数据点分为K个簇。算法的目的是将数据分组,使得同一簇内的点相似度尽可能高,而不同簇内的点相似度尽可能低。 3. 图书情报与数字图书馆领域:随着...

    风电负荷聚类——出力预测

    "DBSCAN.m"可能表示DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法,这是一种基于密度的空间聚类算法,能够发现任意形状的聚类并自动处理噪声点。相比于K-means,DBSCAN更适用于处理非...

    聚类算法与Kmeans代码_K-Means聚类_

    评估聚类效果通常使用轮廓系数、Calinski-Harabasz指数、Davies-Bouldin指数等指标,它们基于簇的紧凑度和分离度来量化聚类质量。 综上所述,K-Means和Meanshift都是聚类分析中的重要工具,各有优劣。理解并熟练...

    C++结合OpenCV实现Kmeans聚类图像分割的案列

    在本文中,我们将深入探讨如何使用C++编程语言与OpenCV库来实现KMeans聚类算法,以此进行图像分割。KMeans是一种常见的无监督学习方法,广泛应用于图像处理、数据分析等领域,尤其在图像分割中表现出色。OpenCV是一...

    java实现聚类算法,Kmeans

    K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象...

Global site tag (gtag.js) - Google Analytics