多项式回归的matlab实现

一次函数的线性回归

首先我们回顾一下当回归函数为一次函数的情况

存在训练样本矩阵 X ,该矩阵大小为m*n ,其中m为样本数量,n为特征数量

此时回归方程为

                                                                             h_{\theta }\left ( x \right )=\theta _{0}+\theta_{1}x_{1}+..+\theta_{n}x_{n}=X\theta

其中\theta为系数向量

此时代价函数为

                                                                            J(\theta)=\frac{1}{2}(X\theta -Y)^{T}(X\theta -Y)

当代价函数取得最小值时,\theta为最优解

J(\theta)进行求导得到

                                                                               \frac{\partial }{\partial \theta }J(\theta)=X^{T}(X\theta-Y)

批量梯度下降法

                                                                                 \theta = \theta-\alpha\frac{\partial }{\partial \theta }J(\theta)

其中\alpha为步长系数,\alpha\frac{\partial }{\partial \theta }J(\theta)为步长,不断迭代上式,当步长变化小于某个值时,认为得到代价函数的局部最小值。

数学上,梯度方向是函数值下降最为剧烈的方向。那么,沿着 J(θ) 的梯度方向走,我们就能接近其最小值,或者极小值,从而接近更高的预测精度。

多项式的线性回归

此时回归方程为

                                               h_{\theta }\left ( x \right )=\theta _{0}+\theta_{1}x_{1}+..+\theta_{n}x_{n} +\theta_{11}x_{11}^{2}+\theta_{12}x_{12}^{2}+..+\theta_{1n}x_{1n}^{2}+...

代价函数

                                                                        J(\theta)=\frac{1}{2}\sum (h_{\theta}(x_{i})-y_{i})^2

此时我们可以通过遍历矩阵来计算该代价函数的导数,但是会感觉到编程复杂

那么可以像一次函数一样去用矩阵表示代价函数吗?

是可以的,我们只需要将x^n视作一个整体就可以了

在一次回归中,样本矩阵 X为           [1,X]         其中 1 表示该列都为1

在多项式回归中,我们可以将 X 扩展为                 [1,X,X^2,X^3,...,X^n]

此时我们回到了一次回归的矩阵运算中

具体程序可参考

https://download.csdn.net/download/qq_32478489/10651951

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值