机器学习对回归模型的评价指标:均方误差、可解释方差和R方值

5 篇文章 0 订阅
3 篇文章 0 订阅

学习过概率与统计的同学们都知道,对于线性回归及其他的回归模型来说,评价连续性可拟合的数据就不能使用离散二分类器的评价指标对回归模型进行评价。因此我们引入了均方误差(mean squared error MSE)、可解释方差(Explained Var score)和R方值(R^2)。

首先我们先看一下这三个概念是如何计算一个评价值(score)的:

均方误差:

又称MSE,是个使用频度很高的评价指标,在概率论和数理统计中的数学定义式就是:

前i个样本属性实际值   y_i 与预测值距离差       \hat y_i 的平方和均值。

MSE= \frac{1}{n} \sum ^n _ {i=1} ( y_i- \hat y_i)^2

MSE衡量的是样本整体与模型预测值偏离程度。

可解释方差:

这部分很少有资料提到可解释方差的公式,根据一些资料的描述,可解释方差是(1- 样本值与预测值之差的方差/样本方差),数学公式描述为:

Evar = 1 - \frac {\sum ^n_{i=1} ((y_i-\hat y) - E{(\vec y_-\hat {y} } ))^2 }{\sum ^n_{i=1} (y_i - \bar y)^2}

E表示均值;

因为是从代码中解读的公式,所以这个公式可能写的有点不太对,望有人指出正确的公式是咋个模样。

看着怪折腾的……

可解释方差指标衡量的是所有预测值和样本之间的差的分散程度与样本本身的分散程度的相近程度。本身是分散程度的对比。最后用1-这个值,最终值越大表示预测和样本值的分散分布程度越相近。

R^2值:

R^2又名决定系数,

公式为

R^2 = 1-\frac {MSE}{Var(Y))}= 1 - \frac {MSE} {\frac {1} {n} \sum ^n_{i=1} (y_i - \bar y))}

这个公式的作为指标的意图就相对明显了。决定系数计算出来越是接近1,预测值越接近真实样本值。

 

 

 

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
机器学习模型的评价指标可以分为分类模型和回归模型两类。 ## 分类模型评价指标 ### 混淆矩阵 混淆矩阵是分类模型评价中最基本的指标,它用于描述分类模型预测结果和真实结果之间的关系。可以用以下代码实现混淆矩阵的可视化: ```python import matplotlib.pyplot as plt import seaborn as sns from sklearn.metrics import confusion_matrix def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, cmap=plt.cm.Blues): cm = confusion_matrix(y_true, y_pred) if normalize: cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] plt.imshow(cm, interpolation='nearest', cmap=cmap) plt.title('Confusion matrix') plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) fmt = '.2f' if normalize else 'd' thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])): plt.text(j, i, format(cm[i, j], fmt), horizontalalignment="center", color="white" if cm[i, j] > thresh else "black") plt.tight_layout() plt.ylabel('True label') plt.xlabel('Predicted label') ``` ### 准确率 准确率是分类模型评价中最常用的指标,用于衡量模型预测正确的样本占总样本数量的比例。可以用以下代码实现准确率的计算和可视化: ```python from sklearn.metrics import accuracy_score def plot_accuracy(y_true, y_pred): acc = accuracy_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('Accuracy: {:.2%}'.format(acc)) sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False) ``` ### 精确率、召回率和 F1 值 精确率是指模型预测为正例的样本中,真正为正例的样本占比;召回率是指真正为正例的样本中,被模型预测为正例的样本占比;F1 值是精确率和召回率的调和平均数。可以用以下代码实现精确率、召回率和 F1 值的计算和可视化: ```python from sklearn.metrics import precision_score, recall_score, f1_score def plot_precision_recall_f1(y_true, y_pred): precision = precision_score(y_true, y_pred) recall = recall_score(y_true, y_pred) f1 = f1_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('Precision: {:.2%}, Recall: {:.2%}, F1 Score: {:.2%}'.format(precision, recall, f1)) sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False) ``` ## 回归模型评价指标 ### 均方误差和均根误差 均方误差回归模型评价中最常用的指标之一,用于衡量模型预测值与真实值之间的差异。均根误差是均方误差的平根。可以用以下代码实现均方误差和均根误差的计算和可视化: ```python from sklearn.metrics import mean_squared_error def plot_mse_rmse(y_true, y_pred): mse = mean_squared_error(y_true, y_pred) rmse = np.sqrt(mse) plt.figure(figsize=(4, 4)) plt.title('MSE: {:.2f}, RMSE: {:.2f}'.format(mse, rmse)) plt.scatter(y_true, y_pred, alpha=0.5) plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--') plt.xlabel('True Values') plt.ylabel('Predictions') ``` ### R2 值 R2 值是回归模型评价中最常用的指标之一,用于衡量模型解释数据方差的能力,取值范围为 0 到 1。可以用以下代码实现 R2 值的计算和可视化: ```python from sklearn.metrics import r2_score def plot_r2(y_true, y_pred): r2 = r2_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('R2 Score: {:.2%}'.format(r2)) plt.scatter(y_true, y_pred, alpha=0.5) plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--') plt.xlabel('True Values') plt.ylabel('Predictions') ``` 以上是一些常用的机器学习模型评价指标及可视化代码,可以根据实际需求进行调整和修改。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值