聚类函数基于密度进行聚类,发现数据中的模式和异常数据。
聚类函数
只支持华东2(上海)地域。
聚类函数支持的最大数据量为50万行30列,用于聚类的列不超过6列。
用于离线调度的聚类函数。
基于密度进行聚类,发现数据中的模式和异常数据。基于密度的聚类算法属于无监督方法,对数据的输入顺序敏感,不同顺序的输入数据可能导致不同的聚类结果。
函数格式
SELECT DBSCAN(congfig,col_list_for_cluster,
col_for_cluster,other_col)
as(cluster_result,col_for_cluster,other_col)
FROM table;
输入参数
config
:必选。JSON字符串。"eps"
:聚类时被认为处于同一中心的两点的最大距离。"min_samples"
:聚类中心周边点的最小数量。
col_list_for_cluster
:必选。JSON字符串。用于聚类的数值列的序号。col_for_cluster
:必选。double或int类型。用于聚类的数值列,最多六列。other_col
:必选。任意类型。输入的其他数值列,可以同聚类的结果一同输出。
输出参数
cluster_result
:int类型。聚类结果。col_for_cluster
:double或int类型。用于聚类的列,最多六列。other_col
:string类型。输入的其他列。
函数示例:设备数据聚类
下载经过处理的设备使用信息。同一类型的物联网设备被不同群体的用户使用,可能具有不同的数据特征。通过对设备上报的数据进行聚类分析,有助于分析业务中出现的用户画像。将数据导入到数据服务的自定义存储表中,在分析洞察中使用这些数据。本示例是从自定义存储表中读取的数据,因此在读取后需要重新排序。
设备数据聚类。
我们希望使用输入的第一列与第二列数据用于聚类,因此配置
col_list_for_cluster
为'[0,1]'
,随后输入feature1
,feature2
这两列的列名。SELECT DBSCAN('{"eps":0.1,"min_samples":17}','[0,1]', feature1,feature2) as(cluster_result,feature1,feature2) FROM (SELECT feature1, feature2 FROM dbscandata_400 order by idx);
本示例中没有输入额外列,如果需要,可以在
feature2
之后输入其他列名。SELECT DBSCAN('{"eps":0.1,"min_samples":17}','[0,1]', feature1,feature2) as(cluster_result,feature1,feature2,other_col) FROM (SELECT feature1, feature2 FROM dbscandata_400 order by idx);
用Pyhton根据输出数据画图,图中显示输入数据被分成两组。用户可以根据聚类结果,对数据进一步洞察,理解这些数据蕴含的用户信息。
配置eps。
通过配置eps,可以决定归属于同一个类别的任意两个样本点之间的最大距离,决定聚类簇的密度。减少同一个类别的任意两个样本点之间的最大距离,可以使得同一类别内的样本点更相似,聚类簇的密度更高。本示例中配置eps为0.2,将尽可能多的数据纳入到聚类得到的簇中。
SELECT DBSCAN('{"eps":0.2,"min_samples":17}','[0,1]', feature1,feature2) as(cluster_result,feature1,feature2) FROM (SELECT feature1, feature2 FROM dbscandata_400 order by idx);
根据输出数据画图,如下右图显示,原本在聚类类别之外的点也被纳入到聚类类别之中,便于分析一些离散在聚类中心的用户数据对于整体画像刻画的影响。如果eps设置过大,会让两个类别之间的边界变得不够清晰,影响最终的聚类结果。
配置min_samples。
通过配置min_samples,可以决定一个聚类簇最少需要多少数据点,决定聚类簇的大小。减少同一个类别的最少数据点数量,会导致聚类簇越小,聚类簇的数量更高。本示例中配置min_samples为3。
SELECT DBSCAN('{"eps":0.10,"min_samples":3}','[0,1]', feature1,feature2) as(cluster_result,feature1,feature2) FROM (SELECT feature1, feature2 FROM dbscandata_400 order by idx);
根据输出数据画图,如下右图显示,原本不属于两个聚类簇的数据也被纳入到聚类簇中,配置效果与配置eps相似。如果min_samples设置过小,可能会导致多个聚类簇的出现,导致用户画像刻画过于细致,影响最终的分析结果。