sklearn浅析(六)——Kernel Ridge Regression

  Kernel Ridge Regression即使用核技巧的岭回归(L2正则线性回归),它的学习形式和SVR(support vector regression)相同,但是两者的损失函数不同:KRR使用的L2正则均方误差;SVR使用的是带L2正则的 ϵ -insensitive loss: max(0,|yhθ(x)|ϵ)
  KRR有近似形式的解,并且在中度规模的数据时及其有效率,由于KRR没有参数稀疏化的性能,因此速度上要慢于SVR(它的损失函数有利于得到稀疏化的解)。
  KRR的最小二乘解: β=(K+λI)1yw=βiXi ,这里的 K 是核函数。最小二乘解不适用于大规模数据。

Kernel Ridge Regression的使用

from sklearn.kernel_ridge import KernelRidge
KRR = KernelRidge()

Kernel Ridge Regression类的定义

class KernelRidge(BaseEstimator, RegressorMixin):
def __init__(self, alpha=1, kernel="linear", gamma=None, degree=3, coef0=1,
                 kernel_params=None):
  • alpha:float或者list(当y是多目标矩阵时),
  • kernel:str或者可调用对象,核的类型
    取值可以为:

    • linear:线性核, k(x,xi)=xxi
    • rbf:径向基函数, k(x,xi)=exp(xxi2δ2)
    • sigmoid:s型函数, k(x,xi)=tanh(η<x,xi>+θ)
    • poly或polynomial:多项式核函数, k(x,xi)=((xxi)+R)d
    • laplacian:拉普拉斯核函数, k(x,xi)=exp(xxiδ)
    • cosine:拉普拉斯核函数, k(x,xi)=<x,xi>xxi
    • chi2:卡方核函数, k(x,xi)=exp(γnk=1(xkyk)2(xk+yk))
    • additive_chi2:非指数形式卡方核函数, k(x,xi)=nk=1(xkyk)2(xk+yk)
      这些值定义在sklearn.metrics.pairwise中的一个PAIRWISE_KERNEL_FUNCTIONS常量中。
  • gamma:rbf,laplacian,poly,chi2,sigmoid核中的参数,使用其他核时无效。

  • degree:poly核中的参数d,使用其他核时无效。
  • coef0:poly和sigmoid核中的0参数的替代值,使用其他核时无效。

核的适用场景见:kernel

Kernel Ridge Regression类的fit()方法

def fit(self, X, y=None, sample_weight=None):
    类型检查
    计算kernel输出的值
    调用_solve_cholesky_kernel求解参数

fit()方法的返回值

  • self:KernelRidge实例对象。

属性

  • dual_coef_:核空间对应的模型参数
  • X_fit_:训练数据,预测时也需要该值

你可能感兴趣的:(学习笔记)