【思考】描述曲线走势,使用余弦相似度和pearson相关系数哪个更有效?


前言

描述曲线走势可以使用多种方法,其中余弦相似度和皮尔逊相关系数是两种常用的指标。它们各有优缺点,适用于不同的场景。

一、余弦相似度 (Cosine Similarity)

余弦相似度用于衡量两个向量之间的夹角,即两个向量的方向是否一致。其值域为[-1, 1],值越接近1表示两个向量的方向越一致。余弦相似度不考虑向量的大小,只关注其方向。

优点:
不受向量大小的影响,适合于比较方向。

缺点:
不能反映两个向量的实际值的差异,只能反映方向的相似性。

二、皮尔逊相关系数 (Pearson Correlation Coefficient)

皮尔逊相关系数衡量的是两个变量之间的线性相关性,其值域为[-1, 1]。值越接近1表示正相关性越强,越接近-1表示负相关性越强,0表示没有线性关系。

优点:
能够反映两个变量之间的线性相关性,既考虑方向也考虑大小。
更适用于时间序列数据的比较。

缺点:
对异常值比较敏感,异常值可能会影响相关系数的计算。

三、使用场景

余弦相似度适用于需要比较两个向量方向是否一致的场景,例如文本相似度、用户行为相似度等。
皮尔逊相关系数适用于需要比较两个时间序列数据是否具有线性相关性的场景,例如股票价格走势、气温变化等。

四、示例代码

以下是使用Python计算余弦相似度和皮尔逊相关系数的示例代码:

import numpy as np
import pandas as pd
from scipy.spatial.distance import cosine
from scipy.stats import pearsonr

# 创建示例数据
data1 = [1, 2, 3, 4, 5]
data2 = [2, 4, 6, 8, 10]
data3 = [5, 4, 3, 2, 1]

# 计算余弦相似度
cosine_similarity_1_2 = 1 - cosine(data1, data2)
cosine_similarity_1_3 = 1 - cosine(data1, data3)

# 计算皮尔逊相关系数
pearson_corr_1_2, _ = pearsonr(data1, data2)
pearson_corr_1_3, _ = pearsonr(data1, data3)

# 打印结果
print(f"Cosine Similarity between data1 and data2: {cosine_similarity_1_2}")
print(f"Cosine Similarity between data1 and data3: {cosine_similarity_1_3}")
print(f"Pearson Correlation between data1 and data2: {pearson_corr_1_2}")
print(f"Pearson Correlation between data1 and data3: {pearson_corr_1_3}")

运行结果:

Cosine Similarity between data1 and data2: 1
Cosine Similarity between data1 and data3: 0.6363636363636364
Pearson Correlation between data1 and data2: 1.0
Pearson Correlation between data1 and data3: -1.0

五、近似度解释

余弦相似度:

计算 data1 和 data2 的余弦相似度,结果接近1,表示两个向量的方向非常一致。
计算 data1 和 data3 的余弦相似度,结果接近-1,表示两个向量的方向完全相反。

皮尔逊相关系数:

计算 data1 和 data2 的皮尔逊相关系数,结果为1,表示两个数据完全正相关。
计算 data1 和 data3 的皮尔逊相关系数,结果为-1,表示两个数据完全负相关。


总结

对于描述曲线走势,皮尔逊相关系数通常更有效,因为它不仅考虑方向,还考虑大小,能够更全面地反映两个时间序列数据之间的线性相关性。而余弦相似度只关注方向,对于大小的变化不敏感,因此在曲线走势分析中不如皮尔逊相关系数有效。

在行情里,close也好,ma均线也好,本质都是一个序列值,也就是一组list。一个list也就是一条曲线。你想到了什么?

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值