【Kaggle_ML学习】5.Underfitting-and-overfitting
文章目录
在这篇文章最后,你将会了解到 Underfitting和 Overfitting两个概念,并且能够运用这些idea来使你的模型更加准确
1. Experimenting With Different Models
根据上一篇文章所学习的内容,你现在有了测量模型准确率的可靠方法,接着你可以试着建立其他的models来看看哪个可以帮你做最准确的预测。
你可以在scikit-learn的文档中找到许多models,我们前面几章所用到的DecisionTreeRegressor就是一种,并且tree model也有很多种类,其中其最重要的一点就是选择tree的深度(depth)。
回想我们第一篇文章提到了decision tree
,在实际运用中,我们也常会遇到一些10次split的tree,当这个tree变得越深(越多次split/分叉)时,我们的整个数据集(dataset)也会被慢慢分成一些较少的数据子集(fewer house in this case)在各个leaf node
(没有子节点的node)中。
如果一个tree只有一次split,那么dataset被分成了2个groups,也就意味着每个leaf中都会有比先前更少的house,如果每个group被再一次split,将会得到4个groups,以此类推。
最后当我们split 10 次后,就会得到2^10(1024)个leaf nodes,拥有非常少的house的leaf也将会作出非常接近实际值的预测,但是它却可能对新的data作出非常不可靠的预测(因为每个预测都只建立在较少的house上了)
这个现象就称为Overfitting(指model于training data几乎完美契合,却与validation data和其他new data契合点的很差)
另一方面,如果你的tree的深度很浅(split次数很少),那么这个tree并不会将houses分成几个非常不同的(distinct) groups。
极端情况下,如果一个tree只将houses分为2或4个groups,每个group仍然有着大量各样的houses,会导致哪怕在training data中的预测也会与大多数的房子的真实价格相差甚远(同样地,在validation data中的拟合也不会好,因为model无法在如此浅的tree中获取足够重要的patterns和distinctions)。
这个现象称为Underfitting
2. Example
这有几个控制tree深度的方法,其中很多方法可以让树通过一些路径到达跟别的路径相比更深的深度。但是max_leaf_nodes
参数提供了一种明