我试图建立一个回归模型来预测电影票房。该数据集是从Kaggle-TMDB 5000电影数据集获取的,另一个数据集包含一些与社交媒体相关的属性。
合并和清理后,最终数据集包含183个观测值和53个特征。扩展了两个类别特征,类型和生产国。例如,新列如“动作”,“戏剧”,“喜剧” ...等。如果该电影属于该类型,则值为1。与production_countries相同。
我使用数据集构建了回归模型,但是遇到了一个问题。无论我使用火车测试拆分或交叉验证方法,还是尝试使用其他回归模型,我得到的RMSE都非常高。
from sklearn.model_selection import cross_val_predict
X=movie.drop('Gross',axis=1)
y=movie['Gross']
print 'R2:',r2_score(y,cross_val_predict(RandomForestRegressor(),X,y,cv=10))
print 'RMSE:',np.sqrt(metrics.mean_squared_error(y,cross_val_predict(method,X,y,cv=10)))
output:
R2: 0.344831741145
RMSE: 76169019.1588
我不知道是什么因素导致这种情况。有人可以帮我从这里出去吗?非常感谢。
答案 0 :(得分:0)
看来您在正确地计算RMSE,我将检查R2度量并尝试手动进行以确保。
但是,如果我们检查以下参考文献,我将尝试更详细地研究该概念:http://brenocon.com/rsquared_is_mse_rescaled.pdf
我们可以观察到
r2 = 1-MSE(x,y)/ VAR(y)
如果MSE-> 0,则RMSE-> 0,r2-> 1。
但是,如果RMSE-> + inf,MSE-> + inf,并且如果MSE <= VAR(y),这将导致r2值小于1,例如0.2、0.3等。因此您的结果可能会使您的分析走上正确的轨道。