基于一致性K均值聚类的电动汽车充电负荷建模方法
2022-06-22陈忠华朱军王育飞凌晨
陈忠华,朱军,王育飞,凌晨
(1.杭州市电力设计院有限公司,浙江省杭州市 310014;2.国网杭州供电公司,浙江省杭州市 310016;3.上海电力大学 电气工程学院,上海市杨浦区 200090)
0 引言
新能源电动汽车因具有优越的操控性能、低污染排放、高能源安全等优势,得到日益广泛的关注与应用[1]。然而,随着电动汽车大规模接入电网,充电负荷随机性形成冲击负荷,对电网安全稳定运行造成不利影响,特别对于城市生产、生活电力负荷已经形成的用电峰谷差,电动汽车充电负荷往往造成“峰上加峰”的负面影响,进一步加大对于传统化石能源的需求,反而降低了电动汽车的环保优势[2]。将聚集性充电负荷由高峰时段转移到低谷时段,不仅能够减轻对电力系统安全运行峰值冲击,更有利于风能等可再生能源的集成利用。因而,需要建立准确的电动汽车充电负荷模型,为大规模聚集性电动汽车充电行为的优化规划设计提供决策依据[3]。
基于数据驱动的电动汽车充电负荷建模方法,无需人为干预,根据电动汽车充电历史数据,即可辨识电动汽车充电行为特性参数,建立电动汽车充电负荷模型,具有自主程度高的特点,因而基于数据驱动的电动汽车充电负荷建模方法成为近年电动汽车充电模型研究领域的热点之一[4]。因电动汽车充电概率和充电起始时间概率分布函数能够综合反映驾驶习惯、行驶里程、节假日、季节等不同充电因素对电动汽车充电负荷模型的影响,通常将电动汽车充电概率和充电起始时间概率分布函数作为特征参数描述电动汽车充电行为,因而这2个参数的准确求取成为电动汽车充电负荷建模的关键所在。
基于数据驱动实现电动汽车充电概率和充电起始时间概率分布函数的求取,需采用数据聚类方法,将电动汽车充电历史数据集,根据特征分成若干组类,利用同一组内数据项比其他组内数据项具有更为相似的内涵特征,准确描述电动汽车充电特性参数。实现静态模型建模,常用的数据聚类方法主要包括:基于随机选择的聚类算法(clustering large applications based upon randomized search,CLARANS)、基于密度的聚类算法(densitybased spatial clustering of applications with noise,DBSCAN)、层次聚类算法 (clustering using representatives,CURE)、k均值方法等。DBSCAN方法[5]根据区域密度阈值进行聚类,能够较好地处理噪声点,但是当聚类密度不同时,阈值估计复杂度将大幅增加;CURE方法[6]采用基于层次和区域划分的综合聚类方式,适用于任意形状数据集,但是每一步工作都依赖于前一步的处理结果,对数据处理顺序有较高要求;CLARANS方法[7]根据中心点,利用多次不同抽样完成聚类边界划分,对数据输入顺序较为敏感,且只适用于球形或凸性数据集聚类。K均值方法设计简单,计算复杂度与数据集规模呈线性关系,但对初始类中心的选择较为敏感,要求预先给出聚类中心个数,若初始类选择不当,可能收敛至局部最小准则函数,导致结果非最优。
为实现电动汽车充电负荷快速准确建模,可采用k均值方法完成电动汽车充电负荷数据分析,提取充电行为特性参数,但为提升k均值聚类准确性,需预先准确判断聚类中心个数。通常采用区域检测方法,将所有数据点随机排列在一个圆内,通过求取每个数据点与相邻数据点的角度,实现初始聚类中心的预判与动态更新,但这一方法易陷入局部最优[8]。M.G.Quiles等[9]提出了基于粒子竞争的区域检测方法,各粒子根据设置的竞争机制,完成尽可能多的数据点控制,最终形成具有不同特征的粒子群体,实现聚类中心准确求取。H Zhou等[10]基于距离度量,从模拟布朗粒子运动角度,实现复杂网络集群分解。L Zhao等[11]利用耦合谐振同步思想,在相似时段内将具有同步特性的数据点聚类为一个数据组,当所有数据点都达到共同状态,就实现了一致性控制。采用一致性控制方法,可使耦合谐振网具有一致性和同步性[12]。T Chen等[13]应用一致性控制方法,证明复杂耦合网络能够实现不同特征数据趋于期望组群解。因此,利用一致性控制方法,解决k均值方法初始聚类中心的选取问题,同时保持k均值方法计算量小的优势,实现电动汽车充电行为特性参数在线准确辨识。
为了解决现有基于数据驱动的电动汽车充电负荷建模方法运算复杂、难以实现工程应用的技术难点,本文提出基于一致性k均值聚类的电动汽车充电负荷建模方法,无需人为干预,自动完成初始聚类中心选择,提升聚类精度;快速准确求取电动汽车充电概率和充电起始时间概率分布函数,提取典型场景下电动汽车充电特性参数,提升模型准确性;在线建立电动汽车充电负荷模型,完成电动汽车充电负荷的准确预测,提升工程应用适应性。
1 基于牵制一致性控制的k均值聚类方法
1.1 牵制一致性控制方法
1.1.1 初始聚类中心求取
设计牵制一致性控制方法,每个数据根据与相邻数据的不相似性度量更新自己的聚类状态,当所有数据完成更新进程,即完成聚类中心的初步选择。
对于商务中心、工业园区、居民小区等典型场景下电动汽车充电站一周充电负荷数据集合V={V1,···,Vn},将每台电动汽车充电负荷与当次充电开始时间构建为一个充电负荷数据网络N={N1,···,Ni,···,Nn}={(V1,t1),···,(Vi,ti),···,(Vn,ti),}i=1,…,n。定义数据网络通信邻接矩阵为A=[aij],若数据点i与数据点j间存在通信联络边,则aij≠0;若数据点i与数据点j间不存在通信联络边,则aij=0,可得数据点i的通信相邻点集为ηi={j|aij≠ 0}。
基于一致性控制理论[14],定义充电负荷数据网络中数据点i与数据点j间的不相似性度量di为
式中:V(t)表示t时刻电动汽车充电负荷。
由于电动汽车充电负荷与充电开始时间所构成的数据网络是无向的,因而所有数据点依据式(1)完成不相似性度量di计算后,渐进达成的理想状态为以集体决策平均值为聚类边界划分,具有接近di的相邻数据点形成初始聚类。但以集体决策平均值 α聚类边界在实际应用中并不一定合理,因而提出牵制一致性控制方法,设计更符合工程应用需求的数据点i与数据点j间不相似性度量di为
式中:
式中:f[Vi(ti)]为自反馈函数;一致性控制参数ε>0表示数据网络耦合强度;h(·)为相邻数据点间相互作用的内部耦合函数;ui(ti)为一致性控制牵制项;s(ti)为期望聚类边界;牵制控制参数gi为数据点i的牵制控制增益,当数据点i被选为牵制点,则gi=z>0,当数据点i并非牵制点,则gi=0。比较式(1)和式(2)可知,引入一致性控制牵制项,只需在数据网络中注入少量的局部反馈控制器,即可实现数据网络聚类边界的合理设置。
由式(2)分析可知,牵制一致性控制可归结为具有期望聚类边界s(ti)的牵制数据点的一致性问题,为简化运算,同时兼顾牵制一致性控制律响应的快速性,在电动汽车充电负荷数据网络中只将小部分数据点设置为牵制点,并不失一般性,每p个数据点中选择一个牵制点,设置内部耦合函数为
线性自反馈函数为
则式(2)可写为:
式中:控制参数 β >0; ε >0;lij为拉普拉斯矩阵L在数据点 (i,j)的取值,满足:
所有数据点依据式(6)完成数据点i与数据点j间不相似性度量di计算后,渐进达成的理想状态为以期望聚类边界s(ti)为划分尺度,具有接近di的数据点快速形成初始聚类,确定k均值算法初始聚类中心的个数,为k均值聚类准确求取电动汽车充电概率和充电起始时间概率分布函数准备条件。
1.1.2 收敛性分析
由式(6)分析可知,所提牵制一致性控制方法为线性控制律,通过合理设置控制参数,可实现所提方法具有渐进收敛性。
式(6)可写为di=QV(t),其中V∈Rn是包含所有牵制项的状态向量,不失一般性,设置牵制项数为1;Q∈Rn×n为对称矩阵:
由于Q为 实数对称n×n矩 阵,且n≥2,则当其矩阵项位于区间 [-a,a],a>0时,设 λmax和 λmin分别为Q的 最大特征值和最小特征值,s(Q)=λmaxλmin,则当s(Q)关于原点对称时,满足
因此,当 λmax< 1和 λmin>-1,可将Q的谱半径r(Q)=λi,max限制为r(Q)<1,即s(Q)<2。当且仅当r(Q)<1时,系统是渐近稳定的,即可收敛于原点[14]。
因此,对于充电负荷数据网络N,设置一个牵制数据点,采用如式(6)所示牵制一致性控制律,当且仅当式(10)—(12)所示约束条件成立,则在任何初始条件下系统都是渐近稳定的
式中:li,jmax为最大通信联络边权值;li,imin和li,imax分别为最小通信联络边数和最大通信联络边数;C分别为(n为偶数)和(n为奇数)。
1.2 K均值聚类算法与电动汽车充电行为特性参数求取
1.2.1 基于牵制一致性控制的k均值聚类算法
根据牵制一致性控制方法求得的初始聚类中心个数k,将典型场景下电动汽车充电站一周充电负荷数据集合V分为k个分组(k<n),每一个分组代表一个类。在牵制一致性控制已完成的初始聚类基础上,采用k均值算法,计算各数据点间的相似度,构造相邻矩阵,通过反复迭代,更新聚类中心,细化分组,直至聚类结果不再改变,即为最优聚类结果。k均值聚类方法计算复杂度与数据集规模呈线性关系,计算快速,牵制一致性控制方法完成了初始聚类中心个数的求取,确保了k均值算法聚类结果的准确性。
在牵制一致性控制完成求取电动汽车充电站一周充电负荷数据集合V初始聚类的基础上,采用欧几里得距离[15],计算数据点间的相似度:
使用相似度测量构造相邻矩阵,找出最接近的两个组,用G1和G2来表示,连接两组之间最接近的两个元素点,计算每组G1和G2内顶点间的平均不相似性度量,分别用d1和d2来表示。选择连接G1和G2的数据点中最相似的k对,如果其不相似度量小于式(10)定义的阈值,则在每一对选定的元素之间连接一条边,将G1和G2合并成一个更大的组。
式中:系数γ>0。
当组数达到预定义组数k则结束分组,并计算各组聚类中心。针对这k个聚类中心值,通过计算欧几里得距离,将每个电动汽车充电负荷数据点分配到距离最小的数据中心所对应的类中。分配完成后,重新计算k个聚类中心充电负荷数据点的平均值,获得下一次聚类的聚类中心值。反复迭代这一过程,直到每次k个聚类中心值不再发生变化,即获得k均值聚类结果,并对此处的k个聚类中心值求取数学期望值。
通常采用误差平方和准则函数[16]进行k均值聚类质量测试,理想的聚类结果应位于目标函数的极值点。实际应用中由于目标函数可能存在多个局部极小点,因此若在初始化时解落在某个局部极小点附近,易使k均值算法在局部极小点处收敛[17]。因而,k均值算法对初始聚类中心较为敏感,人为选取可能得不到局部最优解结果,引入牵制一致性控制可以补偿k均值算法的这一不足,减小局部极小点对数据集最优解求取的干扰,使初始聚类中心选取在合理期望附近,确保k均值算法获得准确的聚类结果,同时兼有计算快速性。
图1(a)中为一随机数据集[14],应用所提基于牵制一致性控制的k均值聚类方法,对数据集进行聚类分析。每个数据点至少与最近的2个数据点间进行信息交换,即通信联络边数至少为2,得到聚类结果如图1(b)所示。由图1分析可知,所提牵制一致性控制方法通过相邻数据点间的不相似度度量,快速形成初始聚类,确定k均值算法初始聚类中心的个数,具有较好收敛性;所提k均值聚类方法,能够快速完成各分组聚类中心的准确求取,具有较优的聚类效果。
1.2.2 电动汽车充电行为特性参数求取
基于k均值聚类结果,求取电动汽车充电概率与充电起始时间概率分布函数,为电动汽车充电负荷建模准备条件。
电动汽车充电概率(charging probability, CP)是指电动汽车在停车时进行充电的概率。随着电动汽车电池容量增大以及充电速度的提升,电动汽车的充电效率越来越高,用户使用体验越来越好,充电频率随之降低,这意味着用户并不是每次使用充电车位都进行充电行为,可能出现充电负荷为0的情况。对于这种异常数据点,可以通过建立充电概率模型的方式进行误差描述,进而在非线性系统中减少系统误差的影响。若选取电动汽车充电站x个,一共提取到y个电动汽车充电负荷数据,其中非零数据z个,按照w个时段分类,则电动汽车CP参数可由选取时间段内的非零数据个数与该时间段内总数据个数的比值求取,即:
电动汽车充电起始时间概率分布函数(probability distribution function of the charging duration, CDPDF)可以反映电动汽车用户充电需求与时间的关系。将采用一致性k均值聚类方法求得的聚类中心数学期望值作为充电桩起始充电时刻期望值 μc,则电动汽车在充电站起始充电时间的概率分布函数可写为
式中: σc为充电桩起始充电时刻的方差。
电动汽车充电行为CP和CDPDF参数的求取为电动汽车充电负荷建模准备了条件,可据此引导用户在不影响自我需求的前提下,选择电动汽车起始充电时间的非高峰时段或电网的非高峰时间完成充电,降低电动汽车充电站与电网的充电负荷压力。
2 电动汽车充电负荷建模
基于电动汽车充电行为特性参数的提取,提出以求解非线性规划函数的方式,求取电动汽车充电负荷模型。
若电动汽车充电数据被分成u个数据集,每个数据集中有v个数据点,则每个数据集可表示为该时间段内充电负荷数据集合 {}(j=1,···,v)。定义电力系统充电负荷高峰时段为 [jpb,jpe],基于电动汽车充电行为CP和CDPDF参数,建立非线性规划函数[18]式(17)及约束条件式(18)—(22),则电动汽车充电负荷模型Pj可由非线性规划函数式(17)求解获得
约束条件为
式中:fi为采用所提基于牵制一致性控制的k均值聚类方法求取的电动汽车CP参数,hi,t为采用所提方法求取的电动汽车在t时间段内的CDPDF参数, δi为相邻时间段电动汽车CP参数差异的阈值; ζj为Pj和相对差值的阈值。
约束条件式(18)确保各时间段内电动汽车CP参数和CDPDF参数大于零。约束条件式(19)确定了各数据集内电动汽车CP参数差值上界。约束条件式(20)确保同一时间段内CDPDF参数可认为是相同的。约束条件式(21)确保各数据集CDPDF参数之和为1。约束条件式(22)确定了Pj和相对差值的上界。
含约束条件式(18)—(22)的非线性规划函数式(17)求解可通过内点算法实现[19]。由非线性规划函数式(17)求解获得的电动汽车充电负荷模型Pj有益于评估聚集充电负荷的需求响应灵活性[20]。利用非线性规划函数式(17),求解电动汽车充电负荷模型Pj,若第i个时间段内接入电网的电动汽车数为Ni=Ngifi,第t个时间段内需要充电的电动汽车数为则充电电动汽车构成的聚集充电负荷为若用k时段表示电动汽车必须全部完全充电的充电期限,则Nit辆电动汽车完全充电最多可以延迟k-i-t时间段,即Nit个电动汽车对聚集充电负荷的需求响应灵活性是(k-i-t)。据此,可在对充电负荷裕度和用户充电需求做出供电规划预估后,根据电动汽车充电负荷模型Pj求得聚集充电负荷需求情况,动态地制定接入电动汽车的分时电价,引导用户做出自我决策,合理确定电动汽车充电方案,达到分散充电负荷的目的。所提基于牵制一致性控制的k均值聚类的电动汽车充电负荷建模方法结构框图如图2所示。
3 案例研究
基于2020年杭州市某金融中心电动汽车充电站充电负荷数据,对每个季节电动汽车充电站充电负荷数据进行聚类分析,测试所提基于牵制一致性控制的k均值聚类的电动汽车充电负荷建模方法的正确性与可行性。
将一周电动汽车充电数据被分为336个时间段,每个时间段持续0.5 h,即1 d电动汽车充电数据被细分为48个时间段,则4周电动汽车充电数据按不同天相同时间段被分成48个时间段。把每2个相邻时间段合并为一个大时间段,可得到24个大时间段,每个大时间段包括14个数据,即周一到周日0:00—1:00为第一个大时间段,1:00—2:00为第2个大时间段,以此类推,每个大时间段中包含14个电动车充电负荷数据,即(j=1,···,14)。基于采用一致性k均值聚类方法求取的电动汽车充电概率和充电起始时间分布函数,即附录图A2和图A3,采用所提电动汽车充电负荷建模方法,在式(18)—(22)所示约束条件下,求解非线性规划函数式(17),可得4周电动汽车充电负荷如图3(a)—(d)所示。
由图3分析可知,不同季节电动汽车的峰值需求十分接近,出现在9:00附近,与附录中图A1分析结果一致;表明采用所提电动汽车充电负荷建模方法可以准确提取不同季节电动汽车充电负荷数据特征,且各时间段电动汽车充电负荷变化细节描述准确。
对4周电动汽车充电负荷模型结果进行均方根计算,可求得采用所提方法得到的该商业中心一年电动汽车充电负荷模型,如图4所示。将求得的电动汽车充电负荷均值模型与2020年该电动汽车充电站随机选取的一月充电负荷均值数据进行对比,可以看出,两充电负荷曲线相似度较高,所提电动汽车充电负荷建模方法可以准确描述该商业中心电动汽车充电站充电负荷特征,特别在电动汽车充电峰值区间重合度好,验证了所提方法的正确性与有效性,所提方法可为考虑电动汽车充电负荷动态变化的供电规划优化设计提供理论依据。
选取平均绝对百分误差EMAPE作为评判不同聚类方法充电负荷模型预测效果的依据,对图3和图4采用式(23),分别求取传统k均值聚类方法和基于一致性k均值聚类方法得到的充电负荷模型预测结果与实际负荷曲线间的平均绝对百分误差EMAPE
式中:yi和yˆi分别为第i个采样点的实际负荷值和预测负荷值。
2种聚类方法的充电负荷预测量化比较结果如表1所示。由表1分析可知:因EMAPE值越小则负荷预测越准确,所提聚类方法求得的充电负荷模型预测结果与实际负荷曲线间的平均绝对百分误差EMAPE均小于15.76%,最优可达14.28%,预测精度优于传统k均值聚类方法的19.30%~19.95%,表明基于一致性k均值聚类方法建立的充电负荷模型具有较高准确性。
表1 传统k均值聚类与一致性k均值聚类充电负荷预测结果量化比较(金融中心充电站)Table 1 Quantization comparison of charging load prediction result by traditional k-means clustering with that by consensus k-means clustering (at financial centre charging station)
为了验证基于一致性k均值聚类的电动汽车充电负荷预测方法的工程应用普适性,在公交充电站和居民小区充电站2类典型应用场景下,分别采集1月6日—1月12日、4月13日—4月19日、8月10日—8月16日、11月9日—11月15日充电数据,应用所提方法进行充电负荷建模,将求得的电动汽车充电负荷均值模型与当年该电动汽车充电站随机选取的一月充电负荷均值数据进行对比,结果如图5所示。由图5分析可知:公交充电站峰值负荷出现在0—4时,居民小区充电站峰值负荷出现在20—24时,所提通用充电负荷模型在不同应用场景下都能对峰值负荷实现精准预测,可以准确描述目标应用场景充电站充电负荷特征,验证了所提方法具有较好的工程应用适应性。
为了对比所提方法在不同典型应用场景下的预测精度,对图4与图5进行了平均绝对百分误差EMAPE指标的量化分析,量化比较结果如表2所示。由表2分析可知:所提方法对于不同应用场景均能达到较小的平均绝对百分误差,预测模型对比实际充电负荷取得了较好的拟合效果;由于公交充电站负荷模式较其他两种场景峰值负荷更为集中,谷时负荷波动较小,因而平均绝对百分误差EMAPE最小,模型预测准确度最高。
表2 所提方法在不同典型应用场景下充电负荷预测结果量化比较Table 2 Quantization comparison of charging load forecasting results by the proposed method under different typical application scenarios
4 结论
1)将复杂耦合数据网络一致性控制方法引入电动汽车充电特性参数分析,仅需计算相邻数据点间的不相似性度量,即可为k均值聚类完成初始聚类中心快速辨识,由k均值聚类方法完成电动汽车充电特性参数准确求取。本文所提基于牵制一致性的k均值聚类方法对电动汽车充电负荷数据集的大小和形状无约束,具有计算量小、聚类快速、特性参数辨识准确的特点。
2)在数据特征分析的基础上,将电动汽车充电负荷建模问题转化为非线性规划函数求解问题,在所求电动汽车充电特性参数约束条件下,实现期望时段电动汽车充电负荷的准确建模,所提电动汽车充电负荷建模方法可以灵活对典型场景下电动汽车需求响应进行评估,为合理设计配网供电规划、电动汽车分时定价方案等提供可靠依据。
(本刊附录请见网络版,印刷版略)
附录 A
在2020年春、夏、秋、冬4季中分别提取金融中心电动汽车充电站一周充电负荷数据:1月6日—1月12日(324个数据点)、4月13日—4月19日(368个数据点)、8月10日—8月16日(352个数据点)、11月 9日—11月15日(307个数据点),验证所提一致性k均值聚类方法的可行性。图A1(a)—(d)为4个自然周充电负荷数据聚类分析结果,图中横坐标为充电起始时间,纵坐标为电动汽车充电负荷。 由图A1分析可知,采用牵制一致性控制方法,通过充电负荷数据集相邻数据点间不相似性度量计算,快速准确完成0:00—6:00、6:00—13:00、13:00—24:00 3个时段充电负荷数据的初始聚类,通过k均值聚类方法实现不同组类间电动汽车充电特性区别明确,6:00—13:00时金融中心对电动汽车充电需求相对较高,负荷高峰出现在9:00左右,峰值负荷接近24kW,与上班高峰期重合。0:00—6:00、13:00—16:00、21:00—24:00进入电动汽车充电需求平稳阶段,在16:00—21:00时进入次高峰阶段,春、秋、冬3季次高峰峰值负荷约为13kW,夏季次高峰峰值负荷达22kW,与高峰峰值接近。图A1结果表明,所提方法采用相邻数据点间不相似性度量能够快速判断电动汽车负荷数据初始聚类中心,采用k均值聚类方法能够精确捕捉聚类中心数学期望值,收敛快速,聚类中心求取准确,为电动汽车充电特性参数辨识准备了条件。
根据实测数据,采用k均值算法、2通信联络边的一致性k均值聚类方法、3通信联络边的一致性k均值聚类方法和4通信联络边的一致性k均值聚类方法,对4周充电负荷数据的聚类中心进行量化分析,结果如表A1所示。由表A1分析可知,所提牵制一致性控制分别选择2、3、4通信联络边数,对聚类中心结果的影响不大,误差很小,采用不相似性度量可以快速收敛至数学期望值附近,采用k均值聚类方法求得的聚类中心准确表征了不同季节复杂耦合数据网络的一致性特性,因而通信联络边数的不同,对于k均值聚类的影响很小,聚类精度高,稳定性好;采用传统k均值聚类,可以看出不同季节聚类中心差异较大,对数据内部一致性特性提取的不精确,造成不同季节聚类中心差异较大,不利于电动汽车充电特性参数的准确辨识。
为了提高电动汽车充电概率数据的准确性,随机选取2020年杭州10个金融中心电动汽车充电站全年充电负荷数据,充电负荷数据共13928个,其中有效非零数据7329个。根据式(15),计算求取电动汽车充电概率参数,如图A2所示。由图A2分析可知,9:00─19:00时电动汽车充电概率显著升高,19:00后电动汽车充电概率缓慢下降,并在0:00达到最低点。
结合图A1和表A1,基于采用一致性k均值聚类方法求得的聚类中心数学期望值,由式(16)可得电动汽车充电起始时间分布函数,如图A3所示。其中: σc基于2017年美国交通部统计的家庭出行调查数据(national household travel survey, NHTS)将商用充电桩起始充电时刻方差取为1.68[21]。对比图A1和图A3可知,电动汽车充电起始时间峰值出现在9:00附近,0:00—9:00时电动汽车充电需求快速增加,11:00—24:00时电动汽车接入电网逐步减少,变化趋势与图A1一致,表明采用所提一致性k均值聚类方法可准确求取电动汽车充电起始时间分布函数。
附表 A1 传统k均值聚类与一致性k均值聚类结果量化比较Table A1 Quantitative comparison results of traditional k-means clustering and the proposed consensus k-means clustering