高斯核函数回归

假设自变量为X,因变量为Y。X中含有n个样本,并且与Y中的值一一对应。对于自变量样本的任意取值x,它有个一唯一对应的y。为了计算y,利用其他自变量样本对应的y取加权平均值,权重为其他自变量样本距离该x的样本距离。距离x越远的样本,则对应的y的权重越小。这种回归方式称为高斯核函数回归。依据不同形式的核函数,可以计算出不同的自变量样本权重。
期权的隐含波动率与期权的在值程度和期权剩余到期时间具有函数关系。本文用高斯核函数回归的方式,选取2020年12月30日上证50ETF期权的数据,建立隐含波动率模型。样本数据见:

1.导入模块和不同的核函数

from sklearn.datasets import make_friedman2
from sklearn.gaussian_process import GaussianProcessRegressor
"""用于引入核的形式https://scikit-learn.org/stable/modules/gaussian_process.html#rw2006
ConstantKernel:修改高斯过程的均值
WhiteKernel:修改高斯过程的标准差
Sum:将两核求和
Product:将两核求积
Exponentiation:将核求指数
RBF:径向基函数(RBF)核
Matern:Matern内核
RationalQuadratic:二次有理核
ExpSineSquared:指数sin平方核
DotProduct:点乘核
"""
from sklearn.gaussian_process.kernels import *
import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import *#模型评估指标

2.处理样本数据

#读取数据
data=pd.read_excel('隐含波动率样本数据.xlsx')
X=data[['times', 'm']]
y=data['implied']

#将自变量做标准化处理
X=preprocessing.scale(X)

#将数据划分为训练集和测试集
x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=12)

3.拟合模型

kernel = Matern(length_scale=0.484,nu=1.5) + WhiteKernel()#构造核函数形式

model= GaussianProcessRegressor(kernel=kernel,#指定GP协方差函数的内核
                                alpha=1e-10,#拟合时核矩阵对角线上增加的值.通过确保计算值形成一个正定矩阵,可以防止在拟合过程中出现潜在的数值问题
                                optimizer='fmin_l_bfgs_b',#用于优化内核参数的内部支持的优化器
                                n_restarts_optimizer=0,#优化器重新启动的次数,用于寻找最大化对数边际可能性的内核参数
                                normalize_y=False,#不管目标值y是否归一化,目标值的均值和方差分别设为0和1
                                copy_X_train=True,
                                random_state=None)
model=model.fit(X, y)#拟合高斯过程回归模型

4.观察模型

model.get_params()#获取这个估计量的参数
model.log_marginal_likelihood()#为训练数据返回theta的对数边际可能性
model.score(X, y)#返回拟合优度
model.sample_y([[-0.63252516,  0.8778663 ]])#从高斯过程中抽取样本,在X处求值
model.predict(X, return_std=True)#使用高斯过程回归模型进行预测

5.评估模型拟合效果

y_pred=model.predict(x_test)#测试集数据的预测值
explained_variance_score(y_true=y_test,y_pred=y_pred)#解释方差分数
mean_absolute_error(y_true=y_test,y_pred=y_pred)#绝对误差均值
mean_absolute_percentage_error(y_true=y_test,y_pred=y_pred)#绝对误差百分比
mean_squared_error(y_true=y_test,y_pred=y_pred)#均方误差
mean_squared_log_error(y_true=y_test,y_pred=y_pred)#均方对数误差
r2_score(y_true=y_test,y_pred=y_pred)#拟合优度
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于高斯过程回归(Gaussian Process Regression, GPR)来说,函数(也称为协方差函数)是非常重要的。函数定义了两个输入样本之间的相似性度量,它决定了高斯过程的平滑性和灵活性。 调整函数可以对高斯过程回归的性能产生重要影响。以下是一些调整函数的常见方法: 1. 高斯核函数的参数调整:高斯核函数高斯过程回归最常用的函数之一。它的形式为 K(x, x') = σ²exp(-||x-x'||² / (2l²)),其中 σ² 是方差参数,l 是长度尺度参数。调整这两个参数可以影响高斯过程的平滑性和灵活性。通常可以通过交叉验证或优化算法来寻找最优的参数值。 2. 使用其他函数:除了高斯核函数,还有其他各种函数可供选择,如线性函数、多项式函数、周期函数等。根据问题的特点,选择合适的函数可能会提高模型的拟合能力。 3. 组合多个函数:将多个函数进行线性组合或非线性组合,可以得到更加灵活的函数。例如,将不同尺度的高斯核函数加权求和,可以获得自适应的函数。 4. 引入噪声模型:在高斯过程回归中,通常会假设存在一个噪声模型,用于描述观测数据中的噪声。噪声模型可以通过调整噪声方差来控制模型的平滑程度。 5. 使用函数选择算法:有时候,手动调整函数的参数和选择合适的函数可能会比较困难。因此,有一些自动化的函数选择算法可供使用,例如基于贝叶斯优化的自动机器学习算法。 总之,调整函数是高斯过程回归中的一个重要步骤,可以通过调整函数的参数、选择合适的函数、组合多个函数、引

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江姐vior

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值