如何改进决策树回归器中的负 R 平方

Posted

技术标签:

【中文标题】如何改进决策树回归器中的负 R 平方【英文标题】:How to improve negative R square in DecisionTree Regressor 【发布时间】:2020-09-25 10:14:51 【问题描述】:

我试图应用一些回归量来预测 IMDB 评级。这是我尝试过的:

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split

data = pd.read_csv("D:/Code/imdb_project/movie_metadata.csv")
df = data[["duration","budget", "title_year","imdb_score"]]
df = df.dropna()
feature = np.array(df[["duration","budget","title_year"]])
rating = np.array(df["imdb_score"])

scaler = MinMaxScaler()
scaler.fit(feature)
X = scaler.transform(feature)
y = rating
x_train, x_test, y_train, y_test = train_test_split(X, y, train_size = 0.8, test_size = 0.2, random_state = 5)

regressor = DecisionTreeRegressor(criterion='mse')
regressor.fit(x_train, y_train)
regressor.score(x_test, y_test)

为了澄清,我的数据集包含 3 个特征:预算、发布年份和持续时间,y 是 IMDB 评级。 将这个回归量应用于测试数据时,我总是收到一个负的 R 平方(它与训练数据一起工作得很好。)我知道 R 平方可以是负的,但我仍然想知道是否有办法改进它?我知道的唯一方法是规范化数据,我在拟合模型之前就这样做了。

【问题讨论】:

【参考方案1】:

R^2 分数 表示您的模型与数据的拟合非常差。在这种情况下,决策树可能过于简单。或者你选错了criterion

我建议尝试调整模型的超参数或选择另一个。

【讨论】:

我认为我的模型过度拟合,因为对最大深度没有限制。因此,当我添加限制时,分数变为正数。但是,它仍然很低(0.23),我试图在模型之间进行比较,并且 kneighborsregressor 的分数也很低。有什么进一步改进的建议吗? 您可以尝试GridSearchCV 来找到最佳超参数。尽管DecisionTreeRegressorKNeighborsRegressor 还有很多其他回归变量。也许最简单的LinearRegression 会有所帮助。

以上是关于如何改进决策树回归器中的负 R 平方的主要内容,如果未能解决你的问题,请参考以下文章

机器学习算法决策树-5 CART回归树法,M5回归树算法对CART算法改进了什么

将 OneHotEncoder 用于决策树分类器中的分类特征

更改 R 方图中的标签位置(决策/回归树)

R语言基于R语言的数据挖掘之决策树

r中的chaid回归树到表的转换

详解决策树-交叉验证菜菜的sklearn课堂笔记