我的模型抛出了学习曲线,如下所示。这些都好吗?我是初学者,在整个互联网上我都看到,随着训练样例的增加,训练分数应该减少然后收敛。但是这里的训练分数正在增加然后收敛。因此,我想知道这是否表示我的代码中存在错误/输入错误?
好的,我发现我的代码出了什么问题。
train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)
我没有为Logistic回归输入正则化参数。
但是现在,
train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(C=1000,solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)
学习曲线看起来不错。
谁能告诉我为什么会这样?即,使用默认的reg术语,训练分数会增加,而较低的reg会降低?
数据详情:10个班级。不同大小的图像。 (数字分类 - 街景数字)
答案 0 :(得分:2)
您需要更准确地了解指标。这里使用了哪些指标?
损失一般意味着:越低越好,而得分通常意味着:越高越好。
这也意味着,您的情节解释取决于训练和交叉验证过程中使用的指标。
答案 1 :(得分:1)
查看scipy的相关网页: http://scikit-learn.org/stable/modules/learning_curve.html 分数通常是需要最大化的一些衡量标准(ROCAUC,准确度......)。直观地,您可以预期,您看到的训练样本越多,您的模型就会越好,因此分数越高。然而,你应该记住一些关于过度拟合和不合适的细微之处。
答案 2 :(得分:0)
基于Alex的答案,看起来你的模型的默认正则化参数有点不合适,因为当你放松正规化时,你会看到更合适的'学习曲线。在一个不合适的模型中抛出多少个例子并不重要。
至于你关注为什么训练分数在第一种情况下增加而不是减少 - 这可能是你正在使用的多类数据的结果。使用较少的训练样例,每个类的图像数量较少(因为lc
试图在cv的每个折叠中保持相同的类分布),因此使用正则化(如果您调用C = 1正则化,那么),你的模型可能更难准确地猜测某些类。