目录
[1. 模型误差](#1. 模型误差)
[2. 观测误差(测量误差)](#2. 观测误差(测量误差))
[3. 方法误差 截断误差](#3. 方法误差 截断误差)
[4. 舍入误差(roundin off error)](#4. 舍入误差(roundin off error))
[1. 绝对误差](#1. 绝对误差)
[2. 相对误差](#2. 相对误差)
用数值方法在计算机上求解数学问题,不可避免地会出现误差,得到的一般是问题的近似解,因此,误差分析和误差的估计成为数值计算法研究的一项重要内容。
绪论
一、误差来源
1. 模型误差
模型误差指的是由于模型本身的限制或不完善而导致的误差。模型误差可能源自模型的假设、参数选择、训练数据的不足等因素。降低模型误差的方法包括改进模型结构、增加训练数据量、优化模型参数等。
2. 观测误差(测量误差)
观测误差指在进行实际观测或测量过程中,由于各种因素的影响,观测值与真实值之间存在的差异。观测误差可能由于仪器精度、环境条件、人为因素等引起。为了减小观测误差,可以采取多次观测取平均、提高仪器的精度、控制环境条件等方法来提高测量的准确性。
3. 方法误差 截断误差
方法误差指的是由于使用的方法或算法的局限性而引入的误差。方法误差可能由于近似计算、假设违规、数值稳定性等因素而产生。选择适当的方法和算法,并理解其限制和假设,可以降低方法误差。
截断误差是指在计算过程中对数字进行截断而引入的误差。当对一个具有无限小数位的数进行近似表示时,我们需要截断或舍入该数以适应计算机的有限位数表示。这样的近似处理会引入截断误差。截断误差可能会导致结果与真实值之间的差异。它是由于在计算过程中丢失了原始数据的一部分而产生的。截断误差通常随着使用更少的位数进行表示或计算而增大。
如:为了计算函数值 ,我们用有限 Taylor 展式
近似代替 ,此时的方法误差(又称截断误差)为:
4. 舍入误差(roundin off error)
舍入误差指的是在计算过程中对浮点数进行舍入或截断而引入的误差。由于计算机使用有限的位数来表示数字,对于某些计算,舍入误差可能会积累并影响最终结果的精度。在数值计算中,需要注意舍入误差对计算结果的影响,并采取适当的方法进行误差控制和调整。
在误差允许的范围内......
二、误差分类
1. 绝对误差
绝对误差是指近似值与真实值之间的差的绝对值。它表示了近似值与真实值之间的差异的大小,而不考虑这种差异在整体范围内的比例关系。绝对误差通常用来衡量误差的绝对程度,以确定近似值的准确性。计算绝对误差的公式为:绝对误差 = |近似值 - 真实值|。
其中,表示精确值
2. 相对误差
相对误差是指绝对误差与真实值之间的比值。相对误差考虑了近似值与真实值之间的差异相对于真实值的比例关系,因此更适用于比较不同量级的误差。相对误差通常用来衡量误差相对于真实值的相对程度。计算相对误差的公式为:相对误差 = (绝对误差 / 真实值) × 100%。
三、机器学习中的误差
在机器学习中,误差通常用于评估模型的性能和预测的准确程度。以下是几种常见的机器学习中使用的误差度量指标:
-
平均绝对误差(Mean Absolute Error,MAE):MAE是预测值与真实值之间绝对误差的平均值。它衡量了预测值与真实值之间的平均差异程度,具有较好的鲁棒性,不会受到异常值的影响。
-
均方误差(Mean Squared Error,MSE):MSE是预测值与真实值之间误差的平方的平均值。相比于MAE,MSE对较大的误差给予更高的惩罚,因此对异常值更为敏感。
-
均方根误差(Root Mean Squared Error,RMSE):RMSE是MSE的平方根,它与原始数据的单位一致。RMSE在评估模型性能时更容易解释,因为它与原始数据的量纲一致。
-
R平方(R-squared):R平方是用来衡量模型对观测数据的拟合程度。它表示模型解释的方差占总方差的比例,取值范围在0到1之间。R平方越接近1,表示模型对观测数据的拟合程度越好。
-
对数损失(Log Loss):对数损失通常用于二分类或多分类问题中,衡量模型的预测概率与真实标签之间的差异。对数损失越小,表示模型的预测结果越接近真实情况。
python
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score, log_loss
# 示例数据
y_true = np.array([3, 4, 2, 1, 6])
y_pred = np.array([2.5, 4.3, 1.8, 0.9, 5.8])
y_prob = np.array([0.1, 0.8, 0.3, 0.2, 0.9]) # 用于对数损失的预测概率
# 平均绝对误差(MAE)
mae = mean_absolute_error(y_true, y_pred)
print("MAE:", mae)
# 均方误差(MSE)
mse = mean_squared_error(y_true, y_pred)
print("MSE:", mse)
# 均方根误差(RMSE)
rmse = np.sqrt(mse)
print("RMSE:", rmse)
# R平方(R-squared)
r2 = r2_score(y_true, y_pred)
print("R-squared:", r2)
# 对数损失(Log Loss)
logloss = log_loss(y_true, y_prob)
print("Log Loss:", logloss)