【问题标题】:Is kernel regression the same as linear kernel regression?核回归与线性核回归相同吗?
【发布时间】:2016-10-11 12:31:47
【问题描述】:

我想在 sklearn 中编写线性核回归代码,所以我编写了以下代码:

model = LinearRegression()
weights = rbf_kernel(X_train,X_test)

for i in range(weights.shape[1]):
    model.fit(X_train,y_train,weights[:,i])
    model.predict(X_test[i])

然后我发现sklearn中有KernelRidge:

model = KernelRidge(kernel='rbf')

model.fit(X_train,y_train)

pred = model.predict(X_train)

我的问题是:
1-这两个代码有什么区别? 2-in model.fit() 在 KernelRidge() 之后,我在文档中发现我可以向 fit() 函数添加第三个参数“权重”,如果我已经将内核函数应用于型号?

【问题讨论】:

    标签: machine-learning scikit-learn regression


    【解决方案1】:
    1. 这两个代码sn-ps有什么区别?

    基本上,它们没有共同之处。您的第一个代码 sn-p 实现了线性回归,具有任意设置的样本权重。 (你是怎么想到用这种方式打电话给rbf_kernel的?)这仍然只是一个线性模型,仅此而已。您只是简单地分配(有点随机)哪些样本很重要,然后循环遍历特征(?)。这根本没有意义。一般来说:您对rbf_kernel 所做的事情是完全错误的;这完全不是它应该被使用的方式(以及为什么当你尝试将它传递给 fit 方法时它会给你错误,而你最终做了一个循环并分别传递每一列)。

    将此类模型拟合到余弦数据(因此平均值为 0)的示例:

    1. 我在model.fit() 函数的文档中发现KernelRidge() 之后我可以添加第三个参数weight。如果我已经对模型应用了核函数,我会这样做吗?

    这是实际的核方法,核不是样本加权。 (人们可能会使用核函数来分配权重,但这不是“线性核回归”或一般“核方法”中核的含义。)核是一种将非线性引入分类器的方法,它来自于以下事实:许多方法(包括线性回归)可以表示为向量之间的点积,可以用核函数代替,从而在不同的空间(再现希尔伯特核空间)中解决问题,这可能具有非常高的复杂度(如无限维空间)由 RBF 核诱导的连续函数)。

    与上述相同数据的拟合示例:

    from sklearn.linear_model import LinearRegression
    from sklearn.kernel_ridge import KernelRidge
    import numpy as np
    from matplotlib import pyplot as plt
    
    X = np.linspace(-10, 10, 100).reshape(100, 1)
    y = np.cos(X)
    
    for model in [LinearRegression(), KernelRidge(kernel='rbf')]:
    
        model.fit(X, y)
        p = model.predict(X)
    
        plt.figure()
        plt.title(model.__class__.__name__)
        plt.scatter(X[:, 0], y)
        plt.plot(X, p)
    
        plt.show()    
    

    【讨论】:

    • 首先谢谢我意识到我现在知道的错误是:在“内核回归”中使用内核与在“内核回归”中的“局部加权线性回归”中使用内核不同,我们将其用作x0 和 X 之间距离的权重,这里的“内核回归”是惰性学习器,但在“内核线性回归”中,我们将其用作向模型引入非线性的方法“内核线性回归”是渴望学习器
    • 不,“内核回归”不是关于加权任何事情。 “内核回归”是任何使用内核技巧的回归的“包术语”,因此“内核线性回归”是“内核回归”以及“支持向量回归”的特定类型。使用内核计算权重不是“内核回归”。
    • 拟合函数中的权重只是数据的权重,用于构建梯度下降中的回归线(就像我们使用 boosting 时数据中的权重一样)但是我如何将权重项添加到线性回归的闭式解 \beta = (K(X^T,X) + \lambda I)^{-1}y
    • en.wikipedia.org/wiki/Kernel_regression ,我认为它的名字是 Nadaraya–Watson 核回归,它被写成“使用核作为权重函数”
    • “核线性回归”和“局部加权线性回归”有区别吗
    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 2012-10-28
    • 2020-11-28
    • 2020-11-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多