机器学习基石---Linear Regression

网友投稿 1152 2022-10-08

机器学习基石---Linear Regression

机器学习基石---Linear Regression

knitr::opts_chunk$set(echo = TRUE)

前面都是在讲泛化的问题,现在开始讲算法相关。我之前看李航的书大都是怎么构建损失函数以及如何优化损失函数,也没想过泛化的问题。至于线性回归,统计学里讲的比较取巧,先假定存在线性关系,受误差项影响产生一些波动。书归正传,按照Week9的顺序,权当复习。

符号标记

x=(x0,x1,x2,⋯,xd)T x = ( x 0 , x 1 , x 2 , ⋯ , x d ) T :样本特征,其中x0 x 0 为常数项,其余为用户特征 y y :目标变量,连续型数值变量 w=(w0,w1,w2,⋯,wd)T w = ( w 0 , w 1 , w 2 , ⋯ , w d ) T :系数向量

线性回归算法

Hypothesis如下:

h(x)=wTX h ( x ) = w T X

线性回归算法的目标就是找到最合适的

w w ,使得训练集误差( Ein E i n )最小。而衡量误差的方式为:

Ein(h)=1N∑n=1N(h(xn)−yn)2 E i n ( h ) = 1 N ∑ n = 1 N ( h ( x n ) − y n ) 2

矩阵表示:

矩阵X X 共计NN行,每一行代表一个样本,每个样本d+1 d + 1 个维度。 对于这类线性回归问题,损失函数一般是凸函数。凸函数证明:

∂f∂w=2N(XTXw−XTy)∂2f∂w2=2NXTX ∂ f ∂ w = 2 N ( X T X w − X T y ) ∂ 2 f ∂ w 2 = 2 N X T X

易知Hessian Matrix为半正定,所以损失函数是凸函数。此时只要令一阶导为0,求出对应的

w w 即可。

2N(XTXw−XTy)=0XTXw=XTywLIN=(XTX)−1XTy 2 N ( X T X w − X T y ) = 0 X T X w = X T y w L I N = ( X T X ) − 1 X T y

其中

(XTX)−1XT ( X T X ) − 1 X T 又称伪逆矩阵,记为 X+ X + 。 XTX X T X 的逆矩阵不一定存在,软件总能求出一个替代矩阵。这样我们可以找一个 w w 使得损失函数最小。

泛化问题

Ein≈Eout E i n ≈ E o u t 吗?没大看懂,尝试着叙述一下。变换Ein E i n 个形式:

用WLIN W L I N 预测时,可以得到预测值y^=XwLIN=X(XTX)−1XTy y ^ = X w L I N = X ( X T X ) − 1 X T y ,称X(XTX)−1XT X ( X T X ) − 1 X T 为Hat Matrix。 而Hat Matrix的物理意义如下:

Hat Matrix相当于对y y 做往X X 张成的线性空间span投影的操作。那么{I - X{X^ + } {I - X{X^ + } 则是向span垂直方向投影。从几何上讲我们希望找到最短的y−y^ y − y ^ ,显然向量垂直这个线性空间时,满足要求。(三维的时候容易理解,试验设计教材上的比较清楚)。   考虑noise存在的情况:y=f(X)+noise y = f ( X ) + n o i s e ,此时Ein E i n 为:

Ein(wLIN)=1N∥y−XX+y∥2=1N∥(I−XX+)y∥2=1N∥(I−XX+)f(X)+(I−XX+)noise∥2 E i n ( w L I N ) = 1 N ‖ y − X X + y ‖ 2 = 1 N ‖ ( I − X X + ) y ‖ 2 = 1 N ‖ ( I − X X + ) f ( X ) + ( I − X X + ) n o i s e ‖ 2

因为f(X) f ( X ) 在X X 张成的空间上,所以(I−XX+)f(X)(I−XX+)f(X)为0。进一步:

Ein(wLIN)=1N∥(I−XX+)noise∥2=1Ntrace(I−XX+)∥noise∥2=1N(N−(d+1))∥noise∥2 E i n ( w L I N ) = 1 N ‖ ( I − X X + ) n o i s e ‖ 2 = 1 N t r a c e ( I − X X + ) ‖ n o i s e ‖ 2 = 1 N ( N − ( d + 1 ) ) ‖ n o i s e ‖ 2

推导过程并不懂,noise应该是一个矩阵,每个样本都会有一个随机扰动noise存在。Mr林并没有讲的很细致,就平均而言

E¯in=noiselevel∗(1+d+1N)E¯out=noiselevel∗(1−d+1N) E ¯ i n = n o i s e l e v e l ∗ ( 1 + d + 1 N ) E ¯ o u t = n o i s e l e v e l ∗ ( 1 − d + 1 N )

noise level也不知道什么意思,有的资料上貌似指的是误差项的协方差矩阵。

Ein

E i n 和Eout E o u t 都向σ2 σ 2 (noise level)收敛,他们之间的差异被2(d+1)N 2 ( d + 1 ) N bound住。所以这时候说明N N 够大时,Ein≈EoutEin≈Eout。

Summary

有点怀念NG课程直接面向工程的方式,至少容易接受点。泛化的问题实在是比较难理解,先这样吧。

2018-02-05 于杭州

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序脚手架(微信小程序脚手架php)
下一篇:Spyder基本配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~