利用数据算了一下方差等,但是感觉数挺大的,可能单位不对。
residuals = y_test.values - y_pred.flatten()
# 计算偏差的均值、标准差和方差
mean_residuals = round(np.mean(residuals), 4)
std_residuals = round(np.std(residuals), 4)
var_residuals = round(np.var(residuals), 4)
# 打印偏差的均值、标准差和方差
print("偏差均值:", mean_residuals)
print("偏差的标准差:", std_residuals)
print("偏差的方差:", var_residuals)
# 计算置信区间
alpha = 0.05 # 置信水平为95%
n = len(residuals) # 样本数
t_value = 2.042 # t分布的临界值
ci_lower = round(mean_residuals - t_value * std_residuals / np.sqrt(n), 4)
ci_upper = round(mean_residuals + t_value * std_residuals / np.sqrt(n), 4)
# 打印置信区间
print("偏差的置信区间 ({}%): ({}, {})".format((1 - alpha) * 100, ci_lower, ci_upper))
单位是平方
不知道你这个问题是否已经解决, 如果还没有解决的话: 可以使用bagging算法(如随机森林)。因为,低偏差意味着模型的预测值接近实际值,换句话说,该模型有足够的灵活性,以模仿训练数据的分布。这样貌似很好,但是别忘了,一个灵活的模型没有泛化能力,意味着当这个模型用在对一个未曾见过的数据集进行测试的时候,它会令人很失望。在这种情况下,我们可以使用bagging算法(如随机森林),以解决高方差问题。bagging算法把数据集分成重复随机取样形成的子集。然后,这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。另外,为了应对大方差,我们可以:
1.使用正则化技术,惩罚更高的模型系数,从而降低了模型的复杂性。
2.使用可变重要性图表中的前n个特征。可以用于当一个算法在数据集中的所有变量里很难寻找到有意义信号的时候。