python-3.x 线性回归的偏差和方差计算

vkc1a9a2  于 2022-12-20  发布在  Python
关注(0)|答案(5)|浏览(165)

如果我们有4个参数X_train、y_train、X_test和y_test,我们如何计算线性回归等机器学习算法的偏差和方差?
我已经搜索了很多,但我找不到一个单一的代码为这个。

unftdfkk

unftdfkk1#

因此,就近似总体的函数而言,高偏差意味着欠拟合,高方差意味着过拟合。要检测哪一个,请将数据集划分为训练集、交叉验证集和测试集。
低训练误差但高交叉验证误差意味着过拟合,高训练误差意味着欠拟合。
高偏差:添加多项式特征,获取更多样本。高方差:增加正则化(将多项式参数压缩得更小),或收集更多数据,以便更好地训练

wlp8pajw

wlp8pajw2#

以下是我的看法
偏差-偏差是目标值预测值与实际值之间的平均差值。
方差-这定义了数据从中心点(如平均值或中位数)的分布。
理想情况下,在构建模型时,您希望选择具有低偏倚和低方差的模型。
高偏差模型是拟合不足的模型,即它没有正确理解您的数据,而高方差模型意味着模型过拟合训练数据,并且不会很好地概括未来预测。
因此,如果您的参数选择不当或输入参数太少,则可能会看到高偏倚和低方差模型,而如果您选择的参数太多,则模型可能过拟合。

要识别过拟合和欠拟合模型,您只需观察训练/测试得分模式并确定您拥有的模型。
欠拟合模型在训练数据上也会显示较低的准确度分数,这意味着模型没有很好地学习,而过拟合模型在训练数据上会显示非常好的准确度,但在测试数据上的预测效果较差。
不要认为有任何这样的工具,偏倚,方差在您所问的上下文中,但交叉验证您的数据,并检查其准确性与不同的模型或相同的模型,但不同的参数可能会给予你一个好主意.

x33g5p2x

x33g5p2x3#

如果你只需要偏差和方差的值而不需要计算,那么使用mlxtend库,它有一个function函数,可以自动返回特定机器学习模型的偏差和方差,对于线性回归,方差随着特征数量的增加而增加,所以要查看偏差和方差的变化,你必须添加/删除特定的特征。

tzxcd3kk

tzxcd3kk4#

在真实的生活中,我们无法计算偏差和方差。偏倚衡量的是估计值(可以是任何机器学习算法)对于变化的样本是错误的,并且类似地方差测量估计量围绕估计量的期望值波动多少。我们需要从一些已知函数通过添加噪声生成大量数据集,并训练单独的模型(估计量)。由于我们既不知道上面提到的已知函数,也不知道附加噪声,因此无法进行。在实践中,我们只能计算总体误差。为了应对偏倚/方差困境,我们进行了交叉验证。

aamkag61

aamkag615#

方差评价:
Variance = np.var(Prediction)#其中Prediction是在任何分类器的# predict()函数之后获得的向量变量。
SSE = np.均值((np.均值(预测)- Y)**2)#其中Y是因变量。# SSE:误差平方和。
偏倚= SSE -方差

# Load dataset
  from sklearn.datasets import load_boston
  X, y = load_boston(return_X_y=True)

# Split the dataset into train and test 
  X_train, X_test, y_train, y_test = train_test_split(X, y, 
  test_size=0.33, random_state=1)

# Model definition
  model_lr = LinearRegression()

# Fitting training set into model
  model_lr.fit(X_train, y_train)

# Predicting using Linear Regression Model
  Prediction = model_lr.predict(X_test)

# Evaluating variance
  Variance = np.var(Prediction)  # O/P : 56.55085515632455

# Evaluating SSE
  SSE = np.mean((np.mean(Prediction) - y)** 2)  
  # O/P : 85.03300391390214

# Evaluating Variance
  Bias = SSE - Variance
  # O/P : 28.482148757577583

相关问题