文号
885228
阅读
21852
回复
2
收藏
3
机器学习回归问题 - 高维多项式拟合
2020/08/24
IP:山东
摘要:本文简单介绍了如何利用 Python 语言及第三方库(numpy, sko)来完成梯度下降法与粒子群算法的高阶非线性函数拟合这一基本的机器学习问题。
关键词:机器学习

引言


通过高维多项式,可以拟合任意维度超平面上分布的数据,精度随多项式阶次升高而升高。

如果指导数据分布的具体形式,可以使用自定义的函数进行拟合,通常会有更好的效果。

有一组数据分布如图


不难看出这是一个马鞍面,所以我们以二元二次的拟合函数来进行演示。

原理介绍

首先写出拟合函数的表达形式

$$fpredict=F(x,y)=c00+c10x+c01y+c20x2+c11xy+c02y2.$$

$$f_{predict} = F(x,y)=c_{00}+c_{10}x+c_{01}y+c_{20}x^2+c_{11}xy+c_{02}y^2.$$

$$ f_{predict} = F(x,y) =c_{00}+c_{10}x+c_{01}y+c_{20}x^2+c_{11}xy+c_{02}y^2 . $$

不难看出上面的式子一共有 6 个未知参数。一般来说,对于mmm维nnn次的多项式函数,最多含有$CnmnC_{mn}^nCmnn$个参数。

为了方便描述拟合函数与原数值值间的差异,我们使用均方差函数作为损失函数,损失函数越小,说明拟合函数越准确。

$$loss=1k∑ki=1(fi−F(xi,yi))2loss = \frac{1}{k} \sum_{i=1}^{k}(f_{i}-F(x_i,y_i))^2$$

$$ loss = \frac{1}{k} \sum_{i=1}^{k}(f_{i}-F(x_i,y_i))^2 $$

因为$c_{ab}$属于$f=F(x,y)$内的参数,所以:

$$ loss=L(c_{00},c_{10},c_{01},c_{20},c_{11},c_{02}) $$

至此, 多项式回归问题 转化为了 求损失函数的极小值问题。

可以使用梯度下降法或粒子群算法等一系列最优化求极值的方法进行求解。具体的原理可以看其他博主写的文章。


[ 修改于6年2个月前 - 2020/09/08 23:13:03 ]
6年3个月前IP:山东
885229
1楼

稍等我需要研究一下新版科创怎么发帖

引用
评论
6年2个月前IP:四川
885859
2楼

我给过滤了一下格式,不知道对不对。

不能从word之类东西复制黏贴,文字要纯文字(记事本过滤),公式要latex编码。或者直接全文用LaTex写也可以,都支持的。上面帖子烂了是因为里面带有某个软件的特殊格式代码。

引用
评论
1
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的