【机器学习笔记】第8章:偏差与方差

第8章:偏差与方差

8.1 评估模型

用训练集对模型进行训练的时候,通常会存在两种问题,“过拟合”和“欠拟合”,分别对应高方差(high variance)和高偏差(high bias)。

高方差:拟合程度过好,以至于过拟合,无法泛化新的样本数据
高偏差:拟合程度太差,以至于欠拟合,训练模型效果差,存在很大的误差

模型评估:

  1. 随机划分训练集和测试集;
  2. 用训练集进行模型训练,用测试集计算代价函数Jtest(θ)J_{test}(\theta);
  3. 或者采用错误分类率Test error=1mi=1merr(hθ(x(i)),y(i))Test\ error=\frac{1}{m}\sum_{i=1}^merr(h_\theta(x^{(i)}),y^{(i)})err(hθ(x),y)={1ifhθ(x)0.5,y=0orhθ(x)<0.5,y=10ifelseerr(h_\theta(x),y)= \begin{cases} 1 &if \quad h_\theta(x)\geq0.5,y=0\quad or\quad h_\theta(x)<0.5,y=1\\ 0 &if \quad else \end{cases}

模型选择:

  1. 将数据划分成训练集、交叉验证集和测试集;
  2. 用训练集训练出多个模型,将所有模型分别用交叉验证集计算出代价函数Jcv(θ)J_{cv}(\theta);
  3. 选择代价函数值Jcv(θ)J_{cv}(\theta)最小的模型,用这个模型对测试集计算出代价函数Jtest(θ)J_{test}(\theta);

训练误差:Jtrain(θ)=12mtraini=1mtrain(hθ(xtrain(i))ytrain(i))2J_{train}(\theta)=\frac{1}{2m_{train}}\sum_{i=1}^{m_{train}}(h_\theta(x_{train}^{(i)})-y_{train}^{(i)})^2交叉验证误差:Jcv(θ)=12mcvi=1mcv(hθ(xcv(i))ycv(i))2J_{cv}(\theta)=\frac{1}{2m_{cv}}\sum_{i=1}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2测试误差:Jtest(θ)=12mtesti=1mtest(hθ(xtest(i))ytest(i))2J_{test}(\theta)=\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\theta(x_{test}^{(i)})-y_{test}^{(i)})^2

8.2 最高次幂对方差/偏差的影响

如图所示,横坐标为假设函数的最高次幂,纵坐标为错误分类率或者代价函数,一般情况下:
【机器学习笔记】第8章:偏差与方差

  • dd很小时,曲线无法拟合大部分数据,具有高偏差,{Jtrain(θ) will be highJtest(θ)Jtrain(θ)\begin{cases} J_{train}(\theta)\ will \ be \ high \\ J_{test}(\theta)\approx J_{train}(\theta) \end{cases}
  • dd很大时,曲线拟合训练集过好,造成无法泛化测试集,具有高方差,{Jtrain(θ) will be lowJtest(θ)Jtrain(θ)\begin{cases} J_{train}(\theta)\ will \ be \ low \\ J_{test}(\theta)\gg J_{train}(\theta) \end{cases}

8.3 正则化参数对方差/偏差的影响

如图所示,横坐标为正则化参数 λ\lambda ,纵坐标为错误分类率或者代价函数,一般情况下:
【机器学习笔记】第8章:偏差与方差

  • λ\lambda 很小时,未减少权重系数的大小,曲线对训练集的拟合程度很好,具有高方差
  • λ\lambda 很大时,减少权重系数太多,曲线无法很好的拟合数据,具有高偏差

8.4 高偏差的学习曲线

如图所示,横坐标为训练集大小,纵坐标为错误分类率或者代价函数,一般情况下:
【机器学习笔记】第8章:偏差与方差

  • 随着数据集的增大,训练集的误差会越来越大,测试集的误差会越来越小
  • mm\rightarrow \infty 时, 训练集和测试集的误差均会趋近于一个较大的常数

8.5 高方差的学习曲线

如图所示,横坐标为训练集大小,纵坐标为错误分类率或者代价函数,一般情况下:
【机器学习笔记】第8章:偏差与方差

  • 随着数据集的增大,训练集的误差会越来越大,测试集的误差会越来越小
  • 训练集的误差和测试集的误差之间的间隙较大

8.6 对机器学习算法的调试

  • 采用更多的训练集 \rightarrow 解决高方差(过拟合)
  • 减少特征数量 \rightarrow 解决高方差(过拟合)
  • 增加特征数量 \rightarrow 解决高偏差(欠拟合)
  • 增加最高次幂 \rightarrow 解决高偏差(欠拟合)
  • 降低正则化系数 λ\lambda \rightarrow 解决高偏差(欠拟合)
  • 增加正则化系数 λ\lambda \rightarrow 解决高方差(过拟合)