根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。
1 学习建议
误差太大,如何改进?
- 使用更多的训练样本→解决高方差
- 选用更少的特征→解决高方差
- 选取更多的特征→解决高偏差
- 增加多项式特征→解决高偏差
- 减小\(\lambda\)→解决高偏差
- 增大\(\lambda\)→解决高方差
评估机器学习算法的性能
对数据进行“洗牌”,然后再分成训练集和测试集。通常用70%的数据作为训练集,用剩下30%的数据作为测试集。
对训练集进行学习,得到参数\(\theta\)
-
计算测试误差(不加入正则项):对于线性回归,可以用之前的代价函数;对于逻辑回归,除了之前的代价函数,还有一种称为0/1错误分类的方法
\[
err(h_\theta(x),y)=\left\{
\begin{aligned}
1 && if \ h_\theta(x) \ge 0.5,y=0 \\
&& or \ h_\theta(x) \lt 0.5,y=1 \\
0 && otherwise
\end{aligned}
\right.
\]\[
Test \ error = \frac{1}{m_{test}}\sum_{i=1}^{m_{test}}err(h_\theta(x_{test}^{(i)}),y_{test}^{(i)})
\]
模型选择
使用测试集选择次幂\(d\),因此需要验证集→可参考交叉验证
使用60%的数据作为训练集,使用20%的数据作为交叉验证集,使用20%的数据作为测试集
- 对训练集进行学习,得到参数\(\theta^{(i)}\),即多个模型
- 用验证集计算验证误差(不加入正则项),得到参数\(d\),即选择模型
- 计算测试误差(不加入正则项),即对模型进行测试
机器学习诊断法(偏差or方差?)
\(d\)大,则高方差;\(d\)小,则高偏差
偏差:训练误差和验证误差都很大
方差:训练误差小,但是验证误差大,即验证误差远大于训练误差
正则化和偏差、方差
\(\lambda\)大,则高偏差;\(\lambda\)小,则高方差
选取一系列可能尝试的\(\lambda\)值:0,0.01,0.02,0.04,...,20
- 训练出12个\(\lambda\)值正则化的模型
- 计算验证误差,得到\(\lambda\)
- 计算测试误差
绘制学习曲线
用来判断学习算法中的问题
高偏差时,随着训练集数量增加,验证误差不会明显下降,基本变平,此时使用更多的训练样本无用
高方差时,随着训练集数量增加,验证误差一直增大,训练误差一直减小,此时使用更多的训练样本有用