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

学习笔记(28):随机噪声的原理、作用及代码实现详解

学习笔记(28):随机噪声的原理、作用及代码实现详解

一、什么是随机噪声?为什么需要添加?

在机器学习中,随机噪声是指数据中无法用特征解释的随机波动,通常符合某种概率分布(如正态分布)。在房价模拟中添加噪声的核心原因如下:

1. 模拟真实世界的不确定性
  • 真实房价除了受面积、房龄影响,还受装修情况、学区、交通、政策等未被建模的特征影响,这些因素的综合效应可抽象为 “噪声”。
  • 示例:两套面积和房龄相同的房子,房价可能因装修风格、楼层等差异而不同,这些差异就是噪声的体现。
2. 防止模型过拟合
  • 若数据完全符合确定性公式(如 y = 5000x1 + 1000x2),模型可能会学习到 “虚假规律”(如将噪声当作必然关系)。
  • 添加噪声后,模型需要学习更鲁棒的模式,避免过度依赖训练数据中的特定样本。
二、代码中的噪声实现:np.random.randn(n_samples) * 10000

y = 5000 * X[:, 0] + 1000 * X[:, 1] + np.random.randn(n_samples) * 10000

1. 噪声的数学表达
  • np.random.randn(n_samples):生成服从标准正态分布(均值 0,标准差 1)的随机数数组。
  • * 10000:将噪声的标准差放大 10000 倍,使噪声范围与房价量级匹配(如房价在几十万到几百万,噪声范围约为 ±30000)。
2. 噪声的统计特性
  • 均值np.random.randn(...) 的均值为 0,因此噪声不会对房价的整体趋势产生偏移。
  • 标准差:10000,意味着约 68% 的噪声值落在 [-10000, 10000] 区间,约 95% 落在 [-20000, 20000] 区间。
3. 噪声对房价的影响示例

假设某房子面积 100 平方米,房龄 10 年:

  • 无噪声时房价:5000×100 + 1000×10 = 510000 元。
  • 有噪声时房价:510000 + 噪声,其中噪声可能是 +15000(房价 525000)或 -8000(房价 502000)等随机值。
三、噪声分布的选择:为什么用正态分布?

常见的噪声分布包括:

  1. 正态分布(高斯噪声):最常用,适用于多种自然现象(中心极限定理)。
  2. 均匀分布:噪声在固定区间内等概率出现(如 np.random.rand(...) * 20000 - 10000)。
  3. 拉普拉斯分布:噪声尾部更厚,极端值出现概率更高。

在房价场景中选择正态分布的原因:

  • 符合直觉:大多数未建模因素对房价的影响是微小的、随机的,正负影响概率相等,符合正态分布特征。
  • 数学性质好:正态分布的均值和方差独立,便于理论分析和模型推导。
四、噪声强度(标准差)的影响
  • 噪声强度小(如 *1000)
    房价数据点紧密围绕理论值分布,模型容易拟合,但可能过度依赖训练数据的细节(过拟合风险)。
  • 噪声强度大(如 *100000)
    房价数据点分散,模型难以学习到真实规律(欠拟合风险),但更接近真实场景的复杂性。
五、实战:可视化噪声对数据分布的影响
import numpy as np
import matplotlib.pyplot as plt# 生成基础数据(面积100,房龄10)
n_samples = 1000
area = 100 * np.ones(n_samples)
age = 10 * np.ones(n_samples)
base_price = 5000 * area + 1000 * age# 生成不同强度的噪声
noise_low = np.random.randn(n_samples) * 1000    # 低噪声
noise_medium = np.random.randn(n_samples) * 10000  # 中等噪声(代码中的设置)
noise_high = np.random.randn(n_samples) * 100000  # 高噪声# 计算带噪声的房价
price_low = base_price + noise_low
price_medium = base_price + noise_medium
price_high = base_price + noise_high# 可视化
plt.figure(figsize=(12, 4))plt.subplot(1, 3, 1)
plt.scatter(area, price_low, s=10, alpha=0.5)
plt.axhline(y=base_price[0], color='r', linestyle='--', label='理论价格')
plt.title('低噪声(σ=1000)')
plt.ylim(450000, 570000)plt.subplot(1, 3, 2)
plt.scatter(area, price_medium, s=10, alpha=0.5)
plt.axhline(y=base_price[0], color='r', linestyle='--')
plt.title('中等噪声(σ=10000)')
plt.ylim(450000, 570000)plt.subplot(1, 3, 3)
plt.scatter(area, price_high, s=10, alpha=0.5)
plt.axhline(y=base_price[0], color='r', linestyle='--')
plt.title('高噪声(σ=100000)')
plt.ylim(0, 1500000)plt.tight_layout()
plt.show()

可视化结果

  • 低噪声:数据点紧密围绕理论价格(510000),几乎成一条横线。
  • 中等噪声:数据点分散但仍可看出价格趋势,符合真实场景。
  • 高噪声:数据点极度分散,理论价格的指导意义被噪声淹没。
六、拓展:真实数据中的噪声处理

在实际机器学习项目中,噪声处理步骤包括:

  1. 数据清洗:识别并删除异常值(如房价为负数,可能是数据录入错误,而非噪声)。
  2. 特征工程:将部分噪声转化为可解释特征(如添加 “学区评分”“交通便利性” 等特征,减少未建模因素)。
  3. 模型选择:噪声强的场景可使用集成模型(如随机森林),通过多棵树的平均降低噪声影响。
总结:噪声的本质与价值

随机噪声并非 “无用的干扰”,而是真实世界复杂性的数学抽象。在房价预测中,它代表了:

  • 未被纳入模型的特征(如装修、学区);
  • 测量误差(如面积统计偏差);
  • 市场的随机波动(如政策突然调整)。

合理设置噪声强度,既能让模拟数据更贴近现实,又能帮助模型学习到真正的规律 —— 这正是机器学习从 “拟合数据” 到 “理解本质” 的关键一步。

http://www.dtcms.com/a/264676.html

相关文章:

  • CC - Link IE转EtherCAT:石油石化软启动器的“最佳搭子”
  • 电商项目实例:基于Python京东商品API接口数据采集
  • 跨越传统界限:ChatGPT+ENVI/Python/GEE集成实战,覆盖无人机遥感、深度学习、洪水监测、矿物识别填图、土壤含水量评估等
  • 【Web前端】优化轮播图展示(源代码)
  • MDK(Keil MDK)工具链
  • cmake find_package
  • C++ 创建动态库及两种方法调用动态库
  • DINO 浅析
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • HarmonyOS应用开发高级认证知识点梳理 (四)状态管理V2应用级状态
  • AutoGen-AgentChat-1-整体了解
  • NestJS 系列教程(一):认识 NestJS 与项目初始化
  • RabbitMQ 高级特性之持久性
  • OpenCV仿射变换详解
  • 【飞算JavaAI】智能开发助手赋能Java领域,飞算JavaAI全方位解析
  • 红海云签约东莞科创金融集团,科创金融行业人力资源数字化
  • 论文阅读笔记——VGGT: Visual Geometry Grounded Transformer
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ButtonRippleEffect(按钮涟漪效果)
  • 基于[coze][dify]搭建一个智能体工作流,使用第三方插件抓取热门视频数据,自动存入在线表格
  • Node.js-http模块
  • mac Maven配置报错The JAVA_HOME environment variable is not defined correctly的解决方法
  • 21、企业行政办公(OA)数字化转型:系统如何重塑企业高效运营新范式
  • Android Native 之 inputflinger进程分析
  • 硬件选型与组网规划S7-300以太网模块适配性与网络架构搭建
  • 学习笔记(27):线性回归基础与实战:从原理到应用的简易入门
  • 利器:NPM和YARN及其他
  • 楚存科技SD NAND贴片式T卡—高性能存储解决方案、赋能AI智能硬件
  • 《Jaccard距离》算法:集合差异性度量的核心工具
  • 第三章 计算机网络体系结构
  • 【前端】基础 - HTML基础标签和样式设置