请选择 进入手机版 | 继续访问电脑版
887 1

[交易策略] 给我一把刀,我能切开整个宇宙 [推广有奖]

  • 0关注
  • 4粉丝

本科生

83%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
1228 点
帖子
47
精华
0
在线时间
107 小时
注册时间
2017-7-13
最后登录
2019-5-22

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

原文来自:MindGo量化社区-【机器学习】给我一把刀,我能切开整个宇宙

【导语】标题非常不直观,估计小伙伴并不知道这篇文章的主要内容是什么。不过相信阅读完这篇文章,你就会有抄起一把刀切开这个世界的冲动了(盘古既视感)。这次我们要介绍的是SVM,支持向量机。支持向量机是一种用于分类的强大算法,它的强大之处,在于可以通过主动的提升维度分开非线性的事物。我们都知道,当维度上升的时候,事物就会变得稀疏,直观上可以解释为,维度上升了,也代表着空间变大了。直观上来说,就是二维的动画人物在三维的立体人眼里“一文不值”,三维世界的生物在四维世界里想必也就是一个小点。

  说实话,原先对于SVM也是一知半解,只知道SVM是用来切切切的,但是并不知道其中的门门道道。恰好,在知乎的过程中看到了一篇简单直白的介绍帖子——《Please explain Support Vector Machines (SVM) like I am a 5 year old.》,于是就拿来分享。

故事开始:

  教授今天难得有空,所以强行拉我一起玩游戏(哭)。

  教授:现在桌上有两种颜色的球,现在,你需要将他们分开。(正说着,教授丢给我一根棍子)

捕获1.JPG

  我一想,这不是轻而易举么,刷的把棍子一丢,就变成了上面中间图的样子。然而,教授奸诈地一笑,刷的从袖子里又掏出来一只球,飞快地放到了桌上,然后,就变成了图中最右侧的样子。我也微微一笑,调整了一下棍子的位置。然而,教授毕竟是教授,又给我出了个新的难题。教授把桌上的球重新打乱了,蓝球和红球不再是各站一边了,而是各自混入了茫茫“球海”中。现在,作为有棍子的我,也没法分开桌上的两种颜色的球了。机智如我,经过几秒钟的迟疑,“教授,难道你不知道我是我是隐居多年的忍者吗?”,我努足了劲,一拍桌子,凭着精准的力道,将所有的球都震飞到了空中。然后飞快地抽出一张纸,在空中将两种颜色的球分开了!如果依旧从桌面这个平面的角度看,我们可以看到球被类似于一条曲线分割开了。(教授看得目瞪狗呆…)

捕获2.JPG

  故事到这里结束了,然而从此,有一伙无聊的人把这些球叫做数据,这张纸叫做超平面,最大间隔叫做优化……

  从上面这个例子可以看出来,SVM就是通过提高数据的维度,来使得原本稠密而无法线性可分的数据变得稀疏而能够线性可分。上面的故事中,原本在二维桌面上的点由于被升维到了三维立体空间,所以就能够被一个平面完美分开了。当然了,这里必须提醒一句,并不是所有的升维都能够让数据变得线性可分,因为我们并不知道经过某种升维变换后各个数据点的位置在何处。也就是说,即便进行了升维,依旧可能存在不能完美分开的样本。虽然已经证明了“如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。”前提应该是要给到合适的升维映射方式。当数据仍然存在不可分的时候,就需要引入一些放松条件的措施来解决了,我们通过允许一些样本发生分类错误,并给予这些分类错误的样本一定的惩罚措施,来放宽训练条件。这里我们引入知乎“支持向量机(SVM)是什么意思?”@靠靠靠谱 同学的高票回答中的图片来说明问题。


  对于无法做到完全分离的样本,引入松弛变量(ε)放宽训练条件,对于图中分类错误的苹果,我们给予一个ε>1的惩罚,对于图中分类正确(在实现上边)且在虚线以内的苹果,给予一个 1>ε>0的惩罚,而对于图中分类正确且在虚线以外的苹果,给予ε=0的惩罚。

  上面,我们提到说通过将数据映射到高维空间中可以使得样本点变得线性可分。我们的第一反应是去寻找这样一个映射函数,比如能够将原本在二维平面中的点映射到三维立体空间。然而,考虑到在实际的使用过程中,我们可能面对的是本身就拥有成百上千维的样本点,再考虑升维,那么我们可能需要计算每个样本点映射到上万维的情况,如此一来涉及的计算量将会非常庞大。SVM也已经引入了另外一种机制,也就是著名的“核技巧”。我们只需要知道,在求解SVM的最优超平面的过程中,涉及到的是对样本点映射到特征空间的内积φ(xi)φ(xj),直接计算内积往往困难而复杂,为了避开这个障碍,我们直接引入一个函数k(xi,xj)=φ(xi)φ(xj),也即两个样本点在目标特征空间的内积等于它们在原始样本空间中通过函数k()计算的结果,从而避开了高维内积的计算。k()函数就叫做核函数。值得一提的是,在未知特征映射的形式的情况下,我们往往不知道什么样的核函数是最合适的,所以核函数的选择是SVM的一大变量。最常见的核函数包括线性核函数、多项式核函数、RBF(高斯核)核函数等。sklearn包中也提供了这些基础的核函数。

sklean_svm.JPG

【策略思路】

  最后,让我们来看一看SVM在选股上的应用如何。本文策略只做裸策略尝试,机器学习中的各种算法模型参数和输入特征都是非常重要的,因此需要经过前期大量的研究过程才可以生成较为成熟的应用。

  我们以2017年6月1日调仓日为例说明。

  1.首先获取调仓日前一个月月初(2017年5月1日)的公司财务指标,并计算每只股票从前一个月月初到月末(2017年5月1日至2017年5月30日)的涨跌幅;

  2.将涨跌幅处理为标签,涨跌幅为“ ”则赋予一个“ 1”的标签,为“-”则赋予一个“-1”的标签。

  3.标准化。在这里使用了StandardScaler作为标准化器;

  4.将标准化后的公司财务指标和对应每家公司的涨跌标签作为输入进行训练;

  5.获取上月月末的公司财务数据(2017年5月30日),使用训练好的随机森林分类器进行预测,并在6月1日开盘进行调仓,持有所有预测为“ 1”的股票。

  下面是回测结果,从结果上看,SVM的效果又不如决策树和随机森林,直到2014年中开始,选股策略才明显超过基准收益。分析原因,我认为可能是SVM的参数对于拟合结果非常重要,因此要想利用SVM得到效果较好的选股结果,必须要经过大量的调参过程。

捕获3.JPG


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


lwell20 发表于 2017-8-16 17:14:11 |显示全部楼层 |坛友微信交流群
吹牛是要收税的。。。。。。。。。。。。。。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 18:19