为了解决不平衡的数据集问题,我以给定的方式对随机森林进行了实验(受深度学习的启发)
训练了一个随机森林,它将接收输入数据,训练模型的标签的预测概率将用作训练另一个随机森林的输入。
伪代码:
train_X, test_X, train_y, test_y = train_test_split(X,y, test_size = 0.2)
rf_model = RandomForestClassifier()
rf_model.fit(train_X, train_y)
pred = rf_model.predict(test_X)
print('******************RANDOM FOREST CM*******************************')
print(confusion_matrix(test_y, pred))
print('******************************************************************')
predict_prob = rf_model.predict_proba(X)
X['first_level_0'] = predict_prob[:, :1].reshape(1,-1)[0]
X['first_level_1'] = predict_prob[:, 1:].reshape(1,-1)[0]
train_X, test_X, train_y, test_y = train_test_split(X,y, test_size = 0.2)
rf_model = RandomForestClassifier()
rf_model.fit(train_X, train_y)
pred = rf_model.predict(test_X)
print('******************RANDOM FOREST 2 CM*******************************')
print(confusion_matrix(test_y, pred))
print('******************************************************************')
我能够看到召回的显着改善。这种方法在数学上是否合理。我使用了随机森林的第二层,这样它就能够纠正第一层的错误。只是想将提升的原理与随机森林套袋技术结合起来。寻找想法。