支持向量回归算法(SVR)

本文介绍了支持向量回归算法(Support Vector Regression,以下简称SVR)的相关内容。

简介

SVR是支持向量机(SVM)的重要应用分支。通过SVR算法,可以找到一个回归平面并使得一个集合中的所有数据距离该平面的距离最短。

使用场景

SVR是一个回归模型,主要是用于拟合数值,一般应用于特征较为稀疏且特征数较少的场景。

例如,可以使用SVR回归模型来预测某个城市的温度。输入特征有很多,例如这个城市某个时期的平均温度、绿化程度、湖泊数量以及日期等。训练数据可以是一段时间内的城市温度。

参数说明

下表中的参数为创建模型CREATE MODEL语法中model_parameter参数的取值,您可以根据当前需求选择对应的参数。

参数

说明

kernel

核函数,用于将低维数据映射到高维空间。取值如下:

  • rbf(默认):高斯径向基核函数。可以将一个样本映射到一个更高维的空间内。

  • linear:线性核。主要用于线性可分的情况。特征空间到输入空间的维度一样,其参数少、速度快。

  • poly:多项式核函数。可以实现将低维的输入空间映射到高维的特征空间,其参数较多。

  • sigmoid:使用该函数作为核函数时,效果类似多层神经网络。

c

松弛系数的惩罚项系数。取值为大于0的浮点数,可不填。默认值为1。

说明

如果数据质量较差,可以适当降低惩罚项c的值。

epsilon

SVR损失函数的阈值。当预测值与实际值的差值等于该阈值时,需要计算该样本的损失。默认值为0.1。

max_iter

最大迭代次数。取值为正整数或-1,默认值为-1。

说明

如果设置为-1,则表示不限制迭代次数,直到收敛到epsilon内为止。

示例

创建模型与模型离线训练

/*polar4ai*/CREATE MODEL svr1 WITH
( model_class = 'svr', x_cols = 'dx1,dx2', y_cols='y',
 model_parameter=(kernel='rbf')) AS (SELECT * FROM db4ai.testdata1);

模型评估

/*polar4ai*/SELECT dx1,dx2 FROM EVALUATE(MODEL svr1, 
SELECT * FROM db4ai.testdata1 LIMIT 10) WITH 
(x_cols = 'dx1,dx2',y_cols='y',metrics='r2_score');

模型预测

/*polar4ai*/SELECT dx1,dx2 FROM
PREDICT(MODEL svr1, SELECT * FROM db4ai.testdata1 LIMIT 10)
WITH (x_cols = 'dx1,dx2');
说明

其中,x_colsy_cols中的列数据类型必须是浮点型或整型。