首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误预测成功的可能性很高

错误预测成功的可能性很高
EN

Data Science用户
提问于 2020-08-11 22:21:20
回答 1查看 160关注 0票数 0

我正在研究生产场景中机器故障的行为。为此,我生成随机数据,形成我的不平衡训练集,由分类数据组成,这些数据指示每个子周期中是否存在故障。故障是按指数分布产生的。我有24个特性(Period_1到Period_24),每个特性都包含448个子周期的历史故障信息。此外,我还有三个特征,包括温度、水分和压力(由正态分布产生)。我的目的是根据这些特性来预测下一阶段的故障行为。

我使用了ROC度量,并考虑了处理不平衡数据的几种策略,如过采样、欠采样、ROSE和ADASYN。此外,我试图使用合奏来提高性能。我测试了以下所有模型:梯度增强算法、随机森林、分类和回归树、神经网络、套袋购物车、支持向量机、C5.0、eXtreme梯度增强和k-最近邻。我也试图使用正规化模型,但这些策略都没有奏效。最佳结果是采用"SVMRadial“模型,考虑用玫瑰包装进行重采样。在这种情况下,ROC = 0.7614,敏感性= 0.7639,特异性= 0.6065,敏感性= 0.75,特异性= 0.6914 (后者通过混淆矩阵获得)。然而,在进行预测时,经过训练的模型导致错误预测的概率很高。所以,我想知道这是否是训练模式的问题。还有,有没有人知道如何改进这些结果呢?

任何帮助都将不胜感激。

数据样本:

所选模型的代码:

代码语言:javascript
复制
set.seed(123);
    
partition <- createDataPartition(data_failures$Period_24, p = 0.8, list = F)
trainingSet <- data_failures[partition,]
testingSet <- data_failures[-partition,]
    
train.control <- trainControl(method = "repeatedcv", number = 10, repeats = 3, sampling = "rose", classProbs = TRUE, summaryFunction = twoClassSummary)
    
model_24 <- train(Period_24 ~., data = trainingSet, method = "svmRadial", preProc = "zv", metric = "ROC", trControl = train.control)
    
print(model_24)
    
predictions <- predict(model_24, newdata = testingSet)
print(confusionMatrix(predictions, testingSet$Period_24))

考虑到插入包,我使用R。

EN

回答 1

Data Science用户

发布于 2020-08-12 00:04:50

如果没有更多的信息,就很难诊断。但基于你提到的,我要指出:

  1. 由于存在类不平衡,您必须使用正则化模型来惩罚少数类的成本函数,而不是大多数类的错误(Boosting模型,线性模型)。
  2. 尝试使用另一个指标,如ROC,AUC或平衡精度,以衡量您的模型的性能,以便您可以看到一个充分的观点,您的模型是如何运行的。使用ROC评分的另一个优点是,当您使用模型进行预测时,您可以找到“最优”阈值,即在风险曲线下最大面积的阈值。
  3. 这是最重要的部分。使用一种技术来调试您的模型,如SHAP值部分相依图,以便了解您的模型是如何学习的,以及特性与目标之间的关系。
  4. 如果您使用集成方法,则可以设置名为单调性约束的内容,允许您将业务知识添加到模型中,以便纠正模型可能发现的潜在的无意义关系。
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/80145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档