首页 > 解决方案 > 这个分类模型是否过拟合?

问题描述

我正在执行 url 分类(网络钓鱼 - 非网络钓鱼),并为我的模型(梯度提升)绘制了学习曲线(训练与交叉验证分数)。

我的观点

似乎这两条曲线收敛,差异不显着。Tt 是正常的,训练集的准确度略高)。(图1)

梯度提升学习曲线

问题

我在机器学习方面的经验有限,因此我在征求您的意见。我处理问题的方式正确吗?这个模型是好的还是过度拟合?

注:类均衡,特征选得好

相关代码

from yellowbrick.model_selection import LearningCurve

def plot_learning_curves(Χ, y, model):

       # Create the learning curve visualizer
       cv = StratifiedKFold(n_splits=5)
       sizes = np.linspace(0.1, 1.0, 8)
       visualizer = LearningCurve(model, cv=cv, train_sizes=sizes, n_jobs=4)
       visualizer.fit(Χ, y)  # Fit the data to the visualizer
       visualizer.poof()

标签: machine-learningscikit-learnclassificationtext-classificationsklearn-pandas

解决方案


首先,在您的图表中有 8 个不同的模型。

很难判断其中一个是否过度拟合,因为可以使用“时期与性能(训练/有效)”图来检测过度拟合(在您的情况下将有 8 个)。

过拟合是指,经过一定数量的 epoch 后,随着 epoch 数量的增加,训练准确率上升,而验证准确率下降。例如,当您的问题复杂性数据点太少时,可能就是这种情况,因此您的模型使用了虚假相关性。

通过您的图表,我们可以说您的问题的复杂性似乎需要“高”数量或训练实例,因为随着您添加更多训练实例,您的验证性能会不断提高。<10000 的模型有可能过度拟合,但您的 >50000 也可能过度拟合,我们看不到这一点,因为您正在使用提前停止!

希望能帮助到你


推荐阅读