吴恩达机器学习-第十章个人笔记
10、1绪论
当你的机器学习算法出现很大的错误时:
当你求得使J(
θ
\theta
θ)最小参数向量
θ
\theta
θ后,将这个机器学习算法即假设函数应用到一批新的数据集中,发现预测出现了很大的问题。
解决方法:
- 使用更多的数据来进行训练
- 尝试选择更少的特征项
- 尝试选择更多的特征项
- 尝试添加多项式特征项
- 尝试增大 λ \lambda λ的值
- 尝试减少 λ \lambda λ的值
如何选择这些方法:
一般我们会采用机器学习诊断法,这个算法会让你知道哪些特征是对算法无用的,也会让你知道哪种选择会让算法变得更好。
10、2评估假设函数
当我们一个假设函数在一组数据上表现很好,但这并不表示它具有普适性,很有可能它会在一组新的数据集下表现很差,也可能会出现过拟合现象,这表示我们不可以把假设函数在一组数据下的表现作为评估标准。
一般来说:我们会选择把一个数据集随机打乱。取前70%作为训练集,后30%作为测试集。
然后我们会从训练集中得到我们想要的
θ
\theta
θ向量,再把这个向量带入测试机中计算J(
θ
\theta
θ)的大小,进而来评估这个假设函数好坏。
①线性回归:
②逻辑回归(不同的上面是这里还可以通过分类错误来评定假设函数):
10、3模型选择和训练、验证、测试数据集
模型选择:
d表示假设函数特征项的最高次数。
1)在训练集上算出
θ
\theta
θ(1),
θ
\theta
θ(2),……
2)再用算出的
θ
\theta
θ(1),
θ
\theta
θ(2),……在测试集上算出Jtest(
θ
\theta
θ(i)),选择最小的Jtest(
θ
\theta
θ(i))的假设函数h(
θ
\theta
θ)
3)再用这个假设函数在测试集上进行进一步评估(这里再用显得很不合理)
训练、验证、测试数据集:
我们按照60%、20%、20%的比例来把数据集分为训练数据集、验证数据集、测试数据集。
上面的步骤二在验证数据集上进行,步骤三在测试数据集上进行。
Jtrain(
θ
\theta
θ)来在训练集上估计
θ
\theta
θ(i)
Jcv(
θ
\theta
θ)来在验证集上选择最好的模型
Jtest(
θ
\theta
θ)来在测试集上算出泛化误差
10、4偏差和方差
偏差过大:欠拟合问题
方差过大:过拟合问题
如何判断是偏差还是方差:
根据Jtrain(
θ
\theta
θ)和Jcv(
θ
\theta
θ)的大小判断
10、5正则化、偏差和方差
λ
\lambda
λ的取值决定着假设函数是否出现偏差或者方差
在不考虑正则化的情况下代价函数:
我们按二倍增长的情况下取
λ
\lambda
λ值,选出使得Jcv(
θ
\theta
θ)最小的
λ
\lambda
λ:根据Jtrain(
θ
\theta
θ)和Jcv(
θ
\theta
θ)的大小来选择最合适的
λ
\lambda
λ:
10、6学习曲线
学习曲线:
当m很小时,数据集很少,此时假设函数会拟合得很好,Jtrain(
θ
\theta
θ)很小;但假设函数没有泛化性,所以Jcv(
θ
\theta
θ)很大。、
偏差大:
当算法出现高偏差的时候,得到更大的数据集并没有用。
方差大:
当算法出现高方差的时候,得到更大的数据集有用,让Jtrain(
θ
\theta
θ)和Jcv(
θ
\theta
θ)越来越靠近。
10、7总结
- 使用更多的数据来进行训练------方差大
- 尝试选择更少的特征项------方差大
- 尝试选择更多的特征项-----偏差大
- 尝试添加多项式特征项-----偏差大
- 尝试增大 λ \lambda λ的值------方差大
- 尝试减少
λ
\lambda
λ的值------偏差大
神经网络的选择: