机器学习实验五,详情请参考《模式分类》第二版第五章课后上机练习5.4节
实验环境:
Matlab 2016a
基本梯度下降法和牛顿法:
我们在寻找能将两类类别分开的权向量时采用的方法是:定义一个准则函数J(a),当a是解向量时,J(a)最小。这样就将问题简化为一个标量函数的极小化问题——通常可以用梯度下降法来解决。梯度下降法的原理非常简单,首先从一个任意选择的权向量a(1)开始,计算其梯度向量,下一个值a(2)由自a(1)向下降最陡的方向移一段距离得到,即沿梯度的负方向。通常a(k+1)由下等式确定:
其中 是正的比例因子,或者说是用于设定学习步长的“学习率”。我们希望这样得到的一个权向量序列:最终收敛到一个使J(a)极小化的解上。具体步骤是初始化权向量a、阈值和,不断迭代更新a,直到<,使得准则函数达到一个极小值,a收敛。
而牛顿法权向量的更新公式为:
其中,H为准则函数的赫森矩阵。因为牛顿法使用了准则函数的二次偏导,因此牛顿算法比梯度下降算法每一步都给出了更好的步长,也就更快收敛。
实验内容:
给定以下两个类别w1、w3数据,应用基本梯度法和牛顿法:
用这两种算法对二维数据给出w1、w3的判别。对梯度下降法取=0.1。画出准则函数-迭代次数的曲线。
实验分析:
实验的关键就是准则函数的选取,首先我们知道当错分点减少时,准则函数的值应该减小,并且准则函数至少是关于权向量二次的,因为牛顿算法要二次求导。最终使用书中的如下函数作为准则函数:
这里的