基于持量机的机学策(源码)

本文介绍了支持向量机的基本概念和原理,并详细阐述了如何基于支持向量机构建机器学习策略,特别是在金融量化投资中的应用。策略通过训练历史数据预测未来涨跌,采用RBF核函数,回测结果显示胜率达到100%,卡玛比率和夏普比率表现出色,体现了机器学习在量化交易中的潜力。
摘要由CSDN通过智能技术生成

原 基于支持向量机的机器学习策略(附源码)

机器学习策略简介

什么是机器学习策略?

​ 从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法.但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法.而机器学习策略,则是通过机器学习方法,通过输入训练数据与模型来获得对未来数据的价格或者涨跌的预期判断,进而进行投资的量化策略.

支持向量机简介

什么是支持向量机?

​ 支持向量机(Support Vector Machines, SVM) 被Vapnik与他的合作者提出于1995年,基础为统计学习理论和结构风险最小化原则.支持向量机具有完备的理论基础和出色的学习能力,是借助于最优化方法解决有限样本机器学习问题的数据挖掘出色方法之一.

支持向量机的原理是?

​ 假设给定一个特征空间上的训练集:

T=\begin{Bmatrix}(x{1},y{1}),(x{2},y{2}),...,(x{i},y{i})\end{Bmatrix};x{i}\in \boldsymbol{X}=\mathbb{R}^n,y{i}\in \boldsymbol{Y}=

{ +1,1}{+1,−1}
;i=1,2,...,N

​ 其中x{i}为第i个特征向量,y{i}为x{i}的类标记,当y{i}=+1时,x{i}称为正例,当y{i}=-1时,x_{i}称为负例.

线性可分SVM

​ 假设训练数据集线性T可分,通过间隔最大化或等价求解相应凸二次规划问题得到分离超平面w^{ }\cdot x+b^{ }=0和相应的分类决策函数f(x)=sign(w^{ }\cdot x+b^{ })为线性可分SVM.

​ 为了量化分类的正确性和确信度,引入函数间隔的概念.

​ 对于给定的训练数据集T和超平面(w,b),定义超平面关于样本点(x{i},y{i})的函数间隔为:

<center>\hat{\gamma{i}}=y{i}(w\cdot x_{i}+b)</center>

​ 定义超平面(w,b)关于训练数据集T的函数间隔为关于T中所有样本点(x{i},y{i})的函数间隔的最小值:

<center>\hat{\gamma}=\min{i=1,...,N}\hat{\gamma{i}}</center>

​ 为了取消成比例改变w.b导致函数间隔变化但超平面不变的问题,引入规范化\left | w \right |,此时函数间隔变为几何间隔.

​ 对于给定的训练数据集T和超平面(w,b),定义超平面关于样本点(x{i},y{i})的几何间隔为:

<center> \hat{\gamma{i}}=y{i}(\frac{w}{\left | w \right |}\cdot x_{i}+\frac{b}{\left | w \right |})</center>

​ 定义超平面(w,b)关于训练数据集T的函数间隔为关于T中所有样本点(x{i},y{i})的几何间隔的最小值:

<center>\hat{\gamma}=\min{i=1,...,N}\hat{\gamma{i}}</center>

​ 可知函数间隔和几何间隔的关系为:

<center>\gamma{i}=\frac{\hat{\gamma{i}}}{\left | w \right |},\gamma=\frac{\hat{\gamma}}{\left | w \right |} (1)</center>

硬间隔最大化

​ 通过寻找最大化几何间隔的分离超平面可以以充分大的确信度对训练数据进行分类,最大化几何间隔又称为硬间隔最大化,此时的约束最优化问题为:

<center>\max_{w,b} \gamma</center>

<center>s.t. y{i}(\frac{w}{\left | w \right |}\cdot x{i}+\frac{b}{\left | w \right |})s\geqslant \gamma ,i=1,2,...,N</center>

​ 即最大化超平面(w,b)关于训练数据集T的几何间隔\gamma

​ 考虑(1),问题可改写为:

<center>\max_{w,b} \frac{\hat \gamma}{\left | w \right |}</center>

<center>s.t. y{i}(w\cdot x{i}+b)\geqslant \hat\gamma ,i=1,2,...,N</center>

​ 基于与引入规范化\left | w \right |同样的原因,$\hat \gamma的取值对结果没有影响,故取$\hat \gamma=1,考虑

<center>$$\max{w,b} \frac{1}{\left | w \right |}\Leftrightarrow \min{w,b}\frac{1}{2}\left | w \right |^{2}$$</center>

​ 有以下线性可分SVM学习的最优化问题:

<center>\min_{w,b}\frac{1}{2}\left | w \right |^{2} (2)</center>

<center>s.t. y{i}(w\cdot x{i}+b)-1\geqslant 0,i=1,2,...,N (2)</center>

​ 该问题是一个凸二次规划问题.可以证明,若训练数据集T线性可分,那么可将训练数据集中的样本点完全正确分开的最大间隔超平面存在且唯一.

​ 在线性可分的情况下,训练数据集的样本点与分离超平面距离最近的样本点的示例称为支持向量,如下图的H{1}和H{2}上的点:

​ H{1}和H{2}之间的距离称为间隔,为\frac{2}{\left | w \right |},H{1}和H{2}称为间隔边界.

线性可分SVM对偶学习算法

​ 通过运用拉格朗日对偶性,可以得到原始问题的对偶问题,对偶问题往往更容易求解,也便于引入核函数推广到非线性分类问题.拉格朗日对偶性在此不赘述,但有个重要定理需要特别指出:对于原始问题和对偶问题,在满足特定条件时,则x^{ }.\alpha^{ }. \beta ^{ }分别为原始问题和对偶问题的解的充要条件为x^{ }.\alpha^{ }. \beta ^{ }满足KKT条件.KKT条件表述如下:

<center>\bigtriangledown _{x}L(x^{ },\alpha^{ }, \beta ^{*})=0</center>

<center>\alpha{i}^{*}c{i}(x^{*})=0,i=1,2,...,k(KKT的对偶互补条件)</center>

<center>c_{i}(x^{*})\leqslant 0,i=1,2,...,k</center>

<center>\alpha_{i}^{*}\geqslant 0,i=1,2,...,k</center>

<center>h_{j}(x^{*})=0,j=1,2,...,l</center>

​ 向(2)引入拉格朗日乘子\alpha_{i}\geq 0,i=1,2,...,N定义拉格朗日函数

<center>L(w,b,\alpha)=\frac{1}{2}\left | w \right |^{2}-\sum{i=1}^{N}\alpha{i}y{i}(w\cdot x{i}+b)+\sum{i=1}^{N}\alpha{i} (3)</center>

​ 其中,\alpha=(\alpha{1},\alpha{2},...,\alpha_{N})^{T}为拉格朗日乘子向量.

​ 根据拉格朗日对偶性可以得到原始问题的对偶问题即极大极小问题:

<center>\max{\alpha}\min{w,b}L(w,b,\alpha)</center>

​ 先求\min_{w,b}L(w,b,\alpha),分别让(3)对w.b的偏导等于0,有:

<center>\bigtriangledown {w}L(w,b, \alpha)=w-\sum{i=1}^{N}\alpha{i}x{i}y_{i}=0</center>

<center>\bigtriangledown {b}L(w,b, \alpha)=-\sum{i=1}^{N}\alpha{i}y{i}=0</center>

<center>w=\sum{i=1}^{N}\alpha{i}x{i}y{i} (4)</center>

<center>\sum{i=1}^{N}\alpha{i}y_{i}=0 (4)</center>

​ 把(4)代入(3)整理可得:

<center>\min{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum{j=1}^{N}\sum{i=1}^{N}\alpha{i}\alpha{j}y{i}y{j}(x{i}\cdot x{j})+\sum{i=1}^{N}\alpha_{i}</center>

​ 接下来再求\max{\alpha}\min{w,b}L(w,b,\alpha),其对偶问题为:

<center>\max{\alpha}-\frac{1}{2}\sum{j=1}^{N}\sum{i=1}^{N}\alpha{i}\alpha{j}y{i}y{j}(x{i}\cdot x{j})+\sum{i=1}^{N}\alpha_{i} (5)</center>

<center>s.t.\sum{i=1}^{N}\alpha{i}y_{i}=0 (5)</center>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值