过拟合和欠拟合

尝试不同的模型
既然有一种可靠的方法来测量模型精度,那么可以尝试使用其他模型,并查看哪种模型可以提供最佳预测。 但是对模型有什么选择?

可以在scikit-learn的文档中看到决策树模型有很多选项(比您长期想要或需要的更多)。 最重要的选项决定了树的深度。 回想一下这个微课程的第一课,树的深度是衡量它在进行预测之前分裂的数量。 这是一棵相对较浅的树

在实践中,树在顶层(所有房屋)和叶子之间有10个分裂并不罕见。 随着树木越来越深,数据集被切成了更少房屋的树叶。 如果树只有1个分割,则将数据分为2组。 如果每组再次拆分,我们将获得4组房屋。 再次拆分每个将创建8个组。 如果我们通过在每个级别添加更多分组来保持组的数量翻倍,那么当我们到达第10级时,我们将拥有210组房屋。 这是1024片叶子。

当我们将房屋分成许多树叶时,每片树叶的房屋数量也会减少。 拥有极少数房屋的树叶将做出与房屋实际值非常接近的预测,但它们可能会对新数据做出非常不可靠的预测(因为每个预测仅基于少数房屋)。

这是一种称为过度拟合的现象,其中模型几乎完美地匹配训练数据,但在验证和其他新数据方面表现不佳。 另一方面,如果我们使树很浅,它不会将房屋分成非常不同的组。

在极端情况下,如果一棵树将房屋分成2或4,每个房屋仍然有各种各样的房屋。 对于大多数房屋来说,结果预测可能相差甚远,即使在训练数据中也是如此(由于同样的原因,验证也会很糟糕)。 当模型无法捕获数据中的重要区别和模式时,即使在训练数据中它也表现不佳,这称为欠拟合。

由于我们关注新数据的准确性,我们根据验证数据估计,我们希望找到欠拟合和过度拟合之间的最佳点。 在视觉上,我们想要(红色)验证曲线的低点

例子

有一些控制树深度的替代方案,并且许多允许通过树的一些路线具有比其他路线更大的深度。 但是max_leaf_nodes参数提供了一种非常合理的方法来控制过度拟合与欠拟合。 我们允许模型生成的叶子越多,我们从上图中的欠拟合区域移动到过度拟合区域。

我们可以使用效用函数来帮助比较max_leaf_nodes的不同值的MAE分数:

from sklearn.metrics import mean_absolute_error
from sklearn.tree import DecisionTreeRegressor

def get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y):
model = DecisionTreeRegressor(max_leaf_nodes=max_leaf_nodes, random_state=0)
model.fit(train_X, train_y)
preds_val = model.predict(val_X)
mae = mean_absolute_error(val_y, preds_val)
return(mae)

使用您已经看过的代码(以及您已经编写过的代码)将数据加载到train_X,val_X,train_y和val_y中。

我们可以使用for循环来比较使用max_leaf_nodes的不同值构建的模型的准确性。

compare MAE with differing values of max_leaf_nodes

for max_leaf_nodes in [5, 50, 500, 5000]:
my_mae = get_mae(max_leaf_nodes, train_X, val_X, train_y, val_y)
print(“Max leaf nodes: %d \t\t Mean Absolute Error: %d” %(max_leaf_nodes, my_mae))

在列出的选项中,500是最佳叶数。

结论
这是外卖:模型可能会受到以下任何一种情况:

过度拟合:捕获将来不会再发生的虚假模式,导致预测不太准确,或者

不合适:未能捕获相关模式,再次导致预测不准确。

我们使用未在模型训练中使用的验证数据来测量候选模型的准确性。 这让我们可以尝试许多候选模型并保持最好的模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
过拟合欠拟合是机器学习中常见的两个问题,它们都与模型的泛化能力有关。 过拟合(Overfitting)指的是模型在训练数据上表现得很好,但在新的未见过的数据上表现较差。过拟合通常是由于模型过于复杂,过度拟合了训练数据中的噪声和细节,导致对新数据的泛化能力较差。过拟合的特征包括训练集上表现很好但测试集上表现较差,模型参数较多,模型对训练数据中的噪声过于敏感等。 欠拟合(Underfitting)指的是模型无法很好地拟合训练数据,无法捕捉到数据中的关键特征和模式。欠拟合通常是由于模型过于简单或者训练数据量不足导致的,模型无法充分学习到数据的规律。欠拟合的特征包括训练集和测试集上表现都较差,模型无法捕捉到数据中的复杂关系等。 解决过拟合欠拟合问题的方法有很多,以下是一些常见的方法: 1. 增加训练数据量:通过增加更多的训练样本,可以帮助模型更好地学习数据的规律,减少过拟合欠拟合的问题。 2. 简化模型:减少模型的复杂度,可以降低过拟合的风险。可以通过减少模型的参数数量、降低模型的层数或者使用正则化等方法来简化模型。 3. 特征选择:选择对问题有用的特征,去除冗余和无关的特征,可以提高模型的泛化能力。 4. 正则化:通过在损失函数中引入正则化项,限制模型参数的大小,可以减少过拟合的问题。 5. 交叉验证:使用交叉验证来评估模型的性能,选择最优的模型参数和超参数,可以帮助避免过拟合欠拟合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值