sklearn基础--『回归模型评估』之误差分析

模型评估在统计学和机器学习中具有至关重要,它帮助我们主要目标是量化模型预测新数据的能力。

在这个数据充斥的时代,没有评估的模型就如同盲人摸象,可能带来误导和误判。
模型评估不仅是一种方法,更是一种保障,确保我们在数据海洋中航行时,能够依赖准确的模型,做出明智的决策。

本篇主要介绍模型评估 时,如何利用scikit-learn帮助我们快速进行各种误差的分析。

1. 平均绝对误差

平均绝对误差 (Mean Absolute Error,简称MAE),它用于度量预测值与真实值之间的平均误差大小

它能直观地反映出预测的准确性,MAE越小 ,说明模型的预测能力越好

1.1. 计算公式

平均绝对误差 的计算公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML"> MAE ( y , y ^ ) = 1 n ∑ i = 0 n − 1 ∣ y i − y ^ i ∣ . \text{MAE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n-1} \left| y_i - \hat{y}_i \right|. </math>MAE(y,y^)=n1∑i=0n−1∣yi−y^i∣.

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n是样本数量, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值。

1.2. 使用示例

python 复制代码
from sklearn.metrics import mean_absolute_error
import numpy as np

# 随机生成100个sample
n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_absolute_error(y_true, y_pred)

mean_absolute_error就是scikit-learn中用来计算MAE的函数。

2. 均方误差

均方误差Mean Squared Error,简称MSE),它用于衡量模型的预测值与实际观测值之间的差异。
MSE越小,表示模型的预测值与实际观测值之间的差异较小,即模型具有较高的预测精度。

2.1. 计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> MSE ( y , y ^ ) = 1 n ∑ i = 0 n − 1 ( y i − y ^ i ) 2 . \text{MSE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n - 1} (y_i - \hat{y}_i)^2. </math>MSE(y,y^)=n1∑i=0n−1(yi−y^i)2.

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n是样本数量, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值。

2.2. 使用示例

python 复制代码
from sklearn.metrics import mean_squared_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_squared_error(y_true, y_pred)

mean_squared_error就是scikit-learn中用来计算MSE的函数。

3. 均方对数误差

均方对数误差Mean Squared Log Error,简称MSLE),与均方误差MSE)相比,MSLE在计算误差时先对预测值和真实值取对数。

通过对数转换,MSLE能够减小 较大值和较小值之间的差异 ,使得误差度量更为稳定。
MSLE的值越小,表示预测结果与真实值的差异越小,即模型的拟合程度越好。

3.1. 计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> MSLE ( y , y ^ ) = 1 n ∑ i = 0 n − 1 ( log ⁡ e ( 1 + y i ) − log ⁡ e ( 1 + y ^ i ) ) 2 . \text{MSLE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n - 1} (\log_e (1 + y_i) - \log_e (1 + \hat{y}_i) )^2. </math>MSLE(y,y^)=n1∑i=0n−1(loge(1+yi)−loge(1+y^i))2.

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n是样本数量, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值。

3.2. 使用示例

python 复制代码
from sklearn.metrics import mean_squared_log_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_squared_log_error(y_true, y_pred)

mean_squared_log_error就是scikit-learn中用来计算MSLE的函数。

4. 平均绝对百分比误差

平均绝对百分比误差Mean Absolute Percentage Error,简称MAPE),平均绝对误差MAE)相比,MAPE将误差转化为百分比形式,这使得它在不同尺度的数据上具有更好的可比性。
MAPE越小,表示模型的预测结果与实际结果的差异较小,即模型的预测准确性较高。

4.1. 计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> MAPE ( y , y ^ ) = 1 n ∑ i = 0 n − 1 ∣ y i − y ^ i ∣ max ⁡ ( ϵ , ∣ y i ∣ ) \text{MAPE}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n-1} \frac{{}\left| y_i - \hat{y}_i \right|}{\max(\epsilon, \left| y_i \right|)} </math>MAPE(y,y^)=n1∑i=0n−1max(ϵ,∣yi∣)∣yi−y^i∣

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> n n </math>n是样本数量, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值。
<math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ \epsilon </math>ϵ是一个任意小但严格为正的数,以避免在 <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi为零时出现未定义的结果。

4.2. 使用示例

python 复制代码
from sklearn.metrics import mean_absolute_percentage_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

mean_absolute_percentage_error(y_true, y_pred)

mean_absolute_percentage_error就是scikit-learn中用来计算MAPE的函数。

5. 绝对误差中值

绝对误差中值Median Absolute Error,简称MedAE),它用于衡量预测模型对于数据集的精度。

平均误差 相比,中值对异常值更为稳健,对于数据集中的异常值和离群点,绝对误差中值 具有较强的抗性。
MedAE越小的模型,通常意味着它在大多数数据点上的预测更为准确。

5.1. 计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> MedAE ( y , y ^ ) = median ( ∣ y 1 − y ^ 1 ∣ , ... , ∣ y n − y ^ n ∣ ) . \text{MedAE}(y, \hat{y}) = \text{median}(\mid y_1 - \hat{y}_1 \mid, \ldots, \mid y_n - \hat{y}_n \mid). </math>MedAE(y,y^)=median(∣y1−y^1∣,...,∣yn−y^n∣).

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值, <math xmlns="http://www.w3.org/1998/Math/MathML"> m e d i a n median </math>median表示取中位数。

5.2. 使用示例

python 复制代码
from sklearn.metrics import median_absolute_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

median_absolute_error(y_true, y_pred)

median_absolute_error就是scikit-learn中用来计算MedAE的函数。

6. 最大误差

最大误差Max Error),它用于衡量模型预测值与真实值之间的最大差异,揭示模型在最坏情况下的表现。

如果模型在大多数情况下的预测误差都很小,但最大误差很大,那么这可能意味着模型对于某些特定情况的处理不够好,需要进一步优化。

6.1. 计算公式

<math xmlns="http://www.w3.org/1998/Math/MathML"> Max Error ( y , y ^ ) = max ⁡ ( ∣ y i − y ^ i ∣ ) \text{Max Error}(y, \hat{y}) = \max(| y_i - \hat{y}_i |) </math>Max Error(y,y^)=max(∣yi−y^i∣)

其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi是真实值, <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^是预测值, <math xmlns="http://www.w3.org/1998/Math/MathML"> m a x max </math>max表示取最大值。

6.2. 使用示例

python 复制代码
from sklearn.metrics import max_error
import numpy as np

n = 100
y_true = np.random.randint(1, 100, n)
y_pred = np.random.randint(1, 100, n)

max_error(y_true, y_pred)

max_error就是scikit-learn中用来计算Max Error的函数。

7. 总结

本篇主要介绍了6种常用的误差分析函数,包括:

  • 平均绝对误差
  • 均方误差
  • 均方对数误差
  • 平均绝对百分比误差
  • 绝对误差中值
  • 最大误差

误差的计算方式其实也不算不复杂,不过,掌握scikit-learn中封装好的各种误差计算函数,

还是可以帮助我们在评估回归模型时节约不少时间。

相关推荐
IT古董3 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
机器人虎哥4 小时前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
罗小罗同学6 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤6 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~6 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
不去幼儿园8 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
无脑敲代码,bug漫天飞9 小时前
COR 损失函数
人工智能·机器学习
HPC_fac1305206781610 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
老艾的AI世界18 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK2215118 小时前
机器学习系列----关联分析
人工智能·机器学习