Skip to content

Latest commit

 

History

History
106 lines (71 loc) · 6.6 KB

README.md

File metadata and controls

106 lines (71 loc) · 6.6 KB

国科大模式识别与机器学习实践作业

数据集

方法

线性SVM

方法介绍

支持向量机(SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,或者求解其对偶问题。

img

SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如上图所示,$w \cdot x+b=0$即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。

实验结果

对于每一个参数设置,做了三次实验,得到的模型准确率分别是ACC_1,ACC_2,ACC_3,平均值是ACC_M。

正则参数是正则项前面的系数。

正则参数 迭代次数 ACC_1 ACC_2 ACC_3 ACC_m
10 1000 86.37% 87.57% 87.15% 87.03%
10 2000 86.9% 88.45% 86.4% 87.25%
50 1000 87.61% 86.17% 87.77% 87.18%
50 2000 86.97% 88.02% 88.1% 87.7%
100 1000 85.67% 86.99% 86.58% 86.41%
100 2000 86.94% 86.29% 86.84% 86.69%

结果分析

从结果可以看出,迭代次数一定时,一定范围内,随着正则参数的增大,模型预测的准确率会上升,但是超过一定范围,模型性能会下降,可能是正则参数过大导致模型欠拟合了。

当正则参数一定时,随着迭代次数的增大,模型的性能会逐渐变好。

决策树

方法介绍

决策树是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。具体来说,它是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树。

构建决策树的基本步骤为:

  • 开始将所有记录看作一个节点
  • 遍历每个变量的每一种分割方式,找到最好的分割点
  • 分割成两个节点N1和N2
  • 对N1和N2分别继续执行2-3步,直到每个节点不能再分。

实验结果

对于每一个参数设置,做了三次实验,得到的模型准确率分别是ACC_1,ACC_2,ACC_3,平均值是ACC_M。

分割类型 损失函数 ACC_1 ACC_2 ACC_3 ACC_M
best gini 87.61% 87.87% 88.03% 87.84%
best entropy 88.54% 88.40% 88.38% 88.44%
best log_loss 88.62% 88.34% 88.42% 88.46%
random gini 86.61% 87.09% 87.01% 86.90%
random entropy 87.55% 87.82% 88.20% 87.86%
random log_loss 87.87% 87.79% 88.09% 87.92%

结果分析

从结果可以看出,当对节点分割时,选取最好的进行分割比随机分割的性能要好,因为可以获得的信息增益最好,而随机选取没有保障。

使用entropy和log_loss的性能比gini要好,而gini代表基尼系数,entropy代表信息增益,因此选择跟信息增益有关的损失更能提高决策树的性能。

神经元网络,使用简单的卷积神经网络

方法介绍

卷积神经网络(CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。

卷积神经网络的基本结构由以下几个部分组成:输入层(input layer),卷积层(convolution layer),池化层(pooling layer),激活函数层和全连接层(full-connection layer)。

  • 卷积层:对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作
  • 池化层:池化操作将输入矩阵某一位置相邻区域的总体统计特征作为该位置的输出,主要有平均池化(Average Pooling)、最大池化(Max Pooling)等。简单来说池化就是在该区域上指定一个值来代表整个区域。
  • 激活函数:激活函数(非线性激活函数,如果激活函数使用线性函数的话,那么它的输出还是一个线性函数。)但使用非线性激活函数可以得到非线性的输出值。
  • 全连接层:在全连接层中,每个神经元都与前一层中的所有神经元相连,因此它的输入是一个向量,输出也是一个向量。它对提取的特征进行非线性组合以得到输出。全连接层本身不具有特征提取能力,而是使得目标特征图失去空间拓扑结构,被展开为向量。

实验结果

迭代次数为epoch=10,使用带动量的随机梯度下降(SGD)进行优化,损失函数是交叉熵损失。

使用的卷积神经网络含有两层(含有卷积层,池化层,ReLU激活函数和批归一化层)和一个全连接层,输出的特征维度为10,因为MINIST只有10类。

批处理大小 学习率 ACC
64 0.1 99.03%
64 0.01 98.95%
64 0.001 98.09%
128 0.1 99.16%
128 0.01 98.95%
128 0.001 97.35%
128 0.02 99.02%
128 0.002 98.12%

结果分析

从结果可以看出,当批处理大小相同时,学习率为0.1时性能最好,之后随着学习率的减小模型的性能逐渐降低。

当学习率一致时,大多数情况下,批处理大小增加模型的性能也会更好,但有些情况不是,如学习率等于0.001时,此时需要将学习率扩大2倍(跟批处理大小增加的倍数一致),模型的性能才会比之前更好。

参考资料

基于决策树模型和支持向量机模型的手写数字识别_手写数字识别决策树-CSDN博客

ResNet18实现——MNIST手写数字识别(突破0.995)_mnist resnet-CSDN博客