2021.9.10
梯度下降法是一种常用的线性回归算法,通过梯度的含义:函数减小速度最快的方向,设置一定的步长经过迭代迭代后可以抵达其区域最小值,对于一个凸函数可以抵达其全局最小值。我们期望通过线性的拟合函数使我们所关注的代价函数达到最小,使我们的训练集与模型拟合的最好。
首先,我们来讨论一个最简单的情况:只有两个特征量的梯度下降法
例如房价与其面积的关系,假设我们选定了代价函数为J(a1,a2);此时代价函数为二元函数,a1与a2为我们所选择的线性规划模型的两个参数,我们的迭代目的就是调整这两个参数直到收敛为止。梯度计算非常简单,等于代价函数对每个参数求偏导数。这样,我们便得到了一个迭代的模型,选择让参数向代价函数减小最快的方向进行一定步长的移动,直至收敛。
再复杂一些,考虑多个参量的情况,迭代公式没有改变。当出现非线性规划时,我们可以通过变量代换的方式把非线性项直接转化为一个线性项。
需要注意的几点:1.注意选择合适的线性或多项式函数 2.数据的缩放有利于快速收敛
3.均值为0的处理
简单的例子:
close all;
clc;clear;
X=[1.0 2.0 3.0 4.0;
1.0 2.3 3.2 4.2;
1.0 2.4 3.6 4.7];
Y=[5;6;7];
alpha=0.0001;
theta=[1;1;1;1];
theta_new=[0;0;0;0];
m=100000;
C=zeros(m,1);
for k=1:m