模型假设
最简单模型: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)
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<<N,%10
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时经过所有点