什么是机器学习中的偏差-方差分解?它的目的是什么?代码举例讲解

偏差-方差分解是机器学习中评估模型泛化能力的重要方法。它通过分析模型的误差来源,改进模型的泛化性能。具体步骤是:

  1. 获取训练误差、测试误差和期望误差:
  • 训练误差:用训练集对模型进行训练,计算模型在训练集上的误差。
  • 测试误差:用测试集对训练好的模型进行测试,计算模型在测试集上的误差。
  • 期望误差:模型在全体数据上的期望误差。
  1. 将误差分为偏差、方差和噪声三部分:
  • 偏差:模型无法逼近真实函数的误差部分,与模型泛化能力相关。偏差太大会导致欠拟合。
  • 方差:模型对训练集的拟合程度,与模型灵活度相关。方差太大会导致过拟合。
  • 噪声:由于数据集本身的噪声而产生的误差,无法减少。
  1. 分析三部分误差所占比重,调整模型减少偏差和方差,提高泛化能力。

代码实现:

python
from sklearn.model_selection import train_test_split

# 拟合模型
model.fit(x_train, y_train)

# 计算训练误差和测试误差
train_error = metrics.mean_squared_error(y_train, model.predict(x_train))
test_error = metrics.mean_squared_error(y_test, model.predict(x_test))

# 期望误差的估计
expected_error = (train_error + test_error) / 2  

# 偏差的估计
bias = expected_error - test_error 
# 方差的估计
variance = train_error - expected_error
# 噪声的估计 
noise = test_error - expected_error  

print("总误差:", expected_error)  
print("偏差:", bias)
print("方差:", variance) 
print("噪声:", noise)