06 回归算法 - 损失函数、过拟合欠拟合

简介: == 损失函数 == 损失函数是衡量一个模型好坏的指标,一般来说损失函数的值越小越好。 0~1损失函数: J(θ)=$begin{cases}1,Y≠f(X)\0,Y=f(X)\end{cases}$ 如果预测值不等于真实值,J(θ)值加1。

== 损失函数 ==

损失函数是衡量一个模型好坏的指标,一般来说损失函数的值越小越好。

0~1损失函数:

J(θ)=$begin{cases}
1,Y≠f(X)\
0,Y=f(X)\
end{cases}
$

如果预测值不等于真实值,J(θ)值加1。
该函数只能用在分类的模型中,因为回归预测出的结果不太可能完全一致,一般回归模型要求是预测结果误差越小越好。

感知损失函数:

J(θ)=$begin{cases}
1,|Y-f(X)|>t\
0,|Y-f(X)|≤t\
end{cases}
$

如果真实值和预测值之间的误差超过某个阈值t,J(θ)值加1。

平方和损失函数:

J(θ)=$sum_{i=1}^m(h_θ(x^i) - y^i)^2 $
预测值与实际值差的平方和,即最小二乘法。

绝对值损失函数:

J(θ)=$sum_{i=1}^m|h_θ(x^i) - y^i| $
预测值与实际值差的绝对值的和,即最小二乘法。

绝对值损失函数:

J(θ)=$sum_{i=1}^m (y^ilogh_θ(x^i)) $
解决多分类的损失函数,即logistic回归的损失函数。

== 过拟合欠拟合 ==

注意:上述公式中,有累加符号的是代价函数,去掉其累加符号就是对应的损失函数。这个概念要了解一下。

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。

损失函数是评估模型好坏的一个指标,而一个模型坏的时候无非就是过拟合和欠拟合的问题。

下面我们看看模型过拟合和欠拟合分别是怎样的情况。
随着时间推移,话题k和用户兴趣之间的关系

过拟合
过拟合的预测会去刻意得迎合异常值,导致预测值的方差Ω(f)会比较大。

欠拟合
欠拟合的预测,预测值和真实值本身差距就很远。预测的偏差L(f)很大。

良好拟合的状态
好的模型不会刻意得迎合异常值,同时预测也相对的准确。

误差是有两部分构成的:过拟合的方差+欠拟合的偏差2
同时又有公式如下:
误差 = E(预测值-真实值)2; E表示期望 (求平均)

通过上述公式可以推导出一个$color{red}{方差偏差权衡}$ 的概念
这里推荐一篇英文文献《Understanding the Bias-Variance Tradeoff》
http://scott.fortmann-roe.com/docs/BiasVariance.html

方差偏差权衡
横坐标表示从欠拟合状态逐渐发展到过拟合状态的过程。
纵坐标表示误差的值由低到高。
1、首先看最上方的曲线,表示总体的误差值。当模型欠拟合的时候总体误差值是最很大的,当模型的拟合度逐渐提高的时候,总体模型预测的误差值随之减小。但当拟合程度向过拟合发展的时候,虽然训练集上的拟合程度越来越高,但是在测试集上的误差会越来越大。
2、中间的曲线,表示偏差。随着拟合程度的增加,偏差会逐渐减小。
3、最下方的曲线,表示方差。随着拟合程度的增加,方差会逐渐增大。

过拟合-方差
有同学反馈不明白 “ 过拟合的预测会去刻意得迎合异常值,导致预测值的方差Ω(f)会比较大。” 这句话的意思,我补充一下。
根据上面的图,x表示实际值,直线和曲线分别是两条模型。
这里的直线是一个比较优秀的模型,原来在于:
1、对于数据的预测该模型体现了一个明确的增长趋势。
2、虽然有误差但是误差始终保持在直线的上下两侧。
而曲线模型为了拟合每一个点,导致增减的趋势不明确,会对预测造成偏差。

所以最优的模型是当拟合程度处于虚线位置附近时的模型,取的是偏差和方差之间的权衡。

至于下面的公式为何成立,我们后续再解答。

误差 = 过拟合的方差+欠拟合的偏差2
相关文章
|
6月前
|
算法
【MATLAB】数据拟合第12期-基于高斯核回归的拟合算法
【MATLAB】数据拟合第12期-基于高斯核回归的拟合算法
296 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
164 0
|
6月前
|
算法
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标
|
6月前
|
机器学习/深度学习 分布式计算 并行计算
【MATLAB】史上最全的13种数据拟合算法全家桶
【MATLAB】史上最全的13种数据拟合算法全家桶
1148 1
|
6月前
|
机器学习/深度学习 数据采集 算法
|
6月前
|
机器学习/深度学习 人工智能 算法
神经网络算法——损失函数(Loss Function)
神经网络算法——损失函数(Loss Function)
220 0
|
6月前
|
算法
[Halcon&拟合] 边缘拟合算法拓展
[Halcon&拟合] 边缘拟合算法拓展
159 1
|
6月前
|
机器学习/深度学习 分布式计算 并行计算
【MATLAB】数据拟合第11期-基于粒子群迭代的拟合算法
【MATLAB】数据拟合第11期-基于粒子群迭代的拟合算法
178 0
|
6月前
|
算法 计算机视觉
【MATLAB】史上最全的9种数据拟合算法全家桶
【MATLAB】史上最全的9种数据拟合算法全家桶
243 0
|
6月前
|
算法 数据挖掘 C#
C# | 线性回归算法的实现,只需采集少量数据点,即可拟合整个数据集
什么是线性回归呢? 简单来说,线性回归是一种用于建立两个变量之间线性关系的统计方法。在我们的软件开发中,线性回归可以应用于数据分析、预测和优化等领域。 什么情况下会用到线性回归呢? 线性回归可以用于探索数据之间的关系,可以用于预测未来的趋势。通过少量的数据点就能得到一个可以代表整个数据集的模型。换句话说,只需要采集少量的数据点,就可以拟合出整个数据集。
263 0