我有一个训练模型的数据。另外,我还有另一个数据可以每周测试一次模型的性能。但是,该模型似乎不稳定。训练分数和每周测试分数之间存在一些差异。另一方面,这是一个欺诈问题,我正在使用XGBoosting方法。如何使模型稳定?我可以使用不同的算法和参数。
parameters = {
'n_estimators':[100],
'max_depth':[5],
'learning_rate':[0.1],
'classifier__min_sample_leaf':[5],
'classifier__criterion':['gini']
}
xgboost = XGBClassifier(scale_pos_weight=30)
xgboost_gs = GridSearchCV(xgboost, parameters, scoring='recall', cv=5, verbose=False)
xgboost_gs.fit(X_train, y_train)
您只有1个班级的24个项目。这太少了,因此您必须进行一些采样才能使两个类接近相同的数量。这样做是为了进行欺诈检测,在这里您可以轻松地获得数千个非欺诈案件,但只有一堆充满欺诈案件。
您可以使用诸如SMOTE之类的采样方法,在该方法中,使用较少的观察值对类进行过采样,而使用更多的观察值对类进行欠采样,以使每个类具有相同数量的事件。
因此,您需要一个平衡良好的数据集进行训练。我假设您在训练集中的第1类案例太少了
我也从事过类似的项目,因此很难提高模型的kappa或f1评分...。这是很多人面临的问题(数据不平衡),尤其是在该领域。我尝试了几种模型,进行了功能工程数据清理,但似乎无济于事,我通过对不平衡的类进行过采样来设法将kappa提升了2%(雾化并没有改善或创建了任何合成数据)
但这并不是所有的坏消息!我发现,在误报/误报方面,不同的模型会产生不同的结果。
所以问题是,您/您的公司想优先考虑什么?假阴性少(分类为欺诈,但实际上不是欺诈,可能是保守的)或假阳性少(分类为不是欺诈,但实际上是欺诈)的模型。 ,不仅要关注Kappa或F1的准确性!在这种情况下,混淆矩阵将为您提供帮助!