Python随机森林预测概率可靠性

2024-06-08 04:47:44 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR:射频预测概率不一致

我创建了一个经过校准的随机森林模型来预测劳动力流失的概率,但我发现,同一名员工的概率在一天内会发生剧烈变化。例如,假设我昨天开发了这个模型,员工A的预测概率为.007560,我今天运行同一个员工的模型,它输出的概率为.684939。该员工昨天的数据和今天的数据之间的唯一区别是任期,这是一个最小的区别(即任期增加了1天或0.003年)。因此,预测概率的模型不存在可靠性

我知道造成这种差异的原因:这些任期变量的微小变化,但我不知道为什么。我怀疑你穿得太合适了?但我在开发模型时遵循了CV程序(代码如下),训练集和测试集之间的准确性并没有真正改变

更令人困惑的是,如果我今天创建一个新模型,并根据该员工昨天和今天的数据预测概率,结果在这两天都是一致的,为0.007764,接近原始的0.007560。我认为这并不完全相同,因为该员工的数据略有变化。因此,我无法理解为什么模型能够提供“过去”数据的一致概率,而不能提供“未来”数据的一致概率

我在这里只举一个例子,但这是在更大范围内发生的,因此这是一个问题。所以我现在的解决方案是每次需要更新员工流失概率时都开发模型,但保持所有参数不变。我不喜欢这种方法,因为对于ML管道,我指的是只加载保存的模型并通过它运行数据,而不是开发模型并通过它运行数据。另外,我想了解这里发生了什么。下面是我的代码,这里给出的例子是一个校准过的射频模型,但同样的事情也发生在一个未校准的射频模型上。谢谢

#train model    
X_train, X_test, y_train, y_test = train_test_split(X_final, y_vars, test_size=0.5, random_state=20)
#CALIBRATED
rf_unfit1=RandomForestClassifier(n_estimators=1800, max_features='auto', max_depth=100, min_samples_split=2, min_samples_leaf=1, bootstrap=False)
rf_cv=CalibratedClassifierCV(rf_unfit1,method='sigmoid',cv=3)
rf_cv.fit(X_train, y_train)
filename=r'C:\Users\Downloads\model'
joblib.dump(rf_cv, filename)
#make predictions
df = pd.read_csv(r'C:\Users\Downloads\test.csv')
rf_cv = joblib.load(open(r'C:\Users\Downloads\model', 'rb'))
final_cv_probs=rf_cv.predict_proba(df)[:,1]
print(final_cv_probs)

以下是同一员工的预测概率。输入变量为A-G列。突出显示的列显示随着天数的增加,变量值略有变化的输入变量。 enter image description here


Tags: 数据模型testmodeldownloads员工train概率

热门问题