为什么我的随机森林分类器更频繁地预测一个类别?

数据挖掘 Python 分类 随机森林
2022-02-20 13:47:44

我有一个随机森林分类器,它预测 0 类的频率大约是 1 类的两倍。它还预测 0 类的概率高于 1 类。

它不是一个不平衡的数据集。我尝试将 1 类权重设置为 100,它似乎解决了这个问题,尽管我认为这不是一个正确的解决方案:D K-NN 给出了同样的问题。由于我将 y 从 0 和 1 更改为 B 和 A,它开始更频繁地预测二等舱。那么问题能否以某种方式与数据类型相关联?

代码:

dataset = pd.read_csv('regtraining.csv')
X = dataset.iloc[:, :-5].values
y = dataset.iloc[:, 50].values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)
classifier = RandomForestClassifier()
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

print(confusion_matrix(y_test, y_pred))

当我尝试训练测试拆分的多个随机状态时,预测的类别之一总是被更频繁地预测。

编辑:经过一些研究,我认为随机森林会分裂,以便按字母顺序预测类(y 的 A、B 值给出更多的 A 但 B,y 的 A 值给出更多的 B)。

感谢您的回答,我是机器学习的新手:D

2个回答

在预测时,如果您有更多相关的日期,class 0显然这是预期的。

但是,如果您的观察结果是这样的,模型预测更多的数据class 0不正确,那么您的模型有点过拟合。

为了避免这些,

  • 57% 和 43% 并不是一种不平衡的类,但您仍然可以 class_weight与模型一起使用。

  • 特征工程对这类情况有很大帮助。

这可能是过拟合的情况。您可以使用 GridSearchCV 或 RandomizedSearchCV 执行超参数调整。然后您可以检查模型的性能。如果您在预测中仍然存在偏差,那么您需要对数据进行特征工程和特征选择。