当前位置: 首页 > news >正文

【机器学习】基础知识:拟合度(Goodness of Fit)

拟合度概念及意义

拟合度(Goodness of Fit)是衡量统计模型对数据解释能力的指标,用于评价模型对观测数据的拟合效果。在回归分析、分类模型或其他预测模型中,拟合度是模型性能的重要衡量标准。


1. 拟合度的作用

拟合度的主要作用包括:

  • 评估模型质量:衡量模型对实际数据的解释程度,帮助判断模型是否合理。
  • 变量筛选:通过拟合度分析,确定哪些变量对模型贡献较大。
  • 模型选择:在多个候选模型中,选择拟合度更高的模型。

2. 拟合度的常用指标

回归分析中的拟合度指标
  1. 决定系数 R^2
    R^2 表示解释变量(自变量)能够解释响应变量(因变量)变异的比例:

    R^2 = 1 - \frac{\text{SSR}}{\text{SST}}
    • SSR:残差平方和,表示模型未能解释的变异。
    • SST:总平方和,表示观测值的总变异。

    R^2 范围为 0 到 1,值越接近 1,模型拟合效果越好。

  2. 调整 R^2
    调整 R^2 引入了模型自由度的惩罚,适用于变量较多的模型:

    \text{Adjusted } R^2 = 1 - \left( \frac{\text{SSR} / (n - k - 1)}{\text{SST} / (n - 1)} \right)

    其中,n 是样本数,k 是自变量数。

  3. 均方误差(MSE)
    衡量模型预测值与真实值之间的平均误差平方:

    \text{MSE} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2

    值越小,模型拟合越好。

  4. 均方根误差(RMSE)
    均方误差的平方根:

    \text{RMSE} = \sqrt{\text{MSE}}
分类模型中的拟合度指标
  1. 准确率(Accuracy)

    Accuracy = 正确分类的样本数 / 总样本数
  2. F1 分数
    F1 分数结合了准确率和召回率,适用于类别不平衡的场景:

    F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
  3. 对数似然(Log-Likelihood)
    用于衡量模型与数据的匹配程度,特别是在广义线性模型中。


3. 拟合度与过拟合

过拟合(Overfitting)是拟合度分析中的一个重要问题。当模型过于复杂时,尽管拟合度指标(如 R^2可能较高,但模型对新数据的泛化能力较差。因此,需通过交叉验证等方法评估模型的真实性能。


4. 提高模型拟合度的方法

  1. 特征工程:选择相关性强的变量,剔除冗余或噪声变量。
  2. 正则化:使用 L1 或 L2 正则化限制模型复杂度,防止过拟合。
  3. 非线性模型:若线性模型拟合度较低,可以尝试使用非线性模型。
  4. 增加样本量:更多的数据可以提高模型的稳定性和泛化能力。

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error# 示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1.1, 2.0, 2.9, 4.1, 5.2])# 线性回归模型
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)# 拟合度指标
r2 = r2_score(y, y_pred)  # 决定系数 R^2
mse = mean_squared_error(y, y_pred)  # 均方误差
rmse = np.sqrt(mse)  # 均方根误差print(f"R^2: {r2:.4f}")
print(f"MSE: {mse:.4f}")
print(f"RMSE: {rmse:.4f}")

输出结果

R^2: 0.9960
MSE: 0.0086
RMSE: 0.0927

6. 总结

拟合度是衡量模型质量的重要标准。不同场景中可选择适合的拟合度指标(如 R^2、MSE 或 F1 分数)进行评估。此外,在提升拟合度的同时需警惕过拟合现象,确保模型具有良好的泛化能力。

http://www.lryc.cn/news/502503.html

相关文章:

  • 使用Jackson库在Java应用程序中将Map对象转换为JSON数组字符串,以及反向操作
  • 深入解析强化学习中的 Generalized Advantage Estimation (GAE)
  • 离开wordpress
  • Python的3D可视化库【vedo】1-4 (visual模块) 体素可视化、光照控制、Actor2D对象
  • 使用html和JavaScript实现一个简易的物业管理系统
  • 什么是纯虚函数?什么是抽象类?纯虚函数和抽象类在面向对象编程中的意义是什么?
  • #Ts篇: Record<string, number> 是 TypeScript 中的一种类型定义,它表示一个键值对集合
  • Exp 智能协同管理系统前端首页框架开发
  • C# 备份文件夹
  • 互联网信息泄露与安全扫描工具汇总
  • 主导极点,传递函数零极点与时域模态
  • 永恒之蓝漏洞利用什么端口
  • 网络安全与防范
  • Navicat 17 功能简介 | SQL 开发
  • 嵌入式系统中的并行编程模型:汇总解析与应用
  • VulkanSamples编译记录
  • 使用FabricJS对大图像应用滤镜(巨坑)
  • 网页502 Bad Gateway nginx1.20.1报错与解决方法
  • Spring基础分析02-BeanFactory与ApplicationContext
  • Rerender A Video 技术浅析(五):对象移除与自动配色
  • Java项目实战II基于微信小程序的小区租拼车管理信息系统 (开发文档+数据库+源码)
  • 【数字花园】数字花园(个人网站、博客)搭建经历汇总教程
  • WebRTC服务质量(03)- RTCP协议
  • STM32F103单片机HAL库串口通信卡死问题解决方法
  • Scala正则表达式
  • 每日一刷——二叉树的构建——12.12
  • Redis配置文件中 supervised指令
  • OpenCV相机标定与3D重建(18)根据基础矩阵(Fundamental Matrix)校正两组匹配点函数correctMatches()的使用
  • python脚本:向kafka数据库中插入测试数据
  • 10. 高效利用Excel导入报警信息