时间序列的聚类方法

时间序列的聚类方法时间序列的聚类方法时间序列是按照时间排序的一组随机变量 它通常是在相等间隔的时间段内 依照给定的采样率 对某种潜在过程进行观测的结果 时间序列数据是实值型的序列数据 具有数据量大 数据维度高以及数据是不断更新的等特点 时间序列聚类方法的分类什么是聚类 聚类是一种无监督学习方法 聚类就是按照某个特定标准 如距离 把一个数据集分割成不同的类或簇 使类内差异最小 类间差异最大 传统的聚类方法针对

时间序列的聚类方法

时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。

时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据是不断更新的等特点。

时间序列聚类方法的分类

什么是聚类?聚类是一种无监督学习方法,聚类就是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使类内差异最小,类间差异最大。传统的聚类方法针对静态数据,所谓静态数据就是其特征不随时间变化。

由于时间序列的特征包含随时间变化的值,所以不是静态数据。对于时间序列的聚类来说,有两种思路:

  • 一种是修改现有的聚类方法以适用于时间序列
  • 一种是将时间序列转换为静态数据,然后在使用现有的聚类方法

前一种思路直接作用于原始数据,称为基于原始数据的方法,难点在于要找到适用于时间序列的距离/相似性度量。

第二种思路首先将原始的时间序列数据转换为低维的特征向量或若干模型参数,称为基于特征的或基于模型的方法。

由于金融交易数据普遍存在信噪比低、非线性、非平稳、非正态的特点,因此直接利用原始数据进行聚类往往效果不好。所以后两种方法是研究的重点。这两种方法都是通过一定的方式将原始时间序列转化为静态的特征或模型参数,然后通过传统的静态数据的聚类方法进行聚类。

基于模型的方法认为相似的时间序列应该产生相似的模型,所以通过比较模型之间的相似性可以达到时间序列聚类的目的。困难在与模型选择和参数确定两个问题。常用的模型:

  • ARMA模型
  • HMM模型
  • 马尔科夫链

时间序列聚类的步骤

  • 数据简化
  • 两个时间序列相似性的度量
  • 时间序列聚类的通用算法
  • 评估聚类结果的标准

数据简化

  • DFT 离散傅里叶变换
  • DWT 离散小波变换
  • SVD 奇异值分解
  • PLA 分段线性估计
  • PAA 分段聚合近似
  • SAX 符号化聚合近似

相似性/距离度量

  • 欧氏距离、Minkovski距离
    在这里插入图片描述
  • Pearson相关系数
    在这里插入图片描述
  • DTW(Dynamic time warping)

矩阵第(m, n)个元素即是序列P和Q的DTW距离。通常使用一种动态规划的方法来寻找DTW路径,算法的时间复杂度是O(mn),迭代式如下:

在这里插入图片描述

举例来说,给定一个样本序列X和比对序列Y:

  • X:3,5,6,7,7,1; Y:3,6,6,7,8,1,1

X/Y距离矩阵
在这里插入图片描述
在这里插入图片描述

聚类方法

常用于时间序列的聚类算法可以划分为如下几类:

  • 划分方法 例如k-means算法:是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据
  • 层次方法 例如CRUE算法:采用抽样技术先对数据集D随机抽取样本,再采用分区技术对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类
  • 基于模型的方法 主要是指基于概率模型的方法和基于神经网络模型的方法,例如SOM神经网络

输入是样本集 D = { x 1 , x 2 , . . . x m } D=\{x_1,x_2,…x_m\} D={
x1,x2,...xm}
,聚类的簇数 k k k,最大迭代次数 N N N

输出是簇划分 C = { C 1 , C 2 , . . . C k } C=\{C_1,C_2,…C_k\} C={
C1,C2,...Ck}

  1. 从数据集D中随机选择k个样本作为初始的k个质心向量:  { μ 1 , μ 2 , . . . , μ k } \{\mu_1,\mu_2,…,\mu_k\} {
    μ1,μ2,...,μk}
  2. 对于 n = 1 , 2 , . . . , N n=1,2,…,N n=1,2,...,N
    a) 将簇划分C初始化为 C t = ∅      t = 1 , 2… k C_t = \varnothing \;\; t =1,2…k Ct=t=1,2...k
    b) 对于i=1,2…m,计算样本 x i x_i xi和各个质心向量 μ j ( j = 1 , 2 , . . . k ) \mu_j(j=1,2,…k) μj(j=1,2,...k)的距离: d i j = ∣ ∣ x i − μ j ∣ ∣ 2 2 d_{ij} = ||x_i – \mu_j||_2^2 dij=xiμj22,将 x i x_i xi标记最小的为 d i j d_{ij} dij所对应的类别 λ i \lambda_i λi。此时更新 C λ i = C λ i ∪ { x i } C_{\lambda_i} = C_{\lambda_i} \cup \{x_i\} Cλi=Cλi{
    xi}

    c) 对于j=1,2,…,k,对 C j C_j Cj中所有的样本点重新计算新的质心 μ j = 1 ∣ C j ∣ ∑ x ∈ C j x \mu_j = \frac{1}{|C_j|}\sum\limits_{x \in C_j}x μj=Cj1xCjx
    d) 如果所有的k个质心向量都没有发生变化,则转到步骤3)



  3. 输出簇划分 C = { C 1 , C 2 , . . . C k } C=\{C_1,C_2,…C_k\} C={
    C1,C2,...Ck}

k-means算法的性能分析

主要优点:

  • 是解决聚类问题的一种经典算法,简单、快速。
  • 对处理大数据集,该算法是相对可伸缩和高效率的。

主要缺点:

  • 必须事先给出k值,但很多时候并不知道数据集应该分为多少个类别才最合适。聚类结果对初值敏感,对于不同的初始值,可能会导致不同结果。
  • 初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。可以多设置一些不同的初值,对比最后的运算结果,一直到结果趋于稳定来解决这一问题,但比较耗时,浪费资源。
  • 只能处理等长的时间序列

评估聚类结果的标准

一般来说,在没有数据标签的情况下,对提取的聚类进行评估并不容易,它仍然是一个开放的问题。聚类的定义取决于用户,领域,而且是主观的。 例如,簇的数量,簇的大小,异常值的定义以及问题中时间序列之间相似性的定义都是主观的。

  • 有ground truth 将聚类结果与ground truth比较
    Rand Index
    Mutual Information
    Cluster Similarity Measure (CSM)
    Cluster purity
    Jaccard Score
    ……





  • 无ground truth 用于比较不同聚类方法得到的结果
    SSE(均方误差):对每个时间序列来说,就是到最近的集群的距离
    Silhouette Coefficient(轮廓系数) 
    ……


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175878.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午11:12
下一篇 2026年3月26日 下午11:13


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号