多元函数梯度下降 java_简单多元线性回归(梯度下降算法与矩阵法)

多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做出预测。

对应的模型如下:

ce6f850e6a5158e2a0abbee902612cad.png

n: 特征数量。

一般选取残差平方和最小化作为损失函数,对应为:

7d0e2938c794f240a039ea96bdde84c7.png

M:训练样本数量。

通过最小化代价损失函数,来求得值,一般优化的方法有两种,第一是梯度下降算法(Gradient Descent),第二种是矩阵法(The normal equations)。

梯度下降算法

给一个初始值,然后逐步的迭代改变的值,是代价损失函数逐次变小,使每次都往梯度下降的方向改变:

a0bd36609cf1c94b3b00f32a497f8cca.png表示下降速度。

为了求偏导数,当只有一个样本时,即

a06168e36aaf4d601088f227d8641e39.png

019a4bda2d01623bde6b1265fd53e5dd.png

fa166eb813db72a0382ee85f8d6be463.png

即:

23d8efc58eb2bcae7adb243c602d15c6.png

当有多个训练样本时,下降梯度算法即为:

c658ea9d606aea92147925ee9caccfdd.png

由于每次迭代都需要计算所有样本的残差并加和,因此此方法也叫做批下降梯度法(batch

gradient descent),当有大规模数据时,此方法不太适合,可采取它得一个变种,即每次更新权重时,不是计算所有的样本,而是选取其中一个样本进行计算梯度,这个方法叫做随机下降梯度法(stochastic gradient descent):

7fece1ebfb5f79c47a5a2b8d6d8c2b8d.png

随机下降梯度法与下降梯度法对比可能收敛更快,但是可能找不到最优点而在最优点附近徘徊。

矩阵求解法

由于梯度下降算法需要多次迭代,并且需要指定下降速率,如果下降速度过快则可能错过最优点,如果过慢则需要迭代多次,因此还可选用矩阵法求解。

首先,需要定义一些用到的线性代数知识:

对于一个函数

3766fd284b44187bae6ecc397f48907c.png,表示一个输入mxn的矩阵,输入为一个实数,即输入x为矩阵,则对此函数求导数为:

a224f8248a7cd2a2d287e41cda8447da.png即对矩阵中每个元素求导,结果也为一个m*n的矩阵。

另外,定义矩阵的迹trace,为矩阵主对角线元素之和:

97458810405806f315899a8f570114e4.png如果A为实数a,则 tr a=a。

以下是关于矩阵迹的一些性质:

411a67d06a2b48fc193b876818e4db04.png

fb91fb0ba2aa70da9fd483b6e7bd254b.png

f6169d6c7982dcf913b7a092377a8d06.png

200bfd37274806372220ec8a793d944b.png

对于多元线性回归,将训练数据的特征作为一个矩阵:

f2ba31683a4d5e6a784e7d87cc477121.png

同时将其对应的y值也作为一个矩阵:

09f57ae8be7115f896fa83ff3c344413.png

因此,

268720a69d0cc2c1bed98d44ab4cb5a7.png

1859bb6d9e8a6afe751f9068c8756d60.png

a6db651bd5caaac17fff6a738e471a17.png

3ecc1edc8ccb4b66a1ff96fa1d39a526.png求导数,且:

8ef85b468c04a52dc6f0f46683f316d3.png

则:

fd1e3bf57dd7ca58ab0b69228ee0f62d.png

令上式为0,则

af95c8482a7232584f3f87d793f43558.png

6037a76ecbf0b521358f12a8c93454d8.png

以上即为矩阵法的推导,其中涉及到线性代数的知识没有证明,只要将给定的公式带入求导即可得出此结论。

矩阵法与下降梯度法对比好处是不需要多次迭代,一次计算即可得出精确结果,但当数据量过大时,即设计矩阵X过大时,对矩阵的乘法即求逆有很大计算复杂度,因此此方法适用于小规模数据。另外,用矩阵法时不需要对输入特征数据中心化。

总结

以上就是简单多元线性回归,及其对应的下降梯度算法与矩阵算法,虽然简单,但是其他一些复杂算法的基础。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值