我正在执行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()
答案 0 :(得分:1)
首先,您的图形中有8种不同的模型。
很难确定其中一个是否过度拟合,因为可以通过“历时与性能(训练/有效)”图(在您的情况下为8)检测到过度拟合。
过度拟合是指在一定时期后,随着时期数的增加,训练准确性将提高,而验证准确性将下降。例如,当关于问题复杂性的数据点太少时,就是这种情况,因此您的模型正在使用虚假相关。
对于您的图形,我们可以说的是,问题的复杂性似乎需要“高”个数或训练实例,因为随着添加更多的训练实例,验证性能会不断提高。 <10000的模型可能会过拟合,但您的> 50000可能也过拟合,我们看不到,因为您使用的是提前停止!
希望有帮助