线性模型:最小二乘法(回归问题)

模型假设


最简单模型:y=x

克服限制:t=f(x;w0;w1)=w0+w1*x




定义最佳参数:

(tn-f(xn;w0;w1))^2 数值越小越接近tn

平方损失函数:



(其它损失函数也可,

例绝对损失:Ln=l tn-f(xn;w0;w1) l

     0-1损失:L(Y,fx)=【1(Y不等于fx);0(Y等于fx)

     对数损失:L(Y, P(Y|X)= - log P(Y l X)

     L(Y, P(Y|X))这个对数损失函数的意思是指分类为Y的情况下,使P(Y|X)达到最大。Y是代表分类为正确的分类,而P(Y|X)则是代表正确分类的概率,那对数取反是        不是P(Y|X)越大,损失函数就越小



Ln(tn,f(xn;w0;w1))=(tn-f(xn;w0;w1))^2 

平均损失(风险函数)~-训练误差

L=求和(Ln(tn,f(xn;w0;w1)))/N


模型化归为:

arg min 【求和(Ln(tn,f(xn;w0;w1)))/N】

arg min:‘找到最小化参数’


代入f(xn;w0;w1)=w0+w1*xn


对求偏导:


得到w0=t均-w1*x均

w1=【求和(xn*tn)/N - t均*x均】/【求和(xn^2)/N - x均^2


对于多元问题


f(xn;w0;w1)=w^T * xn

L=求和 ( (tn-w^T * xn^2)/N


化简 : 

L= ( (t-X*w)^T*(t-X*w/N

X=【1 x1;

  2 x2;

.....

   ]


分解

向量/矩阵的微分损失


数值流程


X =


     1     1
     1     3
     1     5


t =


    4.8000
   11.3000
   17.2000



inv(X'*X)*X'


ans =


    1.0833    0.3333   -0.4167
   -0.2500   -0.0000    0.2500


inv(X'*X)*X'*t


ans =


    1.8000
    3.1000


w0=1.8

w1=3.1


线性模型的非线性响应

例如

X=[1 x1 x1^2

     1  x2  x2^2

                 .........

                               ]


任何K项函数集

X=  [    h1(x1)  h2(x1) .......hk(x1)

               h1(x2)  h2(x2) .......hk(x2)

                                       .......................

                                                                  ]


泛化和过拟合


对于运动员数据用8阶多项式拟合会出现过拟合的情况:龙格现象

所以需要泛化


解决方法:

验证数据

将数据集分为训练集和验证集来验证损失来衡量泛化能力

但验证的损失对于验证集数据的选择敏感,如何验证集很小,更加困难

交叉验证

K折交叉验证将数据集分为大小相等K份(尽量),每块轮流作验证集,其它K-1作为训练集

缩放提高效率:让K<



K=N时成为留一交叉验证:LOOCV


训练误差小的模型泛化误差也会小


正则化最小二乘法:

通常w的绝对值之和越大模型越复杂

定义模型复杂度:w^T * w

正则化损失=平均平方损失+复杂度惩罚项

L'=L+lamada*(w^T * w)

w=(X^T*X+N*lamada*I)^(-1)*X^T*t


多项式时:

lamada越大函数越不复杂但越接近线性  

等于0时经过所有点

你可能感兴趣的:(机器学习)