支持向量回归函数的梯度计算

时间:2018-07-13 07:11:09

标签: python scikit-learn svm gradient

我训练了一个SVR模型,该模型必须基于5维输入来预测输出值。然后,我想在优化问题中使用该模型,并使用回归函数的梯度来提高优化搜索性能。我正在使用scikit-learn库和nu-SVR(带有RBF内核)算法。

下面是我编写的代码。但是,当我使用scipy check_grad函数检查梯度值时,差异很大。

问题是:我可以相信check_grad函数吗?如果是,我的代码有什么错误?在此先感谢您的帮助。 (如果需要其他信息,请告诉我。)

def gradientPrediction(x):
    x_scaled = = (x-pickled_minVal)/pickled_diff
    query_point = x_scaled
    x_mat = np.matlib.repmat(query_point,len(pickled_model.support_),1).transpose()
    SVs = pickled_model.support_vectors_.transpose()
    sub_x = x_mat-SVs
    A = pickled_model.dual_coef_
    term = -pickled_model.gamma*A
    term = 2*term
    exp_term = np.matlib.repmat(np.exp(pickled_model.gamma*np.sum(sub_x*sub_x,axis=0)),SVs.shape[0],1)*sub_x
    exp_term = exp_term.transpose()
    grad = term.dot(exp_term)

    return (grad)

0 个答案:

没有答案