如何使用随机森林对不平衡类进行分类以避免过度拟合

     2023-03-12     157

关键词:

【中文标题】如何使用随机森林对不平衡类进行分类以避免过度拟合【英文标题】:How to Classify unbalanced classes with Random Forest avoiding overfitting 【发布时间】:2017-01-09 17:36:11 【问题描述】:

我陷入了数据科学问题。 我正在尝试使用随机森林预测一些未来的课程。 我的特征是分类的和数字的。 我的课程不平衡。 当我进行拟合时,分数看起来非常好,但交叉验证很糟糕。 我的模型必须过拟合。

这是我的代码:

features_cat = ["area", "country", "id", "company", "unit"]
features_num = ["year", "week"]
classes = ["type"]

print("Data",len(data_forest))
print(data_forest["type"].value_counts(normalize=True))

X_cat = pd.get_dummies(data_forest[features_cat])
print("Cat features dummies",len(X_cat))
X_num = data_forest[features_num]
X = pd.concat([X_cat,X_num],axis=1)
X.index = range(1,len(X) + 1)

y = data_forest[classes].values.ravel()

test_size = 0.2
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=42)

forest = RandomForestClassifier(n_estimators=50, n_jobs=4, oob_score=True, max_features="log2", criterion="entropy")
forest.fit(X_train, y_train)

score = forest.score(X_test, y_test)
print("Score on Random Test Sample:",score)    

X_BC = X[y!="A"]
y_BC = y[y!="A"]

score = forest.score(X_BC, y_BC)
print("Score on only Bs, Cs rows of all dataset:",score)

这是输出:

Data 768296    
A    0.845970
B    0.098916
C    0.055114
Name: type, dtype: float64
Cat features dummies 725
Score on Random Test Sample: 0.961434335546
Score on only Bs, Cs rows of all dataset: 0.959194193052

到目前为止,我对该模型感到满意... 但是当我尝试预测未来的日期时,它给出的结果基本相同。

我检查交叉验证:

rf = RandomForestClassifier(n_estimators=50, n_jobs=4, oob_score=True, max_features="log2", criterion="entropy")
scores = cross_validation.cross_val_score(rf, X, y, cv=5, n_jobs=4)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))

它给我的结果很差......

Accuracy: 0.55 (+/- 0.57)

我错过了什么?

【问题讨论】:

你的类标签分布是什么? 【参考方案1】:

如果您更改(或删除)random_state 会怎样? train_test_split 默认情况下不分层,因此可能是您的分类器始终只预测最常见的类 A,而您与该分区的测试拆分仅包含 A 的。

【讨论】:

如何测试过度拟合的随机森林回归模型?

】如何测试过度拟合的随机森林回归模型?【英文标题】:HowtotestaRandomForestregressionmodelforOverfitting?【发布时间】:2021-03-2517:58:32【问题描述】:我将RandomForest用于回归模型,并想看看我的模型是否过拟合。这是我所做的:我使... 查看详情

如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?

】如何解决基于NLP的CNN模型中的过度拟合问题,以使用词嵌入进行多类文本分类?【英文标题】:Howdoesonetackleover-fittinginNLPbasedCNNmodelsformulticlasstextclassificationwithwordembeddings?【发布时间】:2021-05-2816:40:44【问题描述】:(问题:... 查看详情

使用 sklearn 和随机森林显示过度拟合

】使用sklearn和随机森林显示过度拟合【英文标题】:showoverfittingwithsklearn&randomforest【发布时间】:2021-02-0800:04:07【问题描述】:我按照本教程创建了一个简单的图像分类脚本:https://blog.hyperiondev.com/index.php/2019/02/18/machine-learni... 查看详情

如何在机器学习中对不平衡数据进行建模?

】如何在机器学习中对不平衡数据进行建模?【英文标题】:howtomodelunbalanceddatainmachinelearning?【发布时间】:2018-05-0405:53:00【问题描述】:我使用的数据集具有高度不平衡的数据(Y=5%和N=95%),该数据集有3000条唯一记录。为了... 查看详情

随机森林为啥不会过度拟合

...的这句话完全错误,根本没有不过拟合的学习方法!对于随机森林来说:在有躁音的情况下(注意,现实世界应用中躁音不能忽略),树太少很容易过拟合,增加树可以减小过拟合,但没有办法完全消除过拟合,无论你怎么增加树都... 查看详情

随机森林对不平衡数据的回归

...eddata【发布时间】:2013-03-1100:48:56【问题描述】:我正在使用随机森林的r包根据氨基酸序列预测蛋白质对之间的距离,主要兴趣是接近的蛋白质(距离更小)。我的训练数据集由10k对蛋白质和它们之间的实际距离组成。然而,... 查看详情

随机森林训练占比为多少比较合适

...是在训练一个复杂的模型,比如深度学习模型,那么推荐使用80%的数据进行训练,20%的数据进行测试;如果是在训练一个简单的模型,比如随机森林,那么推荐使用70%的数据进行训练,30%的数据进行测试。因此,在使用随机森林... 查看详情

旋转随机森林算法(代码片段)

...所有树产生的输出的平均值,就可以避免方差的问题。1.随机森林:集成技术,采用大 查看详情

类非常不平衡的随机森林

...数的文档很少(或者我没有运气找到它),我真的不明白如何实现它。我正在使用以下代码:randomForest(x=predict 查看详情

当给定特定类的 0 个样本时,如何对不平衡的数据集进行分类?

】当给定特定类的0个样本时,如何对不平衡的数据集进行分类?【英文标题】:Howtoclassifyanimbalanceddatasetwhengiven0samplesofaparticularclass?【发布时间】:2018-09-2008:37:51【问题描述】:基本上我有一个训练集和测试集,我将在训练集上... 查看详情

使用随机森林对文本文档进行分类

...档。它们属于10个不同的类别。我想看看随机森林方法是如何进行分类的。问题是我的特征提取类提取了20万个特征。(单词、bigrams、搭配等的组合)这是高度稀疏的数据,sklearn中的随机森林实现不适用于稀疏数据输入。问。我... 查看详情

随机森林-笔录

决策树有些与生俱来的缺点:1:分类规则复杂决策树算法在产生规则的时候采用局部贪婪法。每次都只选择一个属性进行分析构造决策树,所以再产生的分类规则往往相当复杂。2:收敛到非全局的局部最优解ID3算法每次在树的... 查看详情

如何将图像(多维数组)数据拟合到 python 中的随机森林分类器中?

】如何将图像(多维数组)数据拟合到python中的随机森林分类器中?【英文标题】:Howtofitimage(multidimensionalarray)dataintoarandomforestclassifierinpython?【发布时间】:2020-12-1314:36:03【问题描述】:我想使用sklearn.ensemble构建一个图像分类... 查看详情

使用深度学习防止在多类分类中过度拟合特定类

】使用深度学习防止在多类分类中过度拟合特定类【英文标题】:Preventoverfittingtospecificclassinmulti-classclassificationusingdeeplearning【发布时间】:2019-06-0614:43:43【问题描述】:我正在使用Keras中的U-Net架构(TF后端)对许多256x256图像执... 查看详情

如何阻止梯度提升机过拟合?

】如何阻止梯度提升机过拟合?【英文标题】:Howtostopgradientboostingmachinefromoverfitting?【发布时间】:2019-08-3019:24:59【问题描述】:我在一个多分类问题上比较了几个模型(梯度提升机、随机森林、逻辑回归、SVM、多层感知器和ker... 查看详情

使用不平衡数据进行过度训练

】使用不平衡数据进行过度训练【英文标题】:Overtrainingwithimbalanceddata【发布时间】:2017-11-0901:58:45【问题描述】:我正在尝试对一些不平衡的数据(约20:1的比率)执行二元分类,并获得了几乎完美的交叉验证准确度,但对于... 查看详情

我怎样才能自愿过度拟合我的模型以进行文本分类

】我怎样才能自愿过度拟合我的模型以进行文本分类【英文标题】:HowcanIvoluntarilyoverfitmymodelfortextclassification【发布时间】:2018-08-2206:54:10【问题描述】:我想展示一个模型的示例,该模型过度拟合了一个测试集并且不能很好地... 查看详情

使用 H2O 在 R 中平衡随机森林

】使用H2O在R中平衡随机森林【英文标题】:BalancedrandomforestinRusingH2O【发布时间】:2019-01-2921:06:57【问题描述】:由于我目前正在研究一个高度不平衡的多类分类问题,我正在考虑平衡随机森林(https://statistics.berkeley.edu/sites/default... 查看详情