机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第1张图片

算法

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对于线性可分的训练数据集而言,线性可分分离超平面有无穷多个,但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化。而当训练数据集近似线性可分时,为软间隔最大化。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第2张图片

 机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第3张图片

 

  • 代码分析:

1.初始化数据

①对data数据转化为0-1浮点型 进行归一化处理

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第4张图片

 

②将label值进行二值化

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第5张图片

 

2.对SVM模型进行训练

(1)对SVM相关参数初始化

① Sigma     高斯核中分母的σ
② C         软间隔中的惩罚参数
③ toler     松弛变量

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第6张图片

 

④K:提前计算高斯核得到结果K

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第7张图片

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第8张图片

 

(2)迭代100次,超过迭代次数还未收敛则强制停止

设置了参数变化指标,如果一次迭代后参数没有改变,说明达到了收敛状态,可以停止了。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第9张图片

 

(3)判断下标为i的α是否满足KKT条件

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第10张图片

 

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第11张图片

 

这里需要计算gxi:

可以发现这里的g(xi)需要计算前面的求和式,但是在支持向量机中,a>0的样本点(xi,yi)实例才是支持向量,而非支持向量的ai*yi*K(xj,xi)是为0的。这样可以大大减少计算。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第12张图片

(4)如果不满足KKT条件就通过SMO算法进行优化。

  SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。

  SMO通过外层循环,在训练样本中选取违反KKT 条件最严重的样本点,并将其对应的变量作为第一个变量。第一个变量α的下标i已经确定。这里选择的是遇到的第一个违反KKT 条件的样本点。

  接下来第二步选择变量2,通过内层循环,选择a2,使其对应|E1-E2|的值最大。由于变量2的选择中涉及到|E1 - E2|,因此先计算E1。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第13张图片

  如果E1是正的,选择最小的Ei作为E2,反之选最大的Ei。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第14张图片

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第15张图片

  这挑选E2的时候,进行了一次优化算法。在Ei的初始化中,由于所有α为0,所以一开始是设置Ei初始值为-yi。这里修改为与α一致,初始状态所有Ei为0,在运行过程中再逐步更新。当程序检测到并没有Ei为非0时,将会使用随机函数随机挑选一个,将减少一部分时间消耗。

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第16张图片

依据标签是否一致来生成不同的L和H,如果两者相等,说明该变量无法再优化,直接跳到下一次循环,否则就计算a的新值

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第17张图片

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第18张图片

全部计算结束后,重新遍历一遍α,查找里面的支持向量

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第19张图片

3.进行预测                                                                 

遍历所有支持向量,计算求和式,如果是非支持向量,求和子式必为0,没有必须进行计算

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第20张图片

4.进行测试

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第21张图片

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第22张图片

机器学习四 基于支持向量机SVM模型实现对mnist数据集的分类_第23张图片

 

 

 

可以发现这里的g(xi)需要计算前面的求和式,但是在支持向量机中,a>0的样本点(xi,yi)实例才是支持向量,而非支持向量的ai*yi*K(xj,xi)是为0的。这样可以大大减少计算。

你可能感兴趣的:(机器学习,机器学习)