三种机器学习方法和使用CNN训练FashionMNIST的性能比较,三种机器学习方法分别为:随机森林、KNN、朴素贝叶斯。
完整实验代码可在https://github.com/Ryanlzz/fashion-mnist-train查看
一、数据准备
1.数据来源
根据Fashion Mnist论文给出的网址下载数据集:
https://github.com/zalandoresearch/fashion-mnist
2.数据背景
FashionMNIST 是一个替代 MNIST 手写数字集的图像数据集。 它是由 Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自 10 种类别的共 7 万个不同商品的正面图片。FashionMNIST 的大小、格式和训练集 / 测试集划分与原始的 MNIST 完全一致。60000/10000 的训练测试数据划分,28x28 的灰度图片。
经典的MNIST数据集包含了大量的手写数字。十几年来,来自机器学习、机器视觉、人工智能、深度学习领域的研究员们把这个数据集作为衡量算法的基准之一。我们会在很多的会议,期刊的论文中发现这个数据集的身影。实际上,MNIST数据集已经成为算法作者的必测的数据集之一。有人曾调侃道:“如果一个算法在MNIST不work, 那么它就根本没法用;而如果它在MNIST上work, 它在其他数据上也可能不work!”
制作这个数据集的目的就是取代MNIST,作为机器学习算法良好的“检测器”,用以评估各种机器学习算法。为什么不用MNIST了呢? 因为MNIST就现在的机器学习算法来说,是比较好分的,很多机器学习算法轻轻松松可以达到99%,因此无法区分出各类机器学习算法的优劣。
为了和MNIST兼容,Fashion-MNIST 与MNIST的格式,类别,数据量,train和test的划分,完全一致。
3.数据的样本和特征
其中训练集包含60000个样例,测试集包含10000个样例,分为10类,其中的样本都来自日常穿着的衣裤鞋包,每个都是28×28的灰度图像,其中总共有10类标签,每张图像都有各自的标签。
二、被测试的机器方法介绍
1.随机森林
1)基本原理
随机森林就是用随机的方式建立一个森林,在森林里有很多决策树组成,并且每一棵决策树之间是没有关联的。当有一个新样本的时候,我们让森林的每一棵决策树分别进行判断,看看这个样本属于哪一类,然后用投票的方式,哪一类被选择的多,作为最终的分类结果。在回归问题中,随机森林输出所有决策树输出的平均值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YZiW9O7b-1607663807871)(https://s3.ax1x.com/2020/12/11/rkTQuF.png)]
2)主要参数设置及其意义
n_estimators:森林(决策)树的数目。n_estimators太小,容易过拟合,n_estimators太大,又容易欠拟合,一般选择一个适中的数值。(默认值为10)。
max_depth:树的最大深度。数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。 (默认值 None)
min_samples_split:分割内部节点所需的最少样本数量。值越大,决策树越简单,越不容易过拟合。(默认值 2)
min_samples_leaf:叶子节点上包含的样本最小值。值越大,叶子节点越容易被被剪枝,决策树越简单,越不容易过拟合。(默认值 1)
max_features:寻求最佳分割时的考虑的特征数量,即特征数达到多大时进行分割。值越大,模型学习能学习到的信息越多,越容易过拟合。(默认值 auto)
2.KNN
1)基本原理
KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。
2)算法描述
1 计算测试数据与各个训练数据之间的距离;
2 按照距离的递增关系进行排序;
3 选取距离最小的K个点;
4 确定前K个点所在类别的出现频率;
5 返回前K个点中出现频率最高的类别作为测试数据的预测分类。
3)距离计算:欧氏距离
对于距离的度量,有很多的距离度量方式,但是最常用的是欧式距离,即对于两个n维向量x和y,两者的欧式距离定义为
d ( p , q ) = d ( q , p ) = ( q 1 − p 1 ) 2 + ( q 2 − p 2 ) 2 + ⋯ + ( q n − p n ) 2 =