最近,我在做关于股票相似性的东西。就是对于不同股票或者同一股票在不同时间段内的走势的相似判断。取个例子:

下图为原股票的K线图(使用JFREEChart生成)

然后在我们的K线图集中选出最相似的几个K线图。

这个问题可以化为图片的相似性问题。然后我就去搜索图片相似算法的算法,找到了几个,比如PHASh,直方图,SIFT等。PHASH和直方图过于简单,提取不到

有用的信息,最后就选用了出名的SIFT算法。

必须说,SIFT算法的确是可靠的,效果比之前的好很多。但是也出现许多不理想的情况。由于图片相似性的算法是提取图片的特征来判定相似,这和我们人判定的相似

有所不同,我们判定股票的相似更多倾向于走势,走势才是我们关心的重点。可惜SIFT不关心,这就造成了,一些我们认为更加相似的股票图片反而排名靠后。一开始想着换算法的,可是SIFT的算法效果并不差,是能够找出前十几的相似的股票,只是在排名上出现问题。再说了,比SIFT更有效的算法也没几个。所以,我就打算找另一个不同类型的算法,从股票数据入手,专门从趋势入手,然后给这两种算法配上不同的权重来达到好的效果。

本来是打算用DTW的,可是对于现阶段我的探索,每个图片其实只是只有10个点,用DTW感觉大材小用了。后来,我找到了余弦向量相似算法,这个算法的思想是

对于两个向量的相似性使用这两个向量之间的夹角的cos值来判定。这个向量可以很好的描述我的股票数据,因为我的股票数据有开盘价,收盘价,最高和最低价格。对应于向量而言就是一支股票向量一个点有四个分量,四种属性。接着就是如何组织向量的问题了,有很多中组合方式。

我使用的第一种是将每个点作为一个向量,这样一张图片就是由每一个点向量组成,每张图片的数据就由10个向量来描述,然后将另一张图片的十个向量,第一个对第一个,第二对第二,由此推下去。算出每组的相似度,最后再除以10。就得到了最后的相似性。可惜这样的组合方式得到的效果并不好,而且最后的相似度,每组目标股票和备选股票的相似度相差极小,最低的相似度都有0.96(共294支股票)。原因我猜测是这是求的是每一天目标股票和备选股票的每一天的相似度,然后再除以10。本来目标股票和备选股票的每一天的差异其实并算是特别大,最后除以10,极大的缩小了它们之间的差异。

第二种选择的是将每天的开盘价和收盘价的差值,最高最低的差值给组合成向量。就是每个股票图片分成两个向量描述,一个是每个股票图片的十个点的收盘价和开盘价之差,另一个是每个股票图片的十个点的最高和最低价之差。这样子得到的结果就有比较好的区分,每一名之间基本都会有0.05以上的差异。我又调整了权值,将开盘收盘之差的权值给调高了,这样使数值更加趋向于趋势。

第二种的余弦向量的效果不错了,可以找到的确相似的图片了。接着,尴尬的事情发生了。在余弦向量相似结果的前十里面,SIFT的结果并没有占多少份额。我暂时也观测了将近十组数据,可以说,向量余弦稍微占优。但是全部数据有294组,才观测十组是没有什么代表性的。那就说明,对于不同的股票数据,两种算法有各自的优势,接下来我的工作就是去找出各自的优缺点,从而提高判定能力。

对于使用CNN,我这里的想法是,我没有正确的结果,只能使用无监督学习,这个也需要我去探索如何使用。

余弦向量相似性和SIFT算法在股票相似性中的使用(1)相关推荐

  1. 相似图片去重--余弦相似度和sift算法

    ----------------题目------------------- 摄影师小刘爱好摄影,有许多照片(不同格式,不同分辨率),有的是自己拍摄的,有的是朋友的相机帮忙拍到的. 但他很苦恼,因为有很 ...

  2. 无人机航拍图像匹配——SIFT算法实践(含代码)

    无人机航拍图像匹配--SIFT算法实践(含代码) 一.摘要 二.SIFT算法的原理 1.尺度空间极值检测 &关键点定位 尺度不变性&尺度空间 高斯金字塔 2.方向分配 3.特征描述 4 ...

  3. 教你一步一步用C语言实现sift算法、上

    原文:http://blog.csdn.net/v_july_v/article/details/6245939 引言:     在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的 ...

  4. SIFT算法总结:用于图像搜索

    原始文章链接:http://bubblexc.com/y2011/163/ 原文链接:http://blog.csdn.net/cserchen/article/details/5606859 关于三 ...

  5. C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上

    教你一步一步用c语言实现sift算法.上 作者:July.二零一一年三月十二日 出处:http://blog.csdn.net/v_JULY_v 参考:Rob Hess维护的sift 库 环境:win ...

  6. SIFT算法学习心得

    文章转自:http://www.yongblog.com/archives/256.html 这篇文章主要介绍 SIFT 算法.希望通过对 SIFT 算法的总结来更加深入地了解"尺度不变特征 ...

  7. SLAM-Visual Navigation学习之SIFT算法与代码详解

    ** SIFT算法 ** 文章目录 SIFT算法 一.特征点,关键点,角点? 二.前置知识 1.尺度 2.卷积 3.高斯函数 4.高斯卷积(模糊) 三.SIFT算法的引入 Harris算法缺陷: 1. ...

  8. 【计算机视觉】局部图像描述子:SIFT算法

    文章目录 [计算机视觉]局部图像描述子:SIFT算法 1. SIFT算法的原理 1.1 SIFT算法的目标与思想 1.1.1 算法目标 1.1.2 算法思想 1.2 尺度空间的思想和表示 1.2.1 ...

  9. 图像拼接(一)——SIFT算法新手入门级介绍!!!

    前言 因为博主毕设和图像拼接有关,所以博主简单地学习了SIFT算法,不知道以后研究生会不会接触图像这块,顺便也为了检验一下自己学的是否透彻,所以在CSDN上写一篇Blog,纪录一下,仅供各位小伙伴参考 ...

最新文章

  1. 安卓v7支持包下的ListView替代品————RecyclerView
  2. mysql事务怎么加排他锁_八种方法实现CSS页面底部固定 - SegmentFault 思否
  3. linux监控命令详解
  4. [转]计算机学习道路
  5. 什么是Spring Boot以及为什么它是用于创建微服务的首选框架
  6. ARM汇编指令(ARM工作模式、寄存器)
  7. window.location.hash属性介绍
  8. 第二阶段第八天站立会议
  9. 蚂蚁上市或诞生近60位亿万富翁;特斯拉回应25万元团购Model3;Python 3.8.5 发布| 极客头条
  10. Vs 2008 sp1更新后出现的问题!
  11. 在html插入数学公式,在网页中显示数学公式
  12. python编写txt阅读器程序_Python 制作简易小说阅读器
  13. 2019最新PHP100项目实战(PHP新手入门教程)
  14. ipv6 静态路由配置
  15. 重装linux式化磁盘,最详细的linux系统重装步骤图解
  16. 为什么微软邮箱(outlook.live.com)一个邮件也收不到
  17. Component xxx does not have a method xxx to handle event xxx
  18. android软件多版本共存,1. android studio 多版本共存(2.2 and 3.3)
  19. jdbc连接字符集为us7ascii的oracle数据库乱码解决办法
  20. 数据仓库(DW)、数据湖、数据中台的关系

热门文章

  1. c语言-输出带框文字
  2. 余越论金:2.21外汇黄金、美原油趋势行情分析及交易策略
  3. ios分屏_升级iPadOS(13.1)正式版后如何分屏?iPadOS分屏方法
  4. 粗解构造函数,原型,原型链,显式原型,隐式原型
  5. linux下QQ配置文件路径,EasyWine安装及配置指南
  6. MVC中使用PartialView方法
  7. 超六类(千兆)水晶头的压制方法及注意事项
  8. C语言 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
  9. 十七款金融类APP完整源码推荐
  10. winxp 如何重装ie6.0