k-Shape: Efficient and Accurate Clustering of Time Series解读

k-Shape: Efficient and Accurate Clustering of Time Series

John Paparrizos Luis Gravano Columbia University
ACM SIGMOD 2015

主要贡献

  • 提出一种新的对尺度和漂移具有不变性的距离度量
  • 提出一种新的计算聚类中心的方法
  • 提出一种通用性强的时间序列聚类算法——k-shape算法
  • 通过实验验证算法为state-of-the-art

目前聚类算法存在的问题

  • 无法处理大的数据集,计算复杂度高
  • 通用性不好,一般只针对特定问题有效

时间序列比较的关键问题——处理各种distortions(扭曲?)

  • Scaling and transform invariances 量纲不同、映射不变性
  • Shift invariances 序列相似但是存在相位漂移
  • Uniform scaling invariance 序列的长度不一致(压缩、拉伸)
  • Occlusion invariance 序列存在缺失

本文主要解决前两个问题,第一个问题通过z-normalization可以解决。

基于互相关的度量SBD——解决相位漂移问题

固定序列y,移动序列x,找到最佳匹配

### 解决方案 #### 非可解析Parent POM问题 当遇到`Non-resolvable parent POM`错误时,通常是因为Maven无法找到指定的父POM文件。以下是可能的原因及其解决方案: 1. **本地仓库未包含父POM** 如果父POM尚未安装到本地仓库,则需要手动执行`mvn clean install`命令来构建并安装父模块至本地仓库[^4]。 2. **远程仓库配置缺失或错误** 确保项目的`settings.xml`文件中已正确配置了可用的镜像地址。例如阿里云Nexus镜像可以有效解决依赖下载失败的问题: ```xml <mirrors> <mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 这一设置能够帮助Maven从更稳定的源获取所需构件[^5]。 3. **relativePath属性误配** 子模块中的`<relativePath>`标签指定了寻找父POM的位置,默认为`../pom.xml`。如果项目结构特殊(如扁平化目录),需调整此值指向实际位置;或者将其设为空字符串以强制从仓库加载父POM: ```xml <parent> <groupId>com.example.parent</groupId> <artifactId>example-parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath/> <!-- 强制从仓库查找 --> </parent> ``` #### Maven Compiler Plugin版本不兼容问题 对于`maven-compiler-plugin`版本3.13.0要求最低支持Maven 3.6.3的情况,应采取如下措施确保环境一致性: 1. **升级Apache Maven工具链** 安装最新版Maven(至少满足插件需求)。可通过官方站点下载对应二进制包,并更新PATH变量完成替换旧版本的操作。 2. **显式声明Java编译器参数** 明确设定目标JDK级别以及编码方式等内容于`pom.xml`内,避免潜在冲突影响正常运行流程: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>17</source> <target>17</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> ``` 以上方法综合运用后,基本能妥善处理所提及的技术难题。 ```python # 示例代码片段展示如何验证当前使用的Maven版本号是否符合预期标准 import subprocess def get_maven_version(): result = subprocess.run(['mvn', '-v'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) output = result.stdout.decode('utf-8') lines = output.splitlines() for line in lines: if 'Apache Maven' in line: parts = line.strip().split(' ') return parts[2].strip() # 返回形如3.9.5这样的具体数值部分 current_version = get_maven_version() if current_version >= '3.6.3': print(f"Maven version {current_version} meets requirements.") else: raise Exception("Upgrade Maven to at least 3.6.3!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值