带学《机器学习实用指南》Hands-On Machine Learning with Scikit-Learn & TensorFlow(第四章)

我对本书中的代码做了详尽的注释,放到了我的github,star我哦(✪ω✪)

Q:凸函数与凹函数
原文:线性回归模型的MSE成本函数恰好是个凸函数

带学《机器学习实用指南》Hands-On Machine Learning with Scikit-Learn & TensorFlow(第四章)_第1张图片
凸函数 convex function
带学《机器学习实用指南》Hands-On Machine Learning with Scikit-Learn & TensorFlow(第四章)_第2张图片
凹函数 concave function
可以按以下方法来记忆凸函数和凹函数,凸函数曲线上方的图形是往下凸的,所以称之为凸函数;凹函数上方图形是往下凹的,所以称之为凹函数。只要记得和中文里的凹凸是相反的就可以了。
更多记忆方法参考 知乎。

Q:代码
原文
m = 100
X = 6 * np.random.rand(m, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(m, 1)

需要注意这里一句是np.random.rand():生成均匀分布的伪随机数,介于(0,1)之间;
另一句是np.random.randn(),生成正态分布的伪随机数。

Q:偏差/方差权衡
带学《机器学习实用指南》Hands-On Machine Learning with Scikit-Learn & TensorFlow(第四章)_第3张图片
https://blog.csdn.net/ChenVast/article/details/79257387

当训练集和测试集的误差收敛但却很高时,为高偏差。
左上角的偏差很高,训练集和验证集的准确率都很低,很可能是欠拟合。
我们可以增加模型参数,比如,构建更多的特征,减小正则项。
此时通过增加数据量是不起作用的。

当训练集和测试集的误差之间有大的差距时,为高方差。
当训练集的准确率比其他独立数据集上的测试结果的准确率要高时,一般都是过拟合。
右上角方差很高,训练集和验证集的准确率相差太多,应该是过拟合。
我们可以增大训练集,降低模型复杂度,增大正则项,或者通过特征选择减少特征数。

理想情况是是找到偏差和方差都很小的情况,即收敛且误差较小;偏差和方差相互影响,为此需要找到偏差与方差之间的权衡,故称之偏差/方差权衡。
转自Alice熹爱学习
注意这里的学习曲线和书中的学习曲线的区别,此处纵坐标是准确率,绘出的图线一般训练集在上,测试集在下,且曲线越高模型预测越好;书中的图形纵坐标是RMSE,性质与此处相反。

你可能感兴趣的:(带学《机器学习实用指南》Hands-On Machine Learning with Scikit-Learn & TensorFlow(第四章))