• 机器学习实战笔记-8-回归


    回归

    线性回归

    (mathbf{x}^{mathbf{T}})向量第一列全为1,即(x_{0} = 1),这样(x_{0}w_{0})代表的是截距,(x_{1}w_{1})是斜率:

    设回归方程(y_{i}^{'} =mathbf{x}_{mathbf{i}}^{T}mathbf{omega}),则回归的评价指标:误差的平方和(sum_{i = 1}^{m}left( y_{i} - mathbf{x}_{i}^{T}mathbf{omega} ight)^{2})

    写作矩阵形式:

    回归方程为(mathbf{y}' = Xmathbf{omega}),其中(mathbf{y}')(m imes 1)(X)(m imes n),误差的平方和(delta = left( mathbf{y}Xmathbf{omega} ight)^{T}(mathbf{y} - Xmathbf{omega}))

    (frac{partialdelta}{partialmathbf{omega}} = - X^{T}mathbf{y+}X^{T}Xmathbf{omega}mathbf{= 0}),得到回归系数为(mathbf{omega} =left( mathbf{X}^{T}mathbf{X} ight)^{- 1}mathbf{X}^{T}mathbf{y})
    用相关系数corrcoef(yHat.T,yMat)可以计算得到相关系数,即拟合指标。

    局部加权线性回归

    使用“核”给预测点附近每个点赋予更高的权重,即(wleft( i,i ight) = expleft( frac{left| x_{i} - x ight|}{- 2k^{2}} ight))。则回归系数

    [mathbf{omega}mathbf{=}left( mathbf{X}^{T}mathbf{ ext{WX}} ight)^{mathbf{- 1}}mathbf{X}^{T}mathbf{ ext{Wy}} ]

    其中(mathbf{W})(wleft( i,i ight))形成的矩阵。

    • (k)越小,预测点附近的点权重越大,越看重细节。易造成过拟合。过拟合的误差(sum_{i = 1}^{m}left( y_{i} - y_{i}^{'} ight)^{2})较小。但预测新数据的效果未必越好。

    • (k)越大,预测点附近的点权重越平均,越看重整体。(k = 1)时基本与简单线性回归一样了。

    缩减系数之岭回归

    如果上述训练集的特征比样本点数多(n>m),输入数据的矩阵不是满秩矩阵,求逆会出现问题。作以下修正即可(其中(mathbf{I})大小为m*m):

    ( mathbf{omega} = left( mathbf{X}^{T}mathbf{X}mathbf{+}lambdamathbf{I} ight)^{- 1}mathbf{X}^{T}mathbf{y} )

    数据获取之后,首先抽取部分用于测试,其余用于训练出参数(mathbf{omega}),训练完毕后在测试集上测试性能,选取不同的(mathbf{lambda})重复上述过程,得到使预测误差最小的(mathbf{lambda})

    可知,(lambda)越小(越接近0),各系数与普通回归一样;随着(lambda)不断增大,系数全部缩减为0。取中间的值可以得到最好的预测效果。

    该方法等效于 普通线性回归+约束:(sum_{k = 1}^{n}{omega_{k}^{2} leqlambda})

    图、 回归系数与(lambda)的关系

    1. 缩减系数之前向逐步回归:属于贪心算法(每一步都尽可能减小误差)

    算法伪代码:每次迭代更改w(中一个特征的一个小值),以得到做这样改动的最优解。

    数据标准化(满足0均值和单位方差:数据减去均值后处以方差)
    for 每轮迭代:
      设置最前最小误差lowestError为正无穷
      对每个特征:
        增大或缩小一个系数得到新的w
          计算新w下的误差
          如果误差Error小于lowestError:设置WBest为当前w
      将WBset设置为新的w
    

    缩减系数的目的在于:“理解”特征对回归的作用。


    关于矩阵求导:其中(mathbf{x,eta})均为列向量。

    ( frac{partialmathbf{eta}^{T}mathbf{x}}{partialmathbf{x}} = frac{partialmathbf{x}^{T}mathbf{eta}}{partialmathbf{x}} = mathbf{eta}() )

    ( frac{partialmathbf{x}^{T}mathbf{x}}{partialmathbf{x}} = 2mathbf{x}() )

    ( frac{partialmathbf{x}^{T}mathbf{A}mathbf{x}}{partialmathbf{x}} = frac{partialmathbf{x}^{T}mathbf{A}^{T}mathbf{x}}{partialmathbf{x}} = frac{partial(mathbf{x}^{T}mathbf{)}mathbf{A}mathbf{x}}{partialmathbf{x}}mathbf{+}frac{partialmathbf{x}^{T}mathbf{A}mathbf{(x)}}{partialmathbf{x}} = frac{partial(mathbf{x}^{T}mathbf{A}mathbf{)x}}{partialmathbf{x}}mathbf{+}frac{partialmathbf{x}^{T}mathbf{(}mathbf{A}mathbf{x)}}{partialmathbf{x}} = mathbf{A}^{T}mathbf{x} + mathbf{Ax =}left( mathbf{A}^{mathbf{T}}mathbf{+ A} ight)mathbf{x} )

  • 相关阅读:
    hdu 4612 Warm up 双连通缩点+树的直径
    Hadoop-04-HBase全然分布式环境搭建
    java实现的Trie树数据结构
    Sharpui企业版-简单介绍【01】 【QQ群:206378966】
    Apache Mina开发手冊之四
    POJ训练计划1459_Power Network(网络流最大流/Dinic)
    svn+ssh
    Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动
    连锁快餐企业软件的一些管理
    多进程解决datasnap支持的tcp长连接数量少的问题
  • 原文地址:https://www.cnblogs.com/charleechan/p/11434765.html
Copyright © 2020-2023  润新知