zoukankan      html  css  js  c++  java
  • Kernel Methods (3) Kernel Linear Regression

    Linear Regression

    线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为:

    • 给定训练数据集(D), 由(m)个二元组(x_i, y_i)组成, 其中:
      • (x_i)(n)维列向量
      • (y_i)的值服从正态分布(N(f(x_i), sigma_i^2)), (f(x_i))是关于(x_i)的线性函数: (f(x_i) = w^Tx_i + b).
        为方便起见, 令(x_i gets [x_{i0} = 1, x_{i1}, dots, x_{in}] = [1, x_i^T]^T, w gets [b, w^T]^T), ( herefore f(x_i) = w^Tx_i), 以期望值作为预测值, 即(y_i = f(x_i))
    • 对于测试样本(x), 预测(x)对应的(y=f(x)).

    问题对应的损失函数:

    [L(w) = sum_{i =1}^m (f(x_i) - y_i)^2 = sum_{i =1}^m (w^Tx_i - y_i)^2 = ||Xw - Y||^2 ]

    其中,

    [X = left[ egin{matrix} x_1^T \ x_2^T \ vdots \ x_m^T end{matrix} ight], Y = [y_1, dots, y_m]^T ]

    加上正则项后,

    [L(w) = ||Xw - Y||^2 + lambda w^Tw = (Xw - Y)^T(Xw - Y) + lambda w^Tw, (lambda > 0) ]

    [w = argmin L(w) ]

    要使(L(w))取最得小值,

    [ o frac {partial L}{partial w} = 2X^T(Xw -Y) + 2lambda w = 0 ]

    [ o X^TXw + lambda w =(X^TX + lambda I) w = X^TY ]

    ((I)是一个(n)维的单位矩阵)

    [ o w = (X^TX + lambda I)^{-1} X^TY ]

    (因为有(lambda I)在, 所以(X^TX + lambda I)一定是可逆的.)

    Kernel-based Linear Regression:Theory

    不带kernel的线性回归算法得到的模型是一个线性函数 (f(x) = w^Tx). 要将它变成非线性的, 一个很常见的做法是手动构造新的多项式特征, 例如: ((a, b) o (a^2, ab, b^2)). 这个做法从本质上来说就是一种kernel方法, 只不过因为是手动构造的feature space, 它的feature mapping function (Phi) 是已知了. 当原始输入空间的维度不高时, 这种手动方式当然是一个不错的选择, 但是当维度变高后, 例如100维, 代价就太高了.
    使用kernel之后, 上面的损失函数变为:

    [L(w) = ||Zw - Y||^2 + lambda w^Tw = (Zw - Y)^T(Zw - Y) + lambda w^Tw ]

    其中,

    [Z = left[ egin{matrix} Phi(x_1)^T \ Phi(x_2)^T \ vdots \ Phi(x_m)^T end{matrix} ight] ]

    最后得到的(w)也相应的变为:

    [w = (Z^TZ + lambda I)^{-1} Z^TY ]

    之前已经反复讲过, 使用kernel method (kappa)时, 它对应的(Phi)是未知的. 对kernel linear regression也是如此. 所以现在得到的(w)是没法直接用于预测新样本的.
    但是当一个新样本(x)进来时, ((x)不包含1, 但是(Phi(x))已经像上面那样已经包含了增广项1, 所以式子仍然没有显式的出现(b))

    [y = w^TPhi(x) = Y^TZ(Z^TZ + lambda I)^{-1}Phi(x) ]

    利用等式(Z(Z^TZ + lambda I_{n imes n})^{-1} = (ZZ^T + lambda I_{m imes m})^{-1}Z),(这个等式通过左右同时乘以相同的矩阵很容易验证.)

    [y =w^TPhi(x) = Y^T (ZZ^T + lambda I)^{-1})Z Phi(x) = Y^T (K + lambda I)^{-1} ZPhi(x) = Y^T (K + lambda I)^{-1} left[egin{matrix} kappa(x_1, x)\ kappa(x_2, x)\ vdots\ kappa(x_m, x) end{matrix} ight] ]

    其中, (K = ZZ^T)是kernel matrix.
    这样一来, 我们在(Phi(x))未知的情况下得到了测试样本(x)的预测值(y).

  • 相关阅读:
    容器类总结
    CopyOnWriteArrayList
    ConcurrentHashMap
    nginx 反向代理,支持跨域,前后分离
    H5新特性 input type=date 在手机上默认提示显示无效解决办法
    浅析angular,react,vue.js jQuery使用区别
    Vue 微前端&微服务解决方案,远程组件服务化
    webspack 系统学习笔记
    2019年NodeJS框架Koa和Express选型对比
    转载:微前端的技术选型和对比
  • 原文地址:https://www.cnblogs.com/dengdan890730/p/5515610.html
Copyright © 2011-2022 走看看