Machine Learning (2)

2019-05-17  本文已影响0人  DejavuMoments

理解偏差和方差

Error 的来源:Bias 和 Variance

理解偏差与方差

在有监督学习中,模型的泛化误差来源于两个方面:「偏差」 和 「方差」。

偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。通常在深度学习中,我们每一次训练迭代出来的新模型,都会拿训练数据进行预测,偏差就反应在预测值与实际值匹配度上,比如通常在 keras 运行中看到的准确度为96%,则说明是低偏差;反之,如果准确度只有70%,则说明是高偏差。

方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。通常在深度学习训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

y = \frac{fx} + b

这是一张常见的靶心图。可以想象红色靶心表示为实际值,蓝色点集为预测值。在模型不断地训练迭代过程中,我们能碰到四种情况:

bias 大? variance 大?

欠拟合 bias 大

过拟合 variance大

Gradient Descend

交叉验证 Cross Validation

N-Fold Cross Validation

Normalization 归一化

回归模型评价指标

1.均方误差:MSE(Mean Squared Error)

MSE = \frac{1}{m} \sum_{i=1}^{m}(y_i - \hat{y})^2

2.均方根误差:RMSE(Root Mean Squard Error)

RMSE = \sqrt{\frac{1}{m} \sum_{i=1}^{m}(y_i - \hat{y})^2} = \sqrt{MSE}

3.平均绝对误差:MAE(Mean Absolute Error)

MAE = \frac{1}{m} \sum_{i=1}^m{|y_i - \hat{y_i}|}

  1. R^2(R-Square)

R^2 = 1 - \frac{\sum_{i}{(\hat{y_i} - y_i)^2}}{\sum{(\bar{y} - y_i)^2}}
其中,分子部分表示真实值与预测值的平方差之和,类似于均方差 MSE;分母部分表示真实值与均值的平方差之和,类似于方差 Var。

根据 R-Squared 的取值,来判断模型的好坏,其取值范围为[0,1]:

如果结果是 0,说明模型拟合效果很差;

如果结果是 1,说明模型无错误。

一般来说,R-Squared 越大,表示模型拟合效果越好。R-Squared 反映的是大概有多准,因为,随着样本数量的增加,R-Square必然增加,无法真正定量说明准确程度,只能大概定量。

  1. Adjusted R-Square

R^2_{adj} = 1 - \frac{(1 - R^2)(n-1)}{n - p - 1}

其中,n 是样本数量,p 是特征数量。Adjusted R-Square 抵消样本数量对 R-Square 的影响,做到了真正的 0~1,越大越好

#均方误差
from sklearn.metrics import mean_squared_error 
#平方绝对误差
from sklearn.metrics import mean_absolute_error
# R square
from sklearn.metrics import r2_score
# 调用
MSE:mean_squared_error(y_test,y_predict)
RMSE:np.sqrt(mean_squared_error(y_test,y_predict))
MAE:mean_absolute_error(y_test,y_predict)
R2:r2_score(y_test,y_predict)
Adjusted_R2::1-((1-r2_score(y_test,y_predict))*(n-1))/(n-p-1)

参考文献

https://www.cnblogs.com/hutao722/p/9921788.html
https://blog.csdn.net/u012735708/article/details/84337262

上一篇下一篇

猜你喜欢

热点阅读