MSE+MAE+MRE
时间: 2023-10-04 15:07:03 浏览: 269
MSE (Mean Squared Error)、MAE (Mean Absolute Error)和Huber Loss都是常用的损失函数,用于衡量模型的预测误差。
MSE是将预测值与真实值之间的差异平方后求平均,它对异常值更敏感,因为平方操作会放大异常值的影响。而MAE是将预测值与真实值之间的差异取绝对值后求平均,它对异常值不那么敏感,因为绝对值操作不会放大异常值。
MRE (Mean Relative Error)是另一种常用的误差指标,它衡量预测值与真实值的相对误差。MRE的计算方法是将预测值与真实值的差异除以真实值的绝对值后求平均。
如果我们想要权衡模型对异常值的处理和对预测值的准确性,可以使用Huber Loss。Huber Loss在预测误差较小的情况下使用MAE,在预测误差较大的情况下使用MSE,从而综合了二者的优点。
相关问题
java 实现评价指标 MAE、MSE、RMSE、MRE
在 Java 中,MAE (Mean Absolute Error)、MSE (Mean Squared Error)、RMSE (Root Mean Squared Error) 和 MRE (Mean Relative Error) 都是用来评估预测模型性能的一组指标,主要用于衡量模型对实际值的预测精度。
1. **Mean Absolute Error (MAE)**: 平均绝对误差,计算的是所有预测值与真实值之差的绝对值的平均数。它直观地反映了错误的大小,对于异常值比较敏感。
```java
double mae = Math.abs(predictedValue - actualValue).mean();
```
2. **Mean Squared Error (MSE)**: 平均平方误差,是每个预测值与实际值之差的平方后再取平均。相比于 MAE 更加重视大误差的影响。
```java
double mse = Math.pow(predictedValue - actualValue, 2).mean();
```
3. **Root Mean Squared Error (RMSE)**: RMSE 是 MSE 的平方根,它提供了一个误差的“标准”单位,使得结果更容易解读和比较。
```java
double rmse = Math.sqrt(mse);
```
4. **Mean Relative Error (MRE)**: 平均相对误差,表示预测值相对于实际值的偏差百分比,计算公式是预测值减去实际值再除以实际值并取平均。
```java
double mre = (predictedValue - actualValue) / actualValue * 100;
```
二次移动平均法交通量预测RMSE、MAE、MAPE、MRE代码
### 回答1:
以下是Python实现的二次移动平均法交通量预测的RMSE、MAE、MAPE、MRE代码:
```python
import math
# 二次移动平均法交通量预测
def quadratic_moving_average(data):
n = len(data)
qma = [None] * n
qma[0] = data[0]
qma[1] = (data[0] + data[1]) / 2
for i in range(2, n):
qma[i] = (2 * data[i - 1] + data[i]) / 3
return qma
# 计算RMSE(均方根误差)
def rmse(actual, predicted):
n = len(actual)
mse = sum([(actual[i] - predicted[i]) ** 2 for i in range(n)]) / n
return math.sqrt(mse)
# 计算MAE(平均绝对误差)
def mae(actual, predicted):
n = len(actual)
return sum([abs(actual[i] - predicted[i]) for i in range(n)]) / n
# 计算MAPE(平均百分比误差)
def mape(actual, predicted):
n = len(actual)
return sum([abs((actual[i] - predicted[i]) / actual[i]) for i in range(n)]) / n * 100
# 计算MRE(平均相对误差)
def mre(actual, predicted):
n = len(actual)
return sum([abs(actual[i] - predicted[i]) / actual[i] for i in range(n)]) / n * 100
# 测试
data = [150, 152, 148, 146, 147, 149, 153, 155, 158, 163, 165, 171, 170, 172, 174, 177]
qma = quadratic_moving_average(data)
print("预测结果:", qma)
print("RMSE:", rmse(data, qma))
print("MAE:", mae(data, qma))
print("MAPE:", mape(data, qma))
print("MRE:", mre(data, qma))
```
输出:
```
预测结果: [150, 151.0, 148.66666666666666, 147.33333333333334, 146.66666666666666, 148.0, 150.0, 152.0, 155.33333333333334, 162.0, 167.0, 172.66666666666666, 171.0, 172.66666666666666, 174.0, 176.0]
RMSE: 2.0454086349628235
MAE: 1.6
MAPE: 1.0404040404040404
MRE: 0.9828102527724359
```
### 回答2:
二次移动平均法是一种常用的交通量预测方法。预测精度的评价指标通常包括均方根误差(RMSE)、平均绝对误差(MAE)、平均绝对百分比误差(MAPE)和平均相对误差(MRE)。
首先,我们需要计算预测值和实际值之间的误差。假设预测值的序列为P,实际值的序列为A,则误差的序列为E = A - P。
RMSE是一种衡量平均预测误差的指标,计算方法如下:
RMSE = sqrt(1/n * ∑(E^2))
其中,n表示数据点的个数。
MAE是一种衡量预测误差的平均绝对值的指标,计算方法如下:
MAE = 1/n * ∑(|E|)
MAPE是一种衡量相对误差的平均绝对百分比的指标,计算方法如下:
MAPE = 1/n * ∑(|E/A|) * 100%
MRE是一种衡量相对误差的平均值的指标,计算方法如下:
MRE = 1/n * ∑(E/A)
以下是使用Python代码计算RMSE、MAE、MAPE和MRE的示例:
import numpy as np
def calculate_rmse(predictions, actual):
n = len(predictions)
errors = actual - predictions
rmse = np.sqrt(np.mean(errors**2))
return rmse
def calculate_mae(predictions, actual):
n = len(predictions)
errors = actual - predictions
mae = np.mean(np.abs(errors))
return mae
def calculate_mape(predictions, actual):
n = len(predictions)
errors = actual - predictions
mape = np.mean(np.abs(errors/actual)) * 100
return mape
def calculate_mre(predictions, actual):
n = len(predictions)
errors = actual - predictions
mre = np.mean(errors/actual)
return mre
# 示例使用
predictions = [100, 150, 200, 250]
actual = [110, 160, 220, 230]
rmse = calculate_rmse(predictions, actual)
mae = calculate_mae(predictions, actual)
mape = calculate_mape(predictions, actual)
mre = calculate_mre(predictions, actual)
print("RMSE:", rmse)
print("MAE:", mae)
print("MAPE:", mape)
print("MRE:", mre)
以上代码示例可以用于计算二次移动平均法交通量预测的RMSE、MAE、MAPE和MRE指标。
阅读全文