特征选择嵌入方法显示错误特征

在特征选择(嵌入方法)中,我得到了错误的特征。

特征选择代码:

# 创建随机森林模型
model = RandomForestRegressor(n_estimators=120)
# 拟合模型开始训练
model.fit(X_train[_columns], X_train['delay_in_days'])
# 获取结果特征的重要性
importances = model.feature_importances_
# 为可视化创建数据框
final_df = pd.DataFrame({"Features": X_train[_columns].columns, "Importances":importances})
final_df.set_index('Importances')
# 按降序排序
final_df = final_df.sort_values('Importances',ascending=False)
# 可视化特征重要性
pd.Series(model.feature_importances_, index=X_train[_columns].columns).nlargest(10).plot(kind='barh')
_columns # 我选择的一些特征

输入图像描述

这是特征列表,你可以看到total_open_amount是一个非常重要的特征,但当我将前三个特征放入我的模型时,我得到了负的R2_Score。然而,如果我从模型中移除total_open_amount,我得到了不错的R2_Score。

我的问题是这是什么原因造成的?(所有数据训练集和测试集都是从大小为100000的数据集中随机选择的)

clf = RandomForestRegressor()
clf.fit(x_train, y_train)
# 预测测试集结果
predicted = clf.predict(x_test)

回答:

由于你没有提供数据本身,这只是一个有根据的猜测。看你的特征名称,最重要的特征是客户名称和总开放金额。我猜这些是具有很多唯一值的特征。

如果你查看随机森林的帮助页面,它确实提到:

警告:基于不纯度的特征重要性对于高基数特征(许多唯一值)可能具有误导性。请使用sklearn.inspection.permutation_importance作为替代方案。

这也在一篇由Strobl等人发表的出版物中提到:

我们展示了随机森林变量重要性测量在许多应用中是选择变量的合理手段,但在潜在预测变量的测量规模或类别数量不同的情况下,并不可靠。

我会尝试使用置换重要性,看看是否得到相同的结果。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注