MATLAB Smoothing Spline 拟合

article/2025/8/19 3:12:49

参考

The Elements of Statistical Learning (chapter 5.4)
MATLAB - Smoothing Splines
MATLAB - fit

1. 基础

Smoothing Spline 可以用于离散数据的函数拟合。考虑下面的问题:在所有存在二阶连续导数的函数中寻找拟合函数 f ( x ) f(x) f(x),可以使下面式子的值最小, R S S RSS RSS可以理解为惩罚系数。
R S S ( f , λ ) = ∑ i = 1 N { y i − f ( x i ) } 2 + λ ∫ { f ′ ′ ( t ) } d t RSS(f,\lambda)=\sum_{i=1}^{N}\{y_i-f(x_i)\}^2+\lambda \int\{f^{''}(t)\}dt RSS(f,λ)=i=1N{yif(xi)}2+λ{f(t)}dt
式中 λ \lambda λ是一个常数,称为平滑系数(smoothing parameter)。式子中的前一部分用来衡量拟合曲线与原数据的近似程度,后半部分称为曲率惩罚。 λ \lambda λ的选取原则可以参考下面两种极限情况。

  • λ = 0 \lambda=0 λ=0 f f f可以是任意函数。
  • λ = ∞ \lambda=∞ λ=: 简单的最小二乘直线拟合,因为此时任意非零二阶导数产生的惩罚系数都是都是 ∞ ∞ 而不能被接受,要使RSS最小, f ( x ) = 0 f(x)=0 f(x)=0

这里我们可以思考二阶导数的含义,即函数在某一点斜率的变化率,二阶导数越大,函数曲线的走向就越曲折,因此当 λ = 0 \lambda=0 λ=0,拟合函数 f ( x ) f(x) f(x)可以无限弯曲,经过所有样本点,使误差的平方和为0,从而使RSS最小。而当 λ = ∞ \lambda=∞ λ=,拟合函数 f ( x ) f(x) f(x)无限平滑,以至于成为一条直线。我们总能在 λ ∈ [ 0 , ∞ ) \lambda\in[0, \infty) λ[0,)中找到符合要求的拟合函数 f ( x ) f(x) f(x)

2. MATLAB 应用

MATLAB中所使用的Smoothing Splines代价函数与上面的定义非常类似。
p ∑ i w i ( y i − s ( x i ) ) 2 + ( 1 − p ) ∫ ( d 2 x d x 2 ) 2 d x p\sum_{i}w_i(y_i-s(x_i))^2+(1-p)\int(\frac{d^2x}{dx^2})^2dx piwi(yis(xi))2+(1p)(dx2d2x)2dx
其中权重 w i w_i wi如果没有定义,默认都是1。
p p p的定义域是0到1,即 p ∈ [ 0 , 1 ] p\in[0,1] p[0,1] p p p的取值越小,拟合结果越平滑,而当 p p p的取值越大,拟合结果就越倾向于经过所有的点。具体原因已经在上文中解释,不再赘述。

2.1 拟合

p=0.01

x = [0.3; 0.4; 0.5; 0.6; 0.7; 0.8; 0.9; 1.0];
y = [0; 143; 298; 482; 762; 1290; 2880; 4016];f = fit(x, y, 'smoothingspline', 'SmoothingParam', 0.01);
plot(f, x, y);

在这里插入图片描述


p=1

x = [0.3; 0.4; 0.5; 0.6; 0.7; 0.8; 0.9; 1.0];
y = [0; 143; 298; 482; 762; 1290; 2880; 4016];f = fit(x, y, 'smoothingspline', 'SmoothingParam', 0.01);
plot(f, x, y);

在这里插入图片描述

2.2 函数调用

对拟合生成的函数 f ,跟正常函数一样输入参数即可。

x = [0.3; 0.4; 0.5; 0.6; 0.7; 0.8; 0.9; 1.0];
y = [0; 143; 298; 482; 762; 1290; 2880; 4016];f = fit(x, y, 'smoothingspline', 'SmoothingParam', 1);
f(0.6)
ans =482

函数返回结果与原数据一致(取决于拟合的程度)。


http://chatgpt.dhexx.cn/article/3NbyK8ia.shtml

相关文章

Label Smoothing分析

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 作者丨王峰知乎 来源丨https://zhuanlan.zhihu.com/p/302843504 编辑丨极市平台 转自 | 极市平台 导读 Label Smoothing在图像识别中能稳定涨点,但在人脸的…

label smoothing

label smoothing 背景:当我们将交叉熵损失函数用于分类任务的时候,我们期望真实的标签为1,而其他虚假的标签为0。换句话来说,我们认为原始数据的标注是准确无误的。但是,真实情况并不是这样,在某些领域,或者使用一些数据增强的方法时,都会存…

标签平滑(Label Smoothing)详解

一、什么是label smoothing? 标签平滑(Label smoothing),像L1、L2和dropout一样,是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善…

标签平滑Label Smoothing

Lable Smoothing 是分类问题中错误标注的一种解决方法。 对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量) one-hot带来的问题:(对于独热的简单解释:https://blog.csd…

模型优化之Label Smoothing

1. 引言 Label Smoothing 又被称之为标签平滑,常常被用在分类网络中来作为防止过拟合的一种手段,整体方案简单易用,在小数据集上可以取得非常好的效果。 Label Smoothing 做为一种简单的训练trick,可以通过很少的代价&#xff08…

Smoothing

文章目录 返回主目录Add-one SmoothingAdd-K SmoothingInterpolationGood-Turning Smoothing 返回主目录 这是一个系列的文章,点击返回综合目录页 Add-one Smoothing P A d d − 1 ( W i ∣ W i − 1 ) C ( W i − 1 , W i ) 1 C ( W i ) V P_{Add-1}(W_i|W_{i-…

分类任务中常用的Label smoothing

目录 1.Label smoothing的原理 2.pytorh中如何使用Label smoothing 3.适用场景 1.Label smoothing的原理 交叉熵损失(softmax cross Entropy)中,常用公式: yi: 表示样本i的label,正类为1,负类为0; pi:…

平滑(smoothing)

1 问题的提出 由于在现实生活中,我们的观察尺度有限,我们的样本(输入)很可能没有办法包含所有可能的情况,那么我们怎么去处理先前看不见的事件呢? 举个例子,莎士比亚使用了30000个双连词(bigra…

【简单理解】自然语言处理-平滑方法(Smoothing)

【简单理解】自然语言处理-平滑方法(Smoothing) 简单介绍平滑策略 平滑策略的引入,主要使为了解决语言模型计算过程中出现的零概率问题。零概率问题又会对语言模型中N-gram模型的Perplexity评估带来困难。 零概率问题,就是在计算实例的概率时&#xf…

二十二、动网格Smoothing Spring方法及实例

1 概念介绍 最近一直忙着其他的事情,好久都没有更新,让各位家人们久等了。 今天我们接着聊一聊动网格问题,我们在文章二十一中介绍了动网格的Layering方法,但是Layering方法的局限性很高,只能对四边形网格或六面体网格…

numpy安装

1.以管理员的形式打开cmd 2.安装numpy插件 pip install numpy 3.安装成功后,输入pip list 命令查看是否安装成功 pip list 3.创建 #使用array创建一维数组 list01 [1,2,3,4] np01 np.array(list01) print(np01) print(type(np01)) #使用array创建二维数组 …

Matplotlib安装

安装matplotlib 使用python中pip命令安装 使用python中pip命令安装 第一步:使用winR输入cmd命令打开命令窗口,找到python安装目录下的Scripts目录,使用python -m pip install matplotlib命令 如果出现以下错误或警告,则需按照指示…

node安装

1、进入node官网,下载长期支持版,安装 2、输入node -v,能查询到版本号即为安装成功 3、为方便管理,修改默认的缓存和模块存放路径(C:\Users\Administrator\AppData\Roaming\npm),在nodede 安装文…

如何安装仿宋GB2312字体

步骤: 一、下载仿宋_GB2312.zip压缩包并解压缩; 百度网盘:https://pan.baidu.com/s/1L7yYKhoDmUw1RpNXVS5KDQ 提取码:eclz 阿里云盘:https://www.aliyundrive.com/s/ih3kDDidcGa 二、双击打开字体文件,…

安装Matplotlib

文章目录 一、pip安装二、conda安装1、anaconda navigator安装2、condan命令安装 一、pip安装 运行如下的命令即可 pip install matplotlib二、conda安装 Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。conda是一个开源的…

cnpm安装

1.将node安装到D:\Program Files\nodejs目录。 2.设置npm全局安装路径与缓存路径 npm config set prefix "D:\Program Files\nodejs\node_global" npm config set cache "D:\Program Files\nodejs\node_cache" 3.安装cnpm npm install -g cnpm --regis…

torch安装

第n次安装了,每次都得结合很多篇才能安装成功,这次直接自己写一个。 一、安装anaconda 这个自己搜吧,挺简单的。 二、安装pytorch 进入anaconda prompt 创建一个虚拟环境(就不用再安装python了,创建之后直接就是用…

pytorch安装

(一)安装Anaconda 1、详细步骤这里不多说。anaconda安装时会自带安装相应的python版本。 安装完成后,可以运行cmd,使用conda --version查看anaconda的版本;用conda list查看安装的包,这里面也包含了python…

halcon21.11安装教程详解

文章目录 1.软件下载2.安装过程 halcon21.11安装教程详解 1.软件下载 a 官网:https://www.mvtec.com/cn b 百度网盘下载 链接:https://pan.baidu.com/s/1-Bdz1l54PQWxbDBkSlILlA 提取码:a5yg 2.安装过程 解压之后,双击som.exe…

安装TensorFlow

文章目录 1.准备工作2.安装TensorFlow3.激活tensorflow 1.准备工作 在安装TensorFlow之前得先安装Anaconda如果还没有进行安装,可以看我主页安装Anaconda教程 2.安装TensorFlow 我们打开Anaconda Prompt 输入python -m pip install -U pip,按回车等待…