1:random_state的作用
seed()方法初始化基本随机数生成器。 在调用任何其他随机模块功能之前调用此函数
random_state与random seed的作用是相同的,可以用来确保每次划分训练集和测试集的时候都完全一样。通过设置好random_state当别人重新运行你的代码的时候能够得到完全一样的结果,复现和你一样的过程。如果你设置为None,则会随机选择一个种子。
2:采用train_test_split分割数据 然后用于验证模型的优缺点
优点是:评估速度快。
这种分割训练和测试数据集的模型评估流程的缺点是:这种方式会导致待预测数据(out-of-sample)估计准确率的方差过高。因为这种方式过于依赖训练数据和测试数据在数据集中的选择方式。一种克服这种的缺点的模型评估流程称为K折交叉验证,这种方法通过多次反复分割训练、测试集,对结果进行平均。
3:过拟合的图
我们要明确训练模型的目的是得到对于未来的观测数据的良好的预测性能,如果我们只是试图最大化训练的准确率,很有可能得到的是针对训练数据的过于复杂的模型,这种模型不具有很好的泛化能力,也就是说对于未知数据的预测得不到很好的性能。构建没有必要的过于复杂的模型被称作过拟合。这样的模型过分地拟合噪声数据,胜过去拟合信号数据。在KNN模型中,小K值的模型会生成复杂度很高的模型,因为它跟随数据中的噪声。
下面这个是过拟合的一幅图像:
这里绿色的分割线努力去学习噪声的规律,而不像黑色的分割线去学习数据信号的规律,这样对比之下,黑色的线的泛化能力应该更好。
4:机器学习中的方差(Variance)+偏差(Bias)+误差(Error)的区别和联系
Bias与Variance两者之间的trade-off是机器学习的基本主题之一
准确的说:Error = Bias + Variance + Noise
在模型预测中,模型可能出现的误差(Error)来源于两个(1)因模型无法表示基本数据的复杂度而造成的偏差(Bias)(2)模型对训练踏所用的有限数据过度敏感而造成的方差(Variance)。
4.1 偏差bias造成的误差error--------准确率accuracy和欠拟合underfitting
若模型具有足够的数据,因不够复杂而无法捕捉基本关系,则会出现偏差。这样模型就会一直系统地错误表示数据,从而导致预测准确率(accuracy)降低。这种现象叫做欠拟合(underfitting)。
4.2方差(variance)造成的误差error - 精准度和过拟合(overfitting)
方差就是指模型过于贴近训练数据,以至于没办法把它的结果泛化(generalize)。而泛化是正事机器学习要解决的问题,如果一个模型只能对一组特定的数据有效,换了数据就无效了,我们就说这个模型过拟合(overfitting)。
以上图为例:1. 左上的模型偏差最大,右下的模型偏差最小;2. 左上的模型方差最小,右下的模型方差最大
一般来说,偏差、方差和模型的复杂度之间的关系是这样子滴:
实际中,我们需要找到偏差和方差都较小的点。
XGBOOST中,我们选择尽可能多的树,尽可能深的层,来减少模型的偏差;通过cross-validation,通过在验证集上校验,通过正则化,来减少模型的方差,从而获得较低的泛化误差。
4.3 K cross-validation 中k值对偏差(Bias)和方差(variance)的影响如下误差 = 偏差(指平均预测值和真实值之差的平方)+ 方差(预测值与平均预测值之差的平方的期望,反映预测的偏离与波动程度)。
均方误差(MSE)是指数据序列与真实值之差平方和的均值。