1.实例
1.1基本条件
假设数据为{x ( 1 ) , x ( 2 ) , x ( 3 ) , . . . , x ( N ) x^{\left( 1 \right)},x^{\left( 2 \right)},x^{\left( 3 \right)},...,x^{\left( N \right)}x(1),x(2),x(3),...,x(N)},其中x xx是多维向量或认为是超平面内的点,表达式为:x = ( x 1 , x 2 , . . . , x k ) x=\left( x_1,x_2,...,x_k \right)x=(x1,x2,...,xk)。
1.2代码及结果
选择多项式拟合数据:GitHub-jupyterlab(例子代码),一元多次函数拟合数据.ipynb。
如图,对于两份数据,通过train得到拟合结果之后再用test验证拟合情况。
一元数据拟合情况:
结果:
稳定后的loss为: 546289.0648959058
训练集均差为 8.972739584955162
训练集总偏差为 [538.3643751]
训练集方差为 54.433026773618536
训练集标准差为 7.377874136471734
测试集均差为 11.230905384630068
测试集总偏差为 [449.23621539]
测试集方差为 168.81186944068685
测试集标准差为 12.992762194417585
三次拟合:
the loss is 219.5909230277145
训练集均差为 1.4086444962403653
训练集总偏差为 [84.51866977]
训练集方差为 0.7212146185694014
训练集标准差为 0.8492435566840654
测试集均差为 1.5676085359840122
测试集总偏差为 [62.70434144]
测试集方差为 0.736383621013507
测试集标准差为 0.8581279747295895
五次拟合:
the loss is 219.5909230277145
训练集均差为 1.659834950813476
训练集总偏差为 [99.59009705]
训练集方差为 1.1652727234890574
训练集标准差为 1.0794779865699242
测试集均差为 1.829716476776953
测试集总偏差为 [73.18865907]
测试集方差为 1.9192102408486047
测试集标准差为 1.385355636957025
1.3分析
欠拟合状态,在训练集和测试集上表现都不太好;而当次数过高时,处于过拟合状态,其精度不会随着模型的复杂度上升而变得更加精确,具体分析见代码块。
2.影响因素
2.1Bias 和 Variance的定义
- 均差
在总样本N中取出n组数据,按以下算出m j m_jmj,其值不是均差μ \muμ:
m j = 1 n ∑ i = 1 n x ( i ) ≠ μ m_j=\frac{1}{n}\sum_{i=1}^n{x^{\left( i\right)}}\ne \mumj=n1i=1∑nx(i)=μ
其均值应为m mm的期望,即:
μ = E ( 1 N ∑ i = 1 N x ( n ) ) \mu =E\left( \frac{1}{N}\sum_{i=1}^N{x^{\left( n \right)}} \right)μ=E(N1i=1∑Nx(n))
- 方差
按以下算出s 2 s^2s2,其值不是方差σ 2 \sigma ^2σ2:
s 2 = 1 N ∑ i = 1 N ( x ( n ) − m ) 2 s^2=\frac{1}{N}\sum_{i=1}^N{\left( x^{\left( n \right)}-m \right) ^2}s2=N1i=1∑N(x(n)−m)2
其方差为:
σ 2 = N N − 1 E ( s 2 ) \sigma ^2=\frac{N}{N-1}E\left( s^2 \right)σ2=N−1NE(s2)
在代码块里面,选择全部的训练数据距拟合曲线的距离作为偏差,离散程度用方差来量化。
2.2 两者对数据的反应
bias反应数据集与期望数据间的差距,而Variance反应数据的离散程度。
- large bias + smell variance --> underfitting
- smell bias + big variance --> overfitting
这块理的不太清楚,后面补充,也欢迎交流。。。
2.3 解决较大的bias和variance的方法
- 对于较大的bias,增加模型的复杂度。
- 对于较大的variance,可以通过增加数据或者通过正则化解决。
这块后面补充。
参考:
- 李宏毅2020机械学习课程
- 某个tensorflow2.0的视频(链接没得了)