繁体   English   中英

如何稳定机器学习 model?

[英]How can I stabilize a machine learning model?

我有一个数据来训练 model。此外,我还有另一个数据来测试 model 每周的性能。 不过model好像不太稳定。 训练分数和每周测试分数之间存在一些差异。 另一方面,这是一个欺诈问题,我正在使用 XGBoosting 方法。 如何使 model 稳定? 我可以使用不同的算法和参数。

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)

在此处输入图像描述

我也做过一个类似的项目,很难提高模型的 kappa 或 f1 分数....这是很多人面临的问题(数据不平衡),特别是在这个领域。 我尝试了几个模型,特征工程数据清理,但似乎没有任何效果,我通过对不平衡的 class 进行过采样,设法将 kappa 提高了 2%(smote 没有改善或任何合成数据创建)

但这也不全是坏消息。 我发现不同的模型在误报/漏报方面产生不同的结果。

所以问题是,您/您的公司想要优先考虑什么? 一个 model 具有较少的漏报(分类为欺诈但实际上不是欺诈,可能是这个,更保守)或更少的误报(分类为不欺诈但实际上是欺诈)这是一种交易游戏并找到解决您问题的 model ,不要只看 kappa 或 F1 的准确性! 这种情况下的混淆矩阵会帮助你!

对于 1 class,您只有 24 个项目。这太少了,因此您必须进行一些抽样以使两个类的数量接近相同。 这就是欺诈检测,您可以轻松获得数以千计的非欺诈案例,但只有一小部分欺诈案例。

您可以使用一些采样方法,例如 SMOTE,其中您对 class 进行过采样,观察次数较少,对 class 进行过采样,观察次数较多,让每个 class 具有相同数量的事件。

所以简而言之,你需要一个很好的平衡数据集来训练。 我假设您在训练集中的 class 1 案例太少

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM