

KNN、SVM、MLP、K-means分类实验
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650429675&%3Bidx=5&%3Bsn=b4b37bf8414e3647ce08e8a78c215894
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

KNN、SVM、MLP、K-means分类实验
来源:投稿 作者:摩卡
编辑:学姐
实验使用了两个数据集,一个是经典的鸢尾花数据集(iris)另一个是树叶数据集(leaf)
鸢尾花数据集(iris):
鸢尾花数据集发布于1988年7月1日,该数据集共有150条数据,分为3个类别,为setosa、versicolor、virginica 。
每个类别有50条数据,每条数据有4个特征,分别是sepal_length(范围在4.3-7.9)、sepal_width(范围在2.0-4.4)、petal_length(范围在1.0-6.9)、petal_width(范围在0.1-2.5)。
该数据集没有缺失值,但类别标签是字符串类型,需要进行重新编码(编码时从0开始)
树叶数据集(leaf):
树叶数据集发布于2014年2月24日,该数据集共有340条数据,有30个类别(有的是在同一类别下但是有学名有不同),每条数据有15个特征,没有缺失值,类别标签是数字编码无需进行转换。该数据集还提供RGB格式,可以用于计算机视觉任务。
NO.2实验工具介绍硬件:本实验所使用的CPU型号为inter@i5-10210U 1.6GHz-4.2GHz
软件:所使用的软件为Anaconda + Pycharm
框架:所使用的框架为pytorch、使用机器学习库sklearn、pandas、绘图工具matplotlib
NO.3实验步骤简介01模型简介
选取了KNN、SVM、K-means、MLP这几个模型进行实验。
K近邻法(k-nearest neighbor, k-NN)KNN是一个基本的分类方法,由Cover和Hart在1968年提出。
K近邻算法简单直观:
给定一个训练集T={(x1, y1), (x2, y2), (x3, y3), …… ,(xn, yn)},对于新输入的实例xn+1,在训练集中找到与该实例最相近的k个实例,这k个实例的多数属于某个类,就把该输入实例分到这个类。k-近邻算法可以分为两个部分,一部分是根据训练集构造kd树进行超平面的划分,一部分是根据新输入的实例在kd树中进行搜索来确定新输入实例的类别。
当超平面构造完成,k值选取完毕之后,新实例的标签也就确定了。在进行距离测量时可以选择L1、L2范数,确定新实例所属类别时可以使用多数表决的方法。
支持向量机(support vector machines, SVM)支持向量机(support vectoe machines)由Cortes和Vapnik提出,最初只是线性支持向量机,适用于可线性分类的数据。后来Boser、Guyon、Vapink又引入了核(kernel)的技巧,提出了非线性支持向量机。
图3 样本点到平面距离
非线性支持向量机(non- linear support vectoe machines)顾名思义该向量机的决策边界(decision boundary)可以是非线性的。非线性支持向量机在线性向量机的基础上修改了,将修改为。
是一个特征向量,由每个样本与标记点(landmarks)的相似程度构成。
如图中红色的点为标记点(landmarks),绿色点为当前特征点x,蓝色点为其他特征点x_others。是由x与各个标记点的相似程度构成,当使用高斯核时相似程度的度量函数为
聚类算法针对给定的样本,依据它们特征的相似度或者距离,将其归并到若干“类”或“簇”的分析问题。聚类属于无监督学习,只根据样本的相似度或距离将其进行归类。K-means聚类算法属于中心聚类方法,通过迭代,将样本分摊到k个类中,使得样本与其所属的中心最近。
k-means聚类算法分过程为,先随机产生k个聚类中心(centroid),在训练集中按照样本点距离各中心的距离着色(着色过程也就是分类过程)再根据各类别点计算出均值,作为新聚类中心,如此循环直到聚类结束。
根据上述算法描述可知,K-means聚类的优化对象是各个样本点到聚类中心的距离,
其中为每个样本点被分配到的类,为k个聚类中心,为每个样本点被分配到的聚类中心。
多层感知机(multilayer perceptron,MLP)多层感知机也叫做深度前馈网络(deep feedforward network)、前馈神经网络(feedforward neural network)。神经网络中最基本的单元是神经元(neuron)模型,每个神经元与其他神经元相连接,神经元收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输出。
假设有如下图所示结构的网络,该网络从左至右分别为input层、hidden1层、hidden2层、output层。
图13 神经网络
约定表示第j层上第i个神经元的激活项,表示第k层的第i个激活项的第j个输入,为激活函数。根据上述前向传播方法可知、、、、为:
图14 梯度下降局部最优、全局最优
02鸢尾花数据集处理2.1数据预处理鸢尾花数据集:
使用seaborn库绘制数据集的图像进行分析,根据类别进行分类。得到一下图片。根据下面图像的观察,以花萼长度(sepal_length)与花萼宽度(sepal_width)进行分类时没有很好的将数据分开,所以进行数据清洗的时候将这两个类别清洗掉,以此来提高效率。
图15 鸢尾花特征可视化1
进行数据清洗完毕后,进行可视化,得到如下结果。
图16 鸢尾花特征可视化2
因为鸢尾花数据集的标签类别项是字符串类型,需要进行编码,使用LabelEncoder()将其编码为0(setosa)、1(versicolor)、2(virginica)。
使用StandardScaler()进行标准化(使用StandardScaler()进行标准化的数学原理为将数据按其属性减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1)。
2.2划分数据集将数据集划分为训练集(train_dataset)和测试集(test_dataset)两部分,训练集120条数据,测试集有30条数据。
03树叶数据集处理3.1数据预处理
树叶(leaf)数据集共有14个特征和一个类别属性,计算属性与类别的相关系数,并进行热图的绘制。由下图可知,与类别成正相关的属性由高到底排序为B、M、I、K、C、J、L、N、D、A、E,也可以发现属性H、G、F与属性成负相关。
图17 树叶属性热图1
进行数据清洗,除去成负相关的属性H、G、F,得到的热图如下。
图18 树叶属性热图2
对树叶的类别进行编码使用LabelEncoder() 类别编号从0-29。使用StandardScaler()进行标准化。
3.2划分数据据将数据集划分为训练集(train_dataset)和测试集(test_dataset)两部分,训练集有210条数据,测试集有130条数据。
04鸢尾花数据集分类结果展示4.1 KNN使用KNN模型进行分类,测量邻居间距离使用minkowski距离,邻居个数k=5。预测准确率为97%。
图19 KNN分类边界
图20 KNN评价指标
4.2 SVM使用SVM进行分类,使用的核函数为高斯核(Gaussian kernel ),超参数C=1.0。预测准确率为97%。
图21 SVM分类边界
图22 SVM评价指标
4.3 K-means使用K-means进行分类,簇的个数n_clusters=3,最大迭代次数max_iter=100。预测准确率为97%
图23 K-means分类边界
图24 K-means评价指标
4.4 MLP使用MLP进行分类,构造全连接神经网络,该网络有1个输入层,1个输出层,3个隐藏层。输入层有2个神经元(在数据预处理前input神经元为4个),隐藏层神经元个数为16个,输出层神经元个数为3个(因为有3个类别,所以输出神经元个数为3)。
隐藏层激活函数为ReLu函数,使用交叉熵损失函数,优化方法使用梯度下降法(SGD),学习率lr=0.01,momentum=0.9,最大周期max_epoch=50。训练准确率最高为100%,预测准确率最高为97%。
图25 MLP训练、测试损失曲线
图26 MLP评价指标
05树叶数据集分类结果5.1 KNN
使用KNN模型进行分类,由于树叶数据集相比于鸢尾花数据集更复杂,参数的选择也更困难,所以使用网格化搜索最优参数。测量邻居间距离使p=1曼哈顿距离,邻居个数k=4,权重weight=“distance”(权重和距离成反比),预测准确率为65%。
图27 KNN评价指标
5.2 SVM使用SVM进行分类,同样使用网格化搜索最优参数。使用的核函数为线性核(Linear kernel ),超参数C=1.0、gamma=0.0001。预测准确率为77%。
图28 SVM评价指标
5.3 MLP使用MLP进行分类,构造全连接神经网络,该网络有1个输入层,1个输出层,3个隐藏层。
输入层有14个神经元(在数据预处理后虽然变成11个但是效果不好),隐藏层神经元个数为23个,输出层神经元个数为30个(因为有30个类别,所以输出神经元个数为30)。
隐藏层激活函数为ReLu函数,还在每层上添加了随即失活,失活率p=0.1,使用交叉熵损失函数,优化方法使用梯度下降法(SGD),学习率lr=0.01,momentum=0.9,最大周期max_epoch=2500。训练准确率最高为93.3%,预测准确率最高为82.3%。
图29 MLP训练、测试损失曲线
图30 MLP评价指标
06实验结果比较6.1鸢尾花数据集由下图可以看出,MLP、K-means、SVM、KNN四种方法准确率(acc)均为97%。MLP、K-means、SVM、KNN四种方法的平均精度(Avg_precision)均为97%。
MLP、K-means、SVM、KNN四种方法的平均召回率(Avg_recall):SVM、KNN、MLP皆为97%, K-means为95%。
MLP、K-means、SVM、KNN四种方法的平均召回率(Avg_f1-score) :SVM、KNN、MLP皆为97%, K-means为96%。
图31 指标比较1
6.2树叶数据集由下图可以看出,MLP准确率最高为82%,SVM其次为77%,最后是KNN为65%。MLP平均准确率(Avg_precision)率最高为85%,SVM其次为79%,最后是KNN为69%。
MLP平均准确率(Avg_recall)率最高为82%,SVM其次为77%,最后是KNN为65%。MLP平均准确率(Avg_f1-score)率最高为82%,SVM其次为76%,最后是KNN为66%。
图32 指标比较2
07实验结果分析7.1鸢尾花数据集通过上面4个模型的accuracy、Avg_precision、Avg_reacll、Avg_f1-score 4个指标的对比可以发现,4个模型对鸢尾花数据集的各项指标都很高。在特征工程部分,将鸢尾花的4个属性进行清洗,只保留了2个重要的属性,使得噪声减少,提高了识别准确率等各项指标。
表1 鸢尾花数据集
通过上面3个模型的accuracy、Avg_precision、Avg_reacll、Avg_f1-score 4个指标的对比,可以发现,相比于鸢尾花数据集,模型的各项指标都有大幅度的下降。这是由于树叶数据集比鸢尾花数据集更加复杂:类别多(30类)、特征多(14个)。并且在MLP、SVM、KNN三个模型中,MLP表现最好,识别率为82%,其余三项指标也都在82%左右。
表2 树叶数据集
选择了两个数据集进行实验,先在特征较少,数据量较小的鸢尾花数据集上进行实验,所用4个模型均取得较好结果。注意一点,K-means属于无监督学习方法,所以在进行评估的时候将K-means模型预测出来的标签不一定与数据集的标签编码对应。多进行几次聚类,绘制出图像,根据图像选择。
在进行树叶数据集的分类时,因为数据集的特征数较多,想到使用PCA进行数据压缩,将14个特征压缩到10和特征,但是效果并不理想。也采用了计算相关系数的方法,效果也不好。
所以只在原数据的基础上进行了标准化。在MLP、SVM、KNN三个模型中,显然MLP的实验效果更好。在更开始训练MLP时出现过拟合现象,在每一个隐藏层前都添加了随即失活(p=0.1)来避免过拟合的出现。
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏
Recommend
-
50
-
47
KNN介绍 k近邻法(k-nearest neighbors)是由Cover和Hart于1968年提出的,它是懒惰学习(lazy learning)的著名代表。 它的工作机制比较简单: k 距离衡量的标准有很多,常见的有: 距离、切比雪...
-
33
作者|Rashida Nasrin Sucky 编译|VK 来源|Towards Data Science KNN分类器是一种非常流行的监督机器学习技术。本文将用一个例子来解释KNN分类器 什么是监督学习? 以下是百度百科:...
-
17
Machine Learning, OpinionKNN (K-Nearest Neighbors) is Dead!Long live ANNs for their whopping...
-
11
【MLP】BP神经网络实现 2017年10月21日 Author: Guofei 文章归类: 2-1-有监督学习 ,文章编号: 224 版权声明:本文作者是郭飞。转载随意,但需要...
-
7
漫谈序列编码:MLP、CNN、RNN 在深度学习中,很多时候要处理的是表示问题,例如在 NLP 中,把变长的句子进行结构化表示,如定长的向量或矩阵,这个过程我们称为句子的表示。有趣的事情是,我们都似乎热衷于模拟人脑,从多层感知机、CNN到RNN,这些都是...
-
4
什么是 MVP? MVP(Minimum Viable Product)可以理解为「最小可行产品」,就是一个产品只包含了最精简的,用户最需要的功能。就像古人需要知道大概的时间,戳一根棍在地上,看着棍的影子心里就大概有个数了,这根棍就是 MVP。 MVP 的好处是什么...
-
5
OSPF的详细讲解、分类,还有实验讲解 推荐 原创 Jzy的博客 2022-04-22 11:40:37...
-
3
对在NLP领域对比MLP、CNN和RNN的一点思考 08 July 2017 深度学习这个领域仍在快速发展,各种细节处理策略也都在进化,更有很多细节还需要探索。个人认为,现在就对CNN、RNN和MLP三者应用...
-
7
Don’t build MVP… Try MLP!The concept of a Minimum Viable Product (MVP) has been a popular approach in the startup world for years, and it still remains an effective way to get a product out to market quickly...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK