问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

统计学、机器学习名词解析——TSS、ESS、RSS、拟合优度、调整后拟合优度

创作时间:
作者:
@小白创作中心

统计学、机器学习名词解析——TSS、ESS、RSS、拟合优度、调整后拟合优度

引用
CSDN
1.
https://m.blog.csdn.net/juewang159632/article/details/140682334

在统计学和机器学习领域,如何判断真实值与拟合值的贴合程度是一个核心问题。本文将介绍几个关键的评估指标:TSS(总平方和)、ESS(解释平方和)、RSS(残差平方和)、拟合优度(R-squared)以及调整后拟合优度(Adjusted R-squared),并通过Python代码示例帮助读者深入理解这些概念。

数据准备

首先,我们随机生成一组数据并进行拟合(这里仅作解释变量使用):

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 51)
y = x + np.round(np.random.uniform(-5, 5, 50), 2)

plt.plot(x, x, color='r')
plt.plot(x, y, color='b')
plt.show()

核心概念

TSS、ESS、RSS

  • 总体平方和(TSS,Total Sum of Squares):衡量数据的总变异程度。
  • 解释平方和(ESS,Explained Sum of Squares):衡量模型对数据变异的解释能力。
  • 残差平方和(RSS,Residual Sum of Squares):衡量模型预测误差的总量。

拟合优度(R-squared)

拟合优度(R-squared)也称为决定系数,表示模型解释的数据方差比例。其值越接近1,模型对数据的解释能力越强,拟合效果越好。

调整后拟合优度(Adjusted R-squared)

调整后拟合优度考虑了模型自由度对拟合优度的影响,可以在模型增加自变量但增加的拟合优度并不显著时进行惩罚。

Python代码实现

下面是计算这些指标的Python代码实现:

def compute_R_square(data_real, data_pred):
    # 计算真实值平均值
    y_mean = sum(data_real) / len(data_real)
    
    # 循环求解TTS
    TSS = 0
    for temp in data_real:
        TSS += (temp - y_mean) ** 2
    
    # 循环求解ESS
    ESS = 0
    for temp in data_pred:
        ESS += (temp - y_mean) ** 2
    
    # 循环求解RSS
    temp_real_pred = data_real - data_pred
    RSS = sum(x ** 2 for x in temp_real_pred)
    
    # 计算拟合优度R方
    R_square = ESS / TSS
    return TSS, ESS, RSS, R_square

# 将真实值带入得到最终结果
y_TSS, y_ESS, y_RSS, y_R_square = compute_R_square(y, x)
print(y_TSS, y_ESS, y_RSS, y_R_square)

运行结果:

11065.547048 10416.845352000002 397.7123999999999 0.9413764459013126

调整后拟合优度

调整后拟合优度的计算公式如下:

def compute_Adjust_R_square(n, k, R_square):
    Adjust_R_square = 1 - (1 - R_square) * (n - 1) / (n - k - 1)
    return Adjust_R_square

运行结果:

0.94015512185759

总结

  • R-squared衡量模型解释因变量变化的能力,但不考虑模型复杂度。
  • Adjusted R-squared在计算时考虑了模型的复杂度,通过减去自由度的惩罚项来避免因模型复杂度增加而导致的不合理的优化。

因此,一般来说,当比较不同模型时,调整后拟合优度更适合用作评估标准,因为它可以更准确地反映模型的预测能力,避免了过度拟合的可能性。

由于本文使用的数据是随机生成的,每次运行代码得到的数值可能会有所不同,这是正常现象。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号